820 Commits

Author SHA1 Message Date
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
0b9ae9318e flan build and flan run of a file with no main say so and show one, rather than failing at the link 2026-09-25 11:26:13 +07:00
97a2795cb2 A module that makes a closure stays mapped, and a closure held beside a collecting operand is rooted 2026-09-25 11:24:34 +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
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
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
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
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
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
cc39ff2a01 A destroyed arena's allocator is reused by the next arena-new with its epoch kept, a stale dyn view names its site, and the spec fixes the Vec at five words in every build 2026-09-25 10:48:30 +07:00
a49ed2243a Merge branch 'master' into worktree-agent-a4be641f87966b149 2026-09-25 10:48:05 +07:00
0beafedd14 Dead code is gone, and the daemon says what to fix when a session cannot start or reach its program 2026-09-25 10:45:17 +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
146be41bd4 flan dev refuses at start a TMPDIR that is missing or too deep for a socket path, and a program with no main, and tells a program with no agent how to add one
The dropped (agent/start ...) note named the wrong cause rather than being unreachable: an over-long socket path fails the agent's bind while it is linked. That case is now refused before anything is built, and the comments, the TODO entry and the fixture say so.
2026-09-25 10:43:33 +07:00
12c3d07acf The x86 backend describes its frames in every build, and converts a u64 to and from a float as LLVM does 2026-09-25 10:43:20 +07:00
22401a6521 Merge branch 'master' into worktree-agent-acca0e216df6ca366 2026-09-25 10:42:50 +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
60ef7b2e06 A recur from an arm of a match over an enum is in tail position, and a session's blind spot for macros an expansion defines is recorded 2026-09-25 10:39:42 +07:00
222dc0ae90 A loop, dotimes, match, macro, class or generic binding that starts with $ is refused too 2026-09-25 10:37:43 +07:00
066fb18940 Every Flan form heads the code it produced in the emitted IR, the x86 listing and both disassembly buffers, and the objects are the same with or without it 2026-09-25 10:34:07 +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
83b244475a A refusal that suggests a fix suggests one that compiles, for vec-new, map-new and a near miss that is a value 2026-09-25 10:30:52 +07:00
7abe760288 cond and until are prelude macros, and a macro module holds only the macros its forms reach 2026-09-25 10:28:32 +07:00
6c9635cd53 A wide literal is refused for its range as an enum member, names the u64 cast where a dyn is wanted, and comes back wide from a macro 2026-09-25 10:26:03 +07:00
5581bafacb A dyn at, set-at or push that traps names the file, line and column it was written at 2026-09-25 10:25:28 +07:00
cf04bfc8fd A u64 converts to and from a float on x86 as it does under LLVM, across the top half of its range 2026-09-25 10:21:23 +07:00
ca031d6b38 Every tracked Flan file is what the indenter would write, and a with- head indents its body like a definer
clojure-mode decided each shape. A with- head, and a def or with- head behind a namespace, indents as a body; a qualified head finds its unqualified spec. The rest was hand formatting: cond and match results under their tests, ordinary call arguments under the first one, and lone ; continuation comments rewritten as ;; lines above the code.
2026-09-25 10:19:22 +07:00
dd160aa31b A return computes its value before it runs its defers 2026-09-25 10:19:09 +07:00
4d10f3c327 An allocator outlives the arena arena-destroy hands back, so a container made from it traps on a read of live memory 2026-09-25 10:18:31 +07:00
2b42cecded No test program is left from the move-only rule for Vec that nothing checks any more 2026-09-25 10:16:25 +07:00
3636f31cba A running program's reply never says it has not called (agent/start ...), because the agent's constructor has bound the socket before main 2026-09-25 10:16:25 +07:00
f0fc66940f The break loop's snapshot caps and its choice handoff are driven from inside the stopped thread by a poll hook 2026-09-25 10:15:35 +07:00
0167fcef43 A quasiquote inside a quasiquote nests, and a macro that writes a macro defines one the program can call 2026-09-25 10:14:41 +07:00
d006a8b480 An array literal's first element types the rest, constant arithmetic folds at a bounded type variable, and a pointer or a plain union takes a byte fill 2026-09-25 10:14:24 +07:00
c2f26a9909 The result read's losing side of the seqlock is driven by a hook inside the window between the copy and the check 2026-09-25 10:12:39 +07:00
4a292b5a73 f64-inf, f64-nan, f32-inf and f32-nan are constants the compiler supplies 2026-09-25 10:07:22 +07:00
b153f325b8 A declared name that starts with $ is refused where it is declared 2026-09-25 10:04:23 +07:00