1346 Commits

Author SHA1 Message Date
042c969e30 Every description of an Allocator value says it is two words 2026-09-25 12:55:38 +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
acec25f8a1 Merge master 2026-09-25 12:43:50 +07:00
d3ac1ab4dc Type limits are spelled min-value and max-value, and quick formatting is to use a per-frame temporary allocator 2026-09-25 12:20:12 +07:00
93ff39c01d flan_destroyed_proc says it is the backstop for a caller holding a bare allocator record 2026-09-25 12:08: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
caf39c4346 A read-only pointer is to sit beside the read-only slice 2026-09-25 12:04:08 +07:00
5e9be2150f A generic's name disassembles to each of its copies, and completion knows the name 2026-09-25 12:01:06 +07:00
77497cfc2c A generic's copy made by an evaluated expression is disassembled from that expression's module, and one copy that cannot be shown no longer hides the others 2026-09-25 12:00:50 +07:00
9bb1bde665 A defn with no return type says so, and an operator spelled as another language spells it names Flan's 2026-09-25 11:57:09 +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
b181003695 Merge branch 'master' into worktree-agent-a2450aee5a656816b 2026-09-25 11:54:15 +07:00
6c8611cece Merge master 2026-09-25 11:53:00 +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
0636eb3b8d A generic's copy that the file does not make is named in its lowering rather than left out 2026-09-25 11:47:11 +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
a2eeb65f50 Program output reaches the editor as it is printed, and every Flan buffer keeps its keys under Evil 2026-09-25 11:43:21 +07:00
20fa04d9df A program never waits on an editor that stops reading its pushes, and the editor keeps a bounded tail of the program's output 2026-09-25 11:42:54 +07:00
d2867a4267 not= stays refused in favour of != 2026-09-25 11:41:58 +07:00
b05a97b029 A generic's name disassembles to its copies, each headed by the types it was called at, and is listed among the program's names 2026-09-25 11:41:31 +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
c6f0dd5450 A dev build fills a Vec's old buffer with 0xDEADBEEF when a push moves it, so a stale slice reads a value nobody wrote 2026-09-25 11:36:59 +07:00
c671f23b2c Merge master 2026-09-25 11:36:46 +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
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
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
de26d6e625 ~~@xs splices an unquote per element, a session can call a macro an expansion defined, and an enum member cannot be named else 2026-09-25 11:24:27 +07:00
b818e38cff The type limits are to be reachable from a type variable 2026-09-25 11:24:20 +07:00
7b22f0ed98 The Map is a Swiss table 2026-09-25 11:20:41 +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
14da41e1d9 A changed signature installs, its stale callers are named, and a handler is off while its own clause runs 2026-09-25 11:17:48 +07:00
f4725788c5 The daemon pushes the program's output and the watch table to an editor that asked for them, and every key a Flan buffer's own map binds is that buffer's under Evil 2026-09-25 11:16:49 +07:00
ed8dbbcd62 A handler-bind clause runs with only the handlers outside its own form in force, and a stale call in main's running loop stays listed until the callee changes back or the program re-runs
The first is CLHS 9.1.4.1: a clause that signalled the condition it handles used to re-enter itself until the stack ran out. The stale list now names a lifted clause by the function it is written in, and BUILT.md's cost line is measured against master.
2026-09-25 11:15:52 +07:00
d03b02b347 Merge master 2026-09-25 11:12:30 +07:00
8b4c6f81df The IR and the disassembly name the source form each piece of code came from 2026-09-25 11:08:35 +07:00
56fdfabc84 A destroyed arena is to trap always, and a mixed array literal is to be a dyn vector 2026-09-25 11:08:28 +07:00
40bd96ec65 A source heading escapes control characters, names its file by the path it was given, and quotes a form cut at a character boundary 2026-09-25 11:08:11 +07:00
0d771494a6 Merge branch 'master' into worktree-agent-a8f5ad274482eeb9c 2026-09-25 11:07:02 +07:00
892989fe85 A container parameter its function grows is to be warned at 2026-09-25 11:03:56 +07:00
8bebff61eb Merge branch 'master' into worktree-agent-a8f88805fa4af49cf 2026-09-25 11:01:36 +07:00
cbfac9f474 A Map is a Swiss table, one control byte a slot with key and value side by side
Removal marks a deleted slot unless no probe can have passed it, and a rebuild at the same capacity sweeps them. The header, the entry points and the iteration contract are unchanged. A Map has no bounds check, so the entry asking to convert one is closed with nothing to convert.
2026-09-25 11:00:22 +07:00
573076994e Merge branch 'master' into worktree-agent-a0a469774e7454c6c
# Conflicts:
#	lib/loc.ml
#	lib/x86.ml
2026-09-25 10:59:24 +07:00
e158cd3a66 An intermittent x86 dyn-global failure after an allocating thunk is recorded 2026-09-25 10:58:51 +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
08545c757f cond is a special form again because the prelude relies on it, and until is a prelude macro because only programs use it 2026-09-25 10:48:40 +07:00