A third review upheld six findings.
- std's f64 parse stops adding exponent digits once the exponent reaches
0x10000, so a literal whose exponent offsets about 655,000 zeros was judged
wrong both ways: exactly 1 refused, 10^309 accepted. The Rust reader now
decides the range rule on the digits, as the referee does: the significant
digits and the decimal exponent, with saturating exponent arithmetic, against
the 309 digits of 2^1024 − 2^970. The limit is one constant, RANGE_LIMIT, and
a test derives it in decimal from 2^1024 and 2^970 and checks it against
std's parse where that parse is exact.
- The referee passed a zero-padded exponent of over 4300 digits to int(),
which Python refuses; it now converts only the significant exponent digits.
- quantum-sim §8, the CHANGELOG and SPEC §5 now list both directions of the
range change: numbers at or above the limit that earlier builds let through
are refused, numbers below it that some builds refused are accepted. §2 says
the rule is decided on the digits, at any length.
- The corpus README and the wasip2 job comment were stale.
The corpus holds both long literals and the padded exponent: an accept file
(exactly 1 and exactly 10, written long) and a reject file (10^309).
Co-Authored-By: Claude Opus 5.5 <[email protected]>