282 Commits

Author SHA1 Message Date
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
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
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
9aeee9d676 Merge branch 'master' into worktree-agent-a6ffe579d55d1892b 2026-09-25 13:16:58 +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
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
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
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
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
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
cb83014715 (clone xs) copies any slice's elements into a block from the context allocator or a named one, through the lowering (bytes s) uses 2026-09-25 11:40:42 +07:00
2682214499 A defclass slot may declare a type that every store into it checks, and set writes a declared slot 2026-09-25 11:40:08 +07:00
3cb6cebdbe (- x) negates a typed number, a type variable and a dyn, and a float's negation of zero is -0.0 2026-09-25 11:37:56 +07:00
de8e00314b A string literal handed to a declare-c reaches C uncopied, and both backends write a NUL after every literal 2026-09-25 11:33:03 +07:00
315125c677 A literal arm of an if, a cond or a match takes its type from the arms that are not literals 2026-09-25 11:32:54 +07:00
5062052425 Raylib's strings, models, file lists and matrix stack are bound, and a dev build can name what is still loaded at exit 2026-09-25 11:28:02 +07:00
14bac84f53 != over floats is unordered, so a NaN is unequal to itself on both backends as it already was on the dyn side 2026-09-25 11:27:49 +07:00
05d86b243f A library resource is known by its identifying field, a Get or a consuming Load is counted as raylib means it, bare pointers are not resources, the report waits for FLAN_DEV_LEAKS, and a release build emits the code it did before the tracker 2026-09-25 11:27:41 +07:00
9e26275f9b A quasiquote nests as SBCL's does, a match takes an enum, and until is a prelude macro 2026-09-25 11:27:14 +07:00
494c57d764 Merge branch 'master' into worktree-agent-ae2997a1e90aa9e02 2026-09-25 11:18:12 +07:00
840b3b215e A Map's churn test fails a table that doubles instead of sweeping, and nothing recalled is cited as read 2026-09-25 11:18:12 +07:00
389e93ff09 A capturing fn's environment belongs to the collector, so a closure may outlive the frame that made it 2026-09-25 11:13:57 +07:00
d03b02b347 Merge master 2026-09-25 11:12:30 +07:00
0d771494a6 Merge branch 'master' into worktree-agent-a8f5ad274482eeb9c 2026-09-25 11:07:02 +07:00
8bebff61eb Merge branch 'master' into worktree-agent-a8f88805fa4af49cf 2026-09-25 11:01:36 +07:00
3f30b82bcb A return computes its value before its defers, and a dozen small refusals and constants say what the program meant 2026-09-25 10:54:09 +07:00
2f3544e7f5 Code after a return emits nothing, a wide element names the u64 array, and $ is refused in fn, handler, :keys and & binders 2026-09-25 10:53:52 +07:00
0a6ea7c32b A caller excused for going stale takes back the generic copies its failed check cached, and a package's stale callers are named at their own file and line 2026-09-25 10:51:44 +07:00
fe20f68ada The runtime's races are driven by tests, a destroyed arena's record is reused, and a dyn index names its site 2026-09-25 10:51:08 +07:00
a49ed2243a Merge branch 'master' into worktree-agent-a4be641f87966b149 2026-09-25 10:48:05 +07:00
0863b62711 A string returned from C is copied into the context allocator, Model, Mesh and FilePathList cross the raylib boundary, rlgl's matrix stack is a package, and a dev build reports the library resources a program never released 2026-09-25 10:44:49 +07:00
39d35f51db A function whose signature changed installs, and a caller compiled against the old one stops on StaleCall at the call
A dev cell carries its body's signature word beside the body, every call through a cell (and every function value taken from one) compares it with the word the site was compiled for, and the session lists the stale callers by file and line on the reply. Both backends, both installers; release builds have neither the word nor the compare.
2026-09-25 10:40:18 +07:00
e9e151e1a4 A match over an enum names its members as keywords and is refused when it misses one 2026-09-25 10:33:22 +07:00