summaryrefslogtreecommitdiff
path: root/docs
diff options
context:
space:
mode:
authorCliff Click <cliffc@acm.org>2026-10-07 12:37:06 -0700
committerCliff Click <cliffc@acm.org>2026-10-07 12:37:06 -0700
commit514b3147bf08817d17aacc492be255621209ec8b (patch)
treed0bc5ba23705d7dae5f0dee3cab15c9beab70917 /docs
parent5f51534493763d4aab2f2fc34767de953a08e6a3 (diff)
downloadSimple-514b3147bf08817d17aacc492be255621209ec8b.tar.gz
Simple-514b3147bf08817d17aacc492be255621209ec8b.zip
RoundF32 actually rounds
Diffstat (limited to 'docs')
-rw-r--r--docs/chapter-backports.md26
1 files changed, 20 insertions, 6 deletions
diff --git a/docs/chapter-backports.md b/docs/chapter-backports.md
index e909e573..765cad82 100644
--- a/docs/chapter-backports.md
+++ b/docs/chapter-backports.md
@@ -473,12 +473,6 @@ lines beyond the original extraction.
Cover constant folding, evaluation, and machine lowering on all three targets;
update the Chapter 14 explanation and add boundary-case regressions.
-- **Existing Chapter 18 floating-array assertion.** The unchanged
- `TypeStruct.makeAry` assertion accepts integers and nullable references but
- excludes TypeFloat; `return new flt[1];` fails under `-ea`. The Chapter 18
- memory probe uses floating struct fields for initialization coverage instead.
- Investigate separately; this port does not change the array type lattice.
-
- **Chapter 24 Load BOTTOM-on-error backport, unwound/deferred (2026-09-28).**
Cliff requested starting with 24 and analyzing failures before proceeding.
Literal global BOTTOM memory/pointer inputs already propagate BOTTOM. The
@@ -670,6 +664,26 @@ The top-level runner accepts explicit chapter lists, e.g.
## Validation record
+- **Floating arrays in Chapter 18 (2026-10-07).** Added TypeFloat to the
+ `TypeStruct.makeAry` assertion, matching Chapter 19 onward; earlier array
+ chapters already accept floating elements. The original `return new flt[1];`
+ reproduction passes with assertions enabled. One regression covers flt/f64/f32
+ zero initialization, flt/f64 looped loads and stores, and constant f32 rounding.
+ It fails at the original assertion before the correction. The complete
+ Chapter 18 suite passes (340 tests plus its fuzzer wrapper); no other compiler
+ snapshot needed this assertion change. Nonconstant scalar and array narrowing
+ now passes type checking with the RoundF32 correction below. Eval2 does not
+ execute RoundF32 yet, so runtime coverage uses constant f32 stores. Logs:
+ `build/float-arrays-18-before.log`, `build/float-arrays-18-after.log`.
+
+- **Nonconstant f32 narrowing (2026-10-07).** RoundF32Node now returns F32
+ for an F64 input in Chapters 18-25, and the equivalent B32 for BOT in
+ Chapters 14-17b. Constant rounding and other input types are unchanged.
+ Chapter 18's floating-array regression also checks nonconstant scalar and
+ array assignments. Complete Make suites pass in every affected chapter,
+ including Chapter 25's native tests; no expected graph or allocation results
+ changed. Logs: `build/round-f32-<chapter>.log`.
+
- **Shared Phi inputs and deterministic inlining (2026-10-07).** Chapters
20-25 split a self-conflicting Phi's inputs when another Phi shares them;
splitting only the entry and result could leave two loop Phis joined through