Continued on 2026-10-24 with record fields and constructors: see
summary_session-2026-10-24-open-arrays-m5.md.
Same-day continuation of the range-check/PACKEDSET and ISO-exception
sessions. This session implemented the open-array ABI in four steps:
fixed storage, open views/calls, and payload SIZE/ADR.
Branch: master. Feature state: open-array M4
(v3-open-arrays-m4), on top of v3-finally.
Gates at the end: suite 295/295, fixpoint OK
(3,480,366 bytes), corpus 518/612 compile-OK, 0 crashes.
| gate | start (M1) | end (M4) |
|---|---|---|
suite (compiler/run_tests.sh) |
283/283 | 295/295 |
fixpoint (bootstrap/fixpoint.sh) |
4,198,600 B | 3,480,366 B |
corpus (tools/v3-corpus/corpus.sh) |
512/612 | 518/612, 0 crashes |
Corpus additions: unbounded, unbounded2, unbounded3,
unbounded4 and array9 compile; the first four also run.
unbounded6/unbounded8/adrunbounded3 remain declaration-order
cases under V3 policy (their variables are declared after the
procedures). The corpus is compile-only; it is not a run gate.
2cc6776)SymTab.ArrayRank, SymTab.IsMultiArray.SymTab.ArrayLeafBytes, SymTab.ArrayStride, and
SymTab.ArrayPayloadSize.MaxDefer 256 → 512 and the session SSA buffer 4 → 8 MiB.docs/design-open-arrays.md.4616e51){count, elemBytes, stride, base, next}.ViewIndex returns a copied next-level view for array selectors and
a scalar address at the leaf.NEW initialization work.CopyOldNestedToView.{count,data}
descriptor (copy-in/copy-back for VAR) as an interim ABI bridge.t_multidim_local; existing t_multidim, t_array,
t_ctor3, t_nestidx, t_nestarr, t_ptrnest and showcase6 stay
green.v3-open-arrays-m2.557addb)ARRAY OF ARRAY OF …) parse.ARRAY OF BYTE/SBYTE accepts any array rank for
flattening.ArrayView
pointers; open-to-open forwarding and VAR writes go straight to
base.count/stride/base/next;
HIGH/LEN read the view count.t_open2d, t_open2d_value, t_open2d_high,
t_open2d_nested, t_open3d, t_open3d_row,
t_open_row_to_1d, t_open_flatten_byte.v3-open-arrays-m3.df72d03)SIZE/TSIZE now use payload bytes for arrays:
count * leaf;count * element;count * elemBytes;ADR:
view.base;descriptor + 8;VAR
copy-back.t_open2d_size, t_open2d_adr, t_open1d_size_adr.
unbounded3 runs with SIZE 60/12/2/2.v3-open-arrays-m4.summary_session-2026-10-24-open-arrays-m5.md.ADR identity through an internal 1-D call is not preserved.
Writes are preserved.unbounded6/unbounded8/adrunbounded3 still fail declaration
order by policy; do not relax it for corpus count.| commit | tag | work |
|---|---|---|
2cc6776 |
— | M1 type/ABI helpers |
0f422ae |
— | open-array design document |
4616e51 |
v3-open-arrays-m2 |
fixed rank-2/3 flat storage + views |
7c02646 |
— | M2 docs/tag map |
557addb |
v3-open-arrays-m3 |
open multi-array views + call conversion |
fb90c8f |
— | M3 docs/tag map |
df72d03 |
v3-open-arrays-m4 |
payload SIZE/TSIZE, view ADR |
| this docs commit | v3-open-arrays-m4-summary |
session summary |
| final docs commit | v3-session-2026-10-23-open-arrays-end |
session tag |
No push was performed.