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
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
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
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
85a1368826
The Vec header keeps its epoch in every build, and the spec is to say five words
2026-09-25 10:41: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
5214343251
Every tracked .flan file reindents to itself
2026-09-25 10:28:28 +07:00
d1fd323043
The destroyed-allocator trap is recorded as having no site
2026-09-25 10:27:39 +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
fc9f3059f9
C's calling convention for CFn waits with the callbacks
2026-09-25 10:23:28 +07:00
e16b5cbced
A local's type is to print qualified by its package
2026-09-25 10:23:18 +07:00
0e7a9ab98f
The x86 survey is to compare against LLVM at -O0 only
2026-09-25 10:21: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
e85b2d3e98
A dev session is to run under the sanitizer on request
2026-09-25 10:19:02 +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
ea19dedb90
The corpus is to be swept once for leaks nothing owns
2026-09-25 10:18:17 +07:00
49a7860cc4
The truthiness retry is to reuse the first pass and stay linear
2026-09-25 10:16:45 +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
ddf7ca4974
The flan_dyn.h ABI has one implementation, flan_dyn.c
2026-09-25 10:16:02 +07:00
c1dcdeb5af
A stop is to say whose it is from the frame that stopped
2026-09-25 10:15:47 +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
9dd7dd4137
The agent socket is to bind only for the daemon that launched the program
2026-09-25 10:14:48 +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