fieldtest follow-up: G1 (DESIGN.md NaN-print Unspecified) + F1 roadmap entry

This commit is contained in:
2026-05-10 16:59:18 +02:00
parent 2052f4dfcc
commit 1ce2ff42dc
2 changed files with 16 additions and 0 deletions
+7
View File
@@ -2058,6 +2058,13 @@ no `f32` variant. The runtime / codegen contract:
pattern is conformant; `0.0 / 0.0` may produce
`0x7ff8000000000000` on one target and a different qNaN on
another.
- The textual rendering of NaN by `io/print_float`. The libc
`printf("%g", nan)` glue used by the runtime is permitted to
emit `nan` / `-nan` / `NaN` etc. depending on libc version and
the NaN's sign bit; AILang does not normalise this, since the
prose / surface-print paths render NaN as the explicit `"NaN"`
spelling and `io/print_float` is for human-readable output, not
round-trip.
These are the Rust / Swift / standard-LLVM defaults — not
research-grade reproducibility guarantees. The stronger guarantee
+9
View File
@@ -91,6 +91,15 @@ work progresses.
- [ ] **\[todo\]** 21'h iteration — final 21' carry-over (latency
methodology pass). Numbering kept for continuity with the 21' arc.
- [ ] **\[todo\]** `io/print_float` always-emit-`.0` — surface
printer always emits `.` or `e/E` so re-lex routes to Float;
the runtime printer (`printf("%g\n", v)`) doesn't, so `2.0`
prints as `2` (Int-shaped). Asymmetric. Either switch the
runtime path to a `.0`-fallback printer (matching surface) or
document the `%g` contract in DESIGN.md §"Float semantics" so
the LLM-author knows `io/print_float`'s output is for-humans
not round-trip.
- context: `docs/specs/2026-05-10-fieldtest-floats.md` finding F1.
- [ ] **\[todo\]** Rustdoc warning sweep — `cargo doc --no-deps`
reports 16 pre-existing warnings (15 in `ailang-check`, 1 in
`ailang-core`: private-item links from public doc, unresolved