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
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
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
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
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
c671f23b2c
Merge master
2026-09-25 11:36:46 +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
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
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
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
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
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