306 Commits

Author SHA1 Message Date
a13c2f9ec3 The Map header mirror the collector reads is checked against flan_rt.c's, array key pairs cannot share a name, and a program holding only a Map of dyn sets up the collector 2026-09-25 15:52:57 +07:00
6e29c19097 The collector walks a Map's full slots, so a Map may hold closures and dyn values and keeps them alive 2026-09-25 15:31:50 +07:00
580d377847 A fixed array of strings or of structs is a map key, hashed and compared element by element 2026-09-25 15:21:30 +07:00
a41e43cbba (slice d ...) over a dyn text answers a text, in the three spellings the typed slice has 2026-09-25 15:19:39 +07:00
6745aa7cb4 map-keys and map-values are prelude generics over any hashable key 2026-09-25 15:17:05 +07:00
e2aa0196cf Conditions have parents under Error, restarts carry where and why, and a handler reads the message with its values 2026-09-25 14:51:18 +07:00
610e9fcf9d A parent's handler reads a name and message made in context/temp, whole and good until the frame ends, and the handler-case landing no longer holds a buffer of its own 2026-09-25 14:36:46 +07:00
409c5f5c0d A read-only slice's diagnostics name (clone v) wherever clone copies the element type 2026-09-25 14:31:21 +07:00
5646ae148e Merge master; an expression evaluated at a stop runs against a scratch temp arena that is wiped after it, and the program's own temp arena is never rolled back 2026-09-25 14:09:30 +07:00
a0a86d0b80 The temp allocator grows a block that outgrows its chunk, answers a formatted number with one bump allocation, poisons what a dev wipe releases, and is wiped after each expression run while parked 2026-09-25 13:47:00 +07:00
e6ea657263 The array literal given a slice type by the matches a read-only slice too 2026-09-25 13:41:49 +07:00
b2eb81f7bf A slice or pointer can be read-only, and what it reaches cannot be written through it 2026-09-25 13:39:04 +07:00
d2f25a6e44 Merge branch 'master' into worktree-agent-a9288676abb278ffb 2026-09-25 13:35:10 +07:00
f3d969618d A class slot can carry a type, and set writes a declared slot 2026-09-25 13:32:16 +07:00
c6ad71dc5b A value that owns storage is never copied out of read-only storage, and two arguments at one type variable meet at const 2026-09-25 13:30:47 +07:00
5066b8d288 The literal an array cannot hold is the element blamed, a negative literal in a generic body names a fix for every instantiation, and a doubly negated literal is positive 2026-09-25 13:29:42 +07:00
53880eb685 A class slot's type names its own package's class first, an int widens into a float slot exactly when it round-trips, and a constructor's refusal names the call that was wrong 2026-09-25 13:29:30 +07:00
3e09a1f722 Merge branch 'master' into worktree-agent-ac750a5e83cab251b 2026-09-25 13:18:42 +07:00
9d6694fd92 Merge master: an evaluated expression's lifted bodies are placed with its thunk 2026-09-25 13:18:40 +07:00
9aeee9d676 Merge branch 'master' into worktree-agent-a6ffe579d55d1892b 2026-09-25 13:16:58 +07:00
d864818956 A handler for a parent reads the condition's own name and message or the condition printed with its values, kept in the handler-case's own frame across the unwind, and a frame re-entered through a signal or a C call names where it is 2026-09-25 13:16:35 +07:00
0358f6637c Merge branch 'master' into worktree-agent-ad097f67134ba0552 2026-09-25 13:15:36 +07:00
1e5be63a1a An array reached through read-only storage slices to a [const T], a Vec or Map copied out of one stays read-only through lets, and an if's const and writable branches meet at const in either order 2026-09-25 13:08:29 +07:00
02e4fef830 i64->bytes and f64->bytes allocate from a growing temp allocator that (free-temp) releases once a frame and a dev build's agent poll wipes, so a number drawn every frame no longer leaks 2026-09-25 13:07:21 +07:00
9394a26449 A negative literal fits no unsigned type, u64 included, and the refusal names the cast that writes its bit pattern, which a constant now folds 2026-09-25 13:02:50 +07:00
325c3662a8 A numeric type's limits are (max-value T) and (min-value T), and an array literal of numbers with no common type is refused with the conversion named 2026-09-25 12:56:02 +07:00
e7b01ea01c Merge branch 'master' into worktree-agent-adcfc27e0ceac8df4 2026-09-25 12:55:56 +07:00
9ba99d7d5b A dev build puts every closure handed to a named call on the collector's heap, since a redefinition can make the callee keep it 2026-09-25 12:55:56 +07:00
16427f8d07 A class slot may be a class or an Option, an int widens into a float slot when exact, a gained typed slot starts at its zero, and a migration never re-enters itself 2026-09-25 12:55:25 +07:00
59a0fc80de Only a string the checker marks as a literal reaches C uncopied, a slice of dyn is refused at its clone, and the context allocator holds an incarnation so a restored context whose arena was destroyed traps 2026-09-25 12:55:18 +07:00
bfd176cce9 Merge master: a handler clause runs without its own handler in force, over the condition descriptor, and StaleCall is an Error 2026-09-25 12:50:01 +07:00
35f455acb3 The's refusal of a dyn says what the boundary does at that type, elements that cannot become a dyn are refused against each other, two literal arms meet at the wider type, and the renamed prelude function and a second startup warning stay out of sight 2026-09-25 12:49:02 +07:00
acec25f8a1 Merge master 2026-09-25 12:43:50 +07:00
d8945ae4ae The address of read-only storage is a (Ptr const T), which nothing is written through and which a C const T * parameter takes 2026-09-25 12:43:04 +07:00
aedd50c646 Merge branch 'master' into worktree-agent-ac750a5e83cab251b
# Conflicts:
#	lib/check.ml
2026-09-25 12:17:58 +07:00
1d219b526c Merge master into the typed class slots lane 2026-09-25 12:14:42 +07:00
c6cb018b9f Only a closure that outlives its frame takes a collector environment, and the collector reads a Vec's elements only through a block it knows is live 2026-09-25 12:12:25 +07:00
c0b4b22357 Growing, shrinking or freeing a container reached through a [const T] is refused, and a function that only reads a slice stands where one that may write it is wanted 2026-09-25 12:10:47 +07:00
c116237621 An Allocator value is its record and the incarnation it was made for, so one kept past its arena-destroy traps at every use even after arena-new reuses the record 2026-09-25 12:05:44 +07:00
73dfaacbc8 A condition type may name a parent and a handler for Error catches every built-in error, a signal passes one descriptor carrying its chain, name, sentence and site, and the break loop shows the sentence the runtime wrote 2026-09-25 12:05:13 +07:00
6e8cc52bc7 Merge branch 'master' into worktree-agent-ad097f67134ba0552 2026-09-25 12:02:48 +07:00
5c0698d749 (max-of T) and (min-of T) are a numeric type's limits, at a concrete type or a type variable the bound admits, and given a slice they are still the prelude's reductions 2026-09-25 12:00:42 +07:00
f629123561 A lowercase vec, ptr, option or map over types in a return slot is a near miss for its constructor, and a bare && is written back as the (and) that compiles 2026-09-25 11:56:56 +07:00
2ea47f91eb A program's function named as a prelude function takes the name over for its own file, with a warning, and the prelude's own calls keep the prelude's 2026-09-25 11:51:58 +07:00
3892f1ed34 Merge master 2026-09-25 11:50:29 +07:00
d6217830ff A defn whose body stands in its return slot is told it has no return type, a misspelled type constructor is a near miss, and not=, ==, &&, || and their kin name the Flan builtin that computes the same thing 2026-09-25 11:50:23 +07:00
7cf57eb8ba A read-only slice refuses a dyn view without promising one later, and taking a read-only element's address is recorded as an open decision 2026-09-25 11:49:17 +07:00
c671bba490 (the T e) gives any expression its type, and an array literal nothing names is typed when its elements agree and a dyn vector when they mix 2026-09-25 11:47:28 +07:00
c9eb425ed1 A number i64->bytes or f64->bytes renders is copied into the context allocator and outlives the frame that made it 2026-09-25 11:47:01 +07:00
2ff1da88da A slice can be read-only: bytes-view answers a [const u8], and a store through one is refused at compile time 2026-09-25 11:43:41 +07:00