Skip to content

The read spine demands unconditionally: the tournament is over and the demand won - #76

Merged
gafferongames merged 1 commit into
mainfrom
ship-read-spine-demand
Aug 16, 2026
Merged

The read spine demands unconditionally: the tournament is over and the demand won#76
gafferongames merged 1 commit into
mainfrom
ship-read-spine-demand

Conversation

@gafferongames

Copy link
Copy Markdown
Contributor

What

SERIALIZE_READ_SPINE_DEMAND (landed default-OFF in #74) ships: the read spine — BitReader::ReadBits/ReadAlign and ReadStream's six per-field methods, the exact mirror of the demanded write set — is now spelled SERIALIZE_ALWAYS_INLINE unconditionally. The switch macro, its #if plumbing, and its docs are deleted; the rationale comment now states the measured verdict plainly. The compressed-float and string bodies stay undemanded, deliberately — their cost is the work, not the call.

Why

The lifecycle ruling: #ifdef features are tournaments, not settlements — the fastest features win and get turned on, the losers get removed. This one won.

Measured (Apple clang 21, -O3, schema bench, Air-on-power quiet windows, armed alongside the schema emitter's matching read demand):

row tournament-air off → armed
batch read +68%
rigidbody_at_rest read +244%
rigidbody_moving read +232%
inputpacket read +187%
ship_shallow read +113%
testdata read +109%
regressions zero (both passes)

The confirmation-air pass (r2, window 0.0%, controls clean) reconfirmed the sweep. Ledgers: schema bench/results/tournament-air/ (on main) and schema branch confirmation-air.

Verification

  • Release suite: PASS (ctest, ALL TESTS PASS)
  • Debug suite: PASS (asserts live)
  • Both CI C++03 legs (with and without __SIZEOF_INT128__): ALL TESTS PASS
  • With the switch gone there is only one mode left to test — the both-modes matrix collapses by construction.

🤖 Generated with Claude Code

…e demand won

SERIALIZE_READ_SPINE_DEMAND landed default-off in #74 on remark evidence
alone; the tournament measured it. Armed alongside the schema emitter's
matching read demand (Apple clang 21, -O3, schema bench, tournament-air
era) the read rows swept with zero regressions — batch read +68%,
rigidbody_at_rest read +244%, rigidbody_moving read +232%, inputpacket
read +187%, testdata read +109% — and the confirmation-air pass (r2,
window 0.0%, controls clean) reconfirmed the sweep. Per the feature
lifecycle ruling, the fastest features win and get turned on: the read
spine — BitReader::ReadBits/ReadAlign and ReadStream's six per-field
methods, the exact mirror of the demanded write set — is now spelled
SERIALIZE_ALWAYS_INLINE unconditionally, the switch macro and its #if
plumbing are deleted, and the rationale comment states the measured
verdict plainly. The compressed-float and string bodies stay undemanded,
deliberately: their cost is the work, not the call.

Tests pass Release, Debug, and both CI C++03 legs; with no switch left
there is only one mode to test.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@gafferongames
gafferongames merged commit 119f98f into main Aug 16, 2026
15 checks passed
@gafferongames
gafferongames deleted the ship-read-spine-demand branch August 16, 2026 14:09
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant