2026-09-03 - (/loop) A masked register, and the width where a shim shows itself
CLAIMED 76 -> 77 OUTSTANDING 68 -> 67
differential 235 -> 247 cases
tests 1996
The raw MXCSR was claimable after all
It sat outstanding because it mixes two things: 0x9fe0
is the four configuration fields plus bit 5, the sticky precision flag
the console's own startup arithmetic had already set. Orbistoun installs
0x9fc0 and deliberately does not reproduce that bit (D486),
so the numbers differ.
The split is published, so the whole value is claimable against it:
0x9fe0 & !0x3f == 0x9fc0 == GUEST_MXCSR
Bits 0-5 are the six exception flags - sticky state a program accumulates - and every other bit is configuration. That is Intel's definition of the register, not a partition invented to make two numbers meet. D508.
Two assertions, and the second is not decoration.
raw & !STATUS == live also passes if orbistoun set a
configuration bit the console clears, because masking hides which side a
difference is on. So the test also pins
raw & STATUS == 0x20 - the precision flag is the only
bit the console carries and orbistoun does not. Watched failing by
moving GUEST_MXCSR to 0x9f80, a configuration
bit rather than a status one, which is the break a single masked
assertion is weakest against.
strtof,
and a wire that would have compared the wrong function
235 -> 247 cases. strtof is the same
shape as strtod at single precision and shares its replay
path. Worth its own cases rather than assumed to follow the double:
an implementation that parses in double and narrows is not the
same function - two roundings, and a value near a float halfway
lands on the wrong side. 16777217 is the case that shows
it, and orbistoun answers 0x4b800000 like glibc. So do the
subnormal (1e-40, ERANGE), the overflow
(1e39 to +inf) and the underflow.
Sharing the path had a trap in it: run_strtod began
float_implementation_named("strtod") with the name
hard-coded. Every strtof case would have been run against
orbistoun's strtod and compared to glibc's
strtof - and 1.5 and 42 would
have agreed, so it would have looked fine and failed only where the
widths differ. Taken from the case instead.
Watched failing on the double-rounding case, which is the one that would have caught the wire too.
State
cargo test --workspace green - 119 suites, 1996
tests, 0 failures. Differential 247 cases, all
agreeing. clippy --tests clean, fmt clean, identity scan
clean on both.
Nothing committed. The day holds worklogs 292-357 and D466-D508.
Next: strtok_r (needs a
saveptr through the tokenise shape),
sprintf/vsnprintf, and the 13 imports that
name data rather than a function.