diff --git a/TODO.org b/TODO.org index fc6f92ea..32ca5d86 100644 --- a/TODO.org +++ b/TODO.org @@ -20,10 +20,12 @@ Dyn text stays immutable, with chars and text converting to and from a dyn vector of characters; length and indexing count characters on dyn text and bytes on str. Waits on the dyn-unless-annotated design. -** NEXT Any typed container crosses into dyn as a view -Decided 2026-09-25: every element type (all numbers, chars, structs, nested arrays) -and any storage; a dev build checks a view against its frame or allocation and traps -when stale, a release build does not. Waits on the dyn-unless-annotated design. +** DONE Any typed container crosses into dyn as a view +CLOSED: [2026-09-26] +A str element reads as a copy and is never written, an aggregate element is written +through its own view, and an int is refused by a float element. A view of storage its +own dyn global's initialiser built is refused. Rules out copying at the crossing, and +any check in a release build. ** NEXT Dyn unless annotated Decided 2026-09-25: in both syntaxes an unannotated value is dyn — [6 2 4 9] is a dyn @@ -943,13 +945,11 @@ Already fixed by 3672da2, which blames the arm that is not a compiler temp; the caret is on the last operand and =test/test_flan.ml= asserts its column. Rules out relabelling the else arm, a bool sentinel, and inverting the condition. -** DONE A typed container crosses into dyn as a view, and only from permanent storage +** DONE A typed container crosses into dyn as a view CLOSED: [2026-09-20] -The descriptor is pointer, length and element type — a slice plus the piece a -slice is missing. A =Vec= view holds the address of the =Vec='s own header and -reads pointer and length live, so a reallocating push cannot go stale. Elements -are =i64=, =f64= and =bool= only. Rules out a heap-held header and anything behind -a =(Ptr T)=. +A =Vec= view holds the address of the =Vec='s own header and reads pointer and +length live, so a reallocating push cannot go stale. Rules out snapshotting a +=Vec='s pointer at the crossing. ** DONE A view of a Vec goes stale at the push, and the warning is at the push CLOSED: [2026-09-21]