1467 Commits

Author SHA1 Message Date
ff8b61e44c A self-containing or runaway generic struct and a where clause over a length are each one error among the file's others, and a literal that does not fit a variable a typed field decided names that field 2026-09-25 19:57:58 +07:00
2f321fd061 Merge master into the generics lane 2026-09-25 17:03:13 +07:00
9d0d42e467 A generic struct's copy prints as (Pair i32 {...}), crosses to C behind a pointer, names each use that made it when refused, settles literal fields at the wider type, and is laid out by stores and restarts that first name it 2026-09-25 16:59:11 +07:00
fc6e2f7dfb The break window evaluates in a frame and steps through a function, and C-c C-c reports every error in the form
# Conflicts:
#	test/test_dev.ml
2026-09-25 16:52:32 +07:00
37938db7c2 A call through a failed local is not reported and a miscounted call's arguments are, eval-in-frame answers slotless frames and ended stops, flan dev links its own agent, and the daemon buffer colours only file:line:col diagnostics 2026-09-25 16:47:51 +07:00
d5978aeab8 The dev daemon re-runs under two processes, knows whose break it is, guards its socket, runs under sanitizers, and unloads evaluated modules 2026-09-25 16:39:09 +07:00
96dbcb1f2f An expression that makes a function value keeps its module mapped, a process a merged program starts does not take the session's socket, and an evaluation's value is its own expression's and not one a restart resumed 2026-09-25 16:37:43 +07:00
a95b4c288e Merge branch 'master' into worktree-agent-a37bbb17fdd22924a 2026-09-25 16:35:58 +07:00
730730a1a7 A relocated prelude refusal's note says only that the refusal is there, since the notes before it name which body 2026-09-25 16:23:19 +07:00
020392b064 Merge branch 'master' into worktree-agent-a55c4be9d199b8eb4 2026-09-25 16:22:58 +07:00
f32f88413e Merge branch 'master' into worktree-agent-a4f010dac78379ee2 2026-09-25 16:20:22 +07:00
b51b7d0a53 A refusal in a prelude generic's body stands at the call that asked for the copy, with the prelude's line as a note 2026-09-25 16:20:08 +07:00
0f9160f3bc flan convert keeps comments beside their forms, and the dev loop reads code in the syntax the editor sends 2026-09-25 16:17:33 +07:00
30373ffda5 A converted comment stays with the form it was written beside when the printer reorders or splits bindings, the round trip checks each comment's form, and a snippet's first line sets its left edge 2026-09-25 16:17:12 +07:00
8eac6734f0 Merge branch 'master' into worktree-agent-a37bbb17fdd22924a 2026-09-25 16:15:40 +07:00
ea67e058bf A generic over a generic struct calls another at the same struct variables, and a struct copy is a map key and a function-value parameter on both backends 2026-09-25 16:15:40 +07:00
78261fccda The collector walks Map storage, arrays of strings or structs are map keys, map-keys and map-values are prelude generics, and spike/ is gone 2026-09-25 16:10:38 +07:00
729d1a27ed map-keys and map-values walk a Map of closures, since (map-next m cur k) walks keys alone and neither needs a zeroed value, and nothing names spike/ any more 2026-09-25 16:10:20 +07:00
4054c4921b A defstruct whose fields introduce $t or an array length $n is a generic struct, each application of it an ordinary struct copy that generic functions bind against, and a printed call is evaluated once 2026-09-25 16:08:14 +07:00
6c8f503ebf A --two-process re-run checks the whole program before building it and refuses at a stale caller, and a change made while the child has ended waits in the session for the re-run 2026-09-25 16:08:13 +07:00
69d17a9d59 Merge branch 'master' into worktree-agent-aebbe657e5dc1f8ef 2026-09-25 16:03:19 +07:00
527da37633 An evaluated expression's module is unloaded when its only strings are literals or registry names, because a literal is a copy the process keeps 2026-09-25 15:57:40 +07:00
4b64dc5f65 Code-carrying dev requests name their syntax and starting line and column, so a .fln snippet sent from the middle of a buffer reads with the buffer's own locations 2026-09-25 15:57:09 +07:00
a13c2f9ec3 The Map header mirror the collector reads is checked against flan_rt.c's, array key pairs cannot share a name, and a program holding only a Map of dyn sets up the collector 2026-09-25 15:52:57 +07:00
8200120bf3 flan convert keeps comments and number spellings in both directions, and a .fln message quotes the text as written, with let-bound match, if and block calls read as values 2026-09-25 15:47:29 +07:00
9a91440486 C-c C-s installs a defn that stops before each form of its body, and the break buffer steps it with s and runs the rest of the call with c 2026-09-25 15:43:24 +07:00
d0fc036bba flan dev --sanitize builds the host under ASan and UBSan on LLVM, refuses --x86 by name, and the sanitize sweep drives a real session through reloads and breaks 2026-09-25 15:39:00 +07:00
a615e4ecfc The leak sweeps have switches, a C source that includes the dyn header is recompiled when the header changes, and the map-remove and map-keys programs free what they allocate 2026-09-25 15:38:02 +07:00
17f0358e92 A .fln file is read as indented syntax into the same forms, and flan convert prints a program in it 2026-09-25 15:35:42 +07:00
f67498c789 A re-run under --two-process builds the program again from the session and starts it in a new process, and the daemon outlives a finished child 2026-09-25 15:35:23 +07:00
da9f21ddcd A form sent to the daemon is refused with every error in it, and an expression evaluated from the break buffer sees the stopped frame's locals 2026-09-25 15:33:23 +07:00
6e29c19097 The collector walks a Map's full slots, so a Map may hold closures and dyn values and keeps them alive 2026-09-25 15:31:50 +07:00
074b2da6f3 The indented reader refuses a continuation line that is not deeper than its statement, takes one-line statements in arms, then/else and defer, typed lets and bare-name blocks, and names the shape it wanted where it used to say two values cannot sit side by side 2026-09-25 15:30:52 +07:00
0f0fbc68ef The prelude's generics name their element types with the sigil, so a program global named t, k or v no longer breaks them 2026-09-25 15:26:29 +07:00
c30f52c5a7 A stop records whether it was inside an evaluated thunk, and an evaluation waits through a break the program's own code entered 2026-09-25 15:25:09 +07:00
580d377847 A fixed array of strings or of structs is a map key, hashed and compared element by element 2026-09-25 15:21:30 +07:00
82b02b6584 Merge branch 'master' into worktree-agent-ab75070e065de0e53 2026-09-25 15:21:12 +07:00
a41e43cbba (slice d ...) over a dyn text answers a text, in the three spellings the typed slice has 2026-09-25 15:19:39 +07:00
d5fc3aa657 The agent binds the daemon's socket only in the process the daemon launched, named by FLAN_AGENT_OWNER 2026-09-25 15:18:55 +07:00
6745aa7cb4 map-keys and map-values are prelude generics over any hashable key 2026-09-25 15:17:05 +07:00
52c154e306 The x86 survey compares against LLVM built at -O0, the level the hand-written backend corresponds to 2026-09-25 15:15:30 +07:00
b0323606fc spike/ is gone: the x86 and JS surveys and the cells check live in test/, their probes in test/programs as x86-p* and js-p*, and dump.sh in tools/ 2026-09-25 15:14:27 +07:00
8dc90416d4 The daemon's buffer draws errors, warnings and notes in compilation's faces and the program's own output in a face of its own 2026-09-25 15:14:23 +07:00
680b8e7e59 A refusal inside a generic copy names each call that asked for it, a refused generic body is reported once, and a type variable prints with its $ 2026-09-25 15:13:12 +07:00
d7016f91c7 A .fln file is read by an indented reader that yields the paren reader's forms, every program entry point picks the reader by extension, and flan convert prints either syntax as the other 2026-09-25 15:04:32 +07:00
e2aa0196cf Conditions have parents under Error, restarts carry where and why, and a handler reads the message with its values 2026-09-25 14:51:18 +07:00
1bada92870 A handled condition's sentence is consumed when it is copied, and the class-slot, migration and destroyed-allocator traps put their own sentence on the wire 2026-09-25 14:48:46 +07:00
610e9fcf9d A parent's handler reads a name and message made in context/temp, whole and good until the frame ends, and the handler-case landing no longer holds a buffer of its own 2026-09-25 14:36:46 +07:00
d6621827b3 A read-only slice's diagnostics suggest clone where clone accepts the type 2026-09-25 14:31:36 +07:00
409c5f5c0d A read-only slice's diagnostics name (clone v) wherever clone copies the element type 2026-09-25 14:31:21 +07:00