Files
AILang/bench/orchestrator-stats/2026-05-12-iter-hs.1.json
T
Brummel c56498aca7 iter hs.1: static-Str layout migration — packed-struct globals + sentinel rc-header + len
First iter of the heap-Str ABI milestone. Pure codegen refactor; every existing program produces byte-identical stdout.

Static-Str LLVM globals migrate from `[N x i8] c"…\00"` to `<{ i64, i64, [N x i8] }> <{ i64 -1, i64 N-1, [N x i8] c"…\00" }>`, carrying the UINT64_MAX sentinel rc-header (slot exploited in hs.2 via runtime short-circuit) and an explicit byte length. Two parallel intern paths (`intern_string` for raw format scaffolding, new `intern_str_literal` for language Str values) keep format strings untouched in `[N x i8]` shape.

IR-Str pointers now uniformly land on the len-field (offset +8 from rc-header, -8 from bytes). Four codegen sites that hand a Str pointer to a NUL-terminated-bytes C-API consumer now emit a +8 GEP first: `@puts` (io/print_str), `@ail_str_eq` (eq__Str intercept), `@ail_str_compare` (compare__Str intercept), and `@strcmp` (lower_eq Str arm — the 4th site was not in the plan; surfaced by Task-5 e2e regression and fixed inline).

6 new IR-shape pinning tests; `hello.ll` snapshot regenerated; cross_lang.py + compile_check.py + full `cargo test --workspace` green.
2026-05-12 16:48:24 +02:00

20 lines
740 B
JSON

{
"iter_id": "hs.1",
"date": "2026-05-12",
"mode": "standard",
"outcome": "DONE",
"tasks_total": 5,
"tasks_completed": 5,
"reloops_per_task": {
"1": 0,
"2": 0,
"3": 0,
"4": 0,
"5": 1
},
"review_loops_spec": 0,
"review_loops_quality": 0,
"blocked_reason": null,
"notes": "Task 5 incurred one extra inline implementer-phase loop after the e2e regression suite surfaced a fourth codegen site (lower_eq Str arm, line 2520-2529 calling @strcmp directly) the plan did not enumerate. Fix shape was identical to Tasks 2-4 (+8 GEP on operands), added one pinning test, and discharged the iter's stated acceptance criterion (byte-identical stdout). Logged in journal Concerns as a plan-enumeration gap."
}