819 Commits

Author SHA1 Message Date
e616a29ceb A parameter vector paired by a lowercase type the program declares is warned at, naming the type and where it is declared 2026-09-25 15:37:26 +07:00
1716b146cd A condition check_truthy has already refused is refused again from memory, so a retry through nested not is linear and keeps its message 2026-09-25 15:35:36 +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
23af8a4dd3 A bool arm and a dyn arm of an if meet at dyn with the bool boxed, so (or false (box "s")) answers "s" 2026-09-25 15:31:12 +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
f6ba1e6c4d A CFn may sit in a struct field, a fixed array or a global, and a call through a null one signals NullCall on both backends 2026-09-25 15:26:27 +07:00
8cc63ed9f6 A place in update, ++ and -- evaluates each of its subexpressions once, and (update place f args ...) stores (f old args ...) back into it 2026-09-25 15:26:27 +07:00
b8c81d94ee enum? admits exactly the enums, entails ordered? and equal?, and licenses a generic conversion from an enum to a number beside numeric? 2026-09-25 15:26:27 +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
58d1e35225 A local of a package's type is named by its qualified type in the break buffer's listing and the inspector, pinned by a shape/Box local in dev-inspect.flan 2026-09-25 15:22:48 +07:00
5b8c4a68fa into refuses to copy elements that own storage as they stand, and names (map clone) where clone takes the element 2026-09-25 15:22:44 +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
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
409c5f5c0d A read-only slice's diagnostics name (clone v) wherever clone copies the element type 2026-09-25 14:31:21 +07:00
b6dbc08c78 An expression at a stop that destroys the program's temp arena leaves context/temp empty rather than restoring the destroyed record 2026-09-25 14:26:31 +07:00
5646ae148e Merge master; an expression evaluated at a stop runs against a scratch temp arena that is wiped after it, and the program's own temp arena is never rolled back 2026-09-25 14:09:30 +07:00
38055b8fdc A file with no main opens a session, and a crash in an evaluated expression leaves the session running 2026-09-25 14:04:14 +07:00
9373c43113 The nested-overflow test waits for the outer break to be on top instead of sleeping, and names a session that dies 2026-09-25 13:56:11 +07:00
46a89aac0c An expression evaluated at a stop rolls the temp allocator back to where it was, so its own text is reclaimed and the stopped frames' text survives 2026-09-25 13:54:07 +07:00
8bb2885e63 An abandoned evaluation puts the context allocator back, and a fault's break loop runs on a guarded stack of its own so a runaway recursion evaluated there is another break rather than a dead session 2026-09-25 13:49:24 +07:00
a0a86d0b80 The temp allocator grows a block that outgrows its chunk, answers a formatted number with one bump allocation, poisons what a dev wipe releases, and is wiped after each expression run while parked 2026-09-25 13:47:00 +07:00
a4e45d9a78 A message longer than its buffer is cut at a character and ends in an ellipsis, and the break loop and the unhandled message use the full text 2026-09-25 13:41:58 +07:00
b2eb81f7bf A slice or pointer can be read-only, and what it reaches cannot be written through it 2026-09-25 13:39:04 +07:00
5a78cdd202 Merge master 2026-09-25 13:36:54 +07:00
d2f25a6e44 Merge branch 'master' into worktree-agent-a9288676abb278ffb 2026-09-25 13:35:10 +07:00
f3d969618d A class slot can carry a type, and set writes a declared slot 2026-09-25 13:32:16 +07:00
c6ad71dc5b A value that owns storage is never copied out of read-only storage, and two arguments at one type variable meet at const 2026-09-25 13:30:47 +07:00
5066b8d288 The literal an array cannot hold is the element blamed, a negative literal in a generic body names a fix for every instantiation, and a doubly negated literal is positive 2026-09-25 13:29:42 +07:00
53880eb685 A class slot's type names its own package's class first, an int widens into a float slot exactly when it round-trips, and a constructor's refusal names the call that was wrong 2026-09-25 13:29:30 +07:00
639ff1859c Aborting an expression that trapped in the park abandons it by a jump back to the poll that called it, and the session stays 2026-09-25 13:28:16 +07:00
3e09a1f722 Merge branch 'master' into worktree-agent-ac750a5e83cab251b 2026-09-25 13:18:42 +07:00
9d6694fd92 Merge master: an evaluated expression's lifted bodies are placed with its thunk 2026-09-25 13:18:40 +07:00
9aeee9d676 Merge branch 'master' into worktree-agent-a6ffe579d55d1892b 2026-09-25 13:16:58 +07:00
d864818956 A handler for a parent reads the condition's own name and message or the condition printed with its values, kept in the handler-case's own frame across the unwind, and a frame re-entered through a signal or a C call names where it is 2026-09-25 13:16:35 +07:00
0358f6637c Merge branch 'master' into worktree-agent-ad097f67134ba0552 2026-09-25 13:15:36 +07:00
1998f57ca8 Merge branch 'master' into worktree-agent-ac49c2c6835655472 2026-09-25 13:14:44 +07:00
1e5be63a1a An array reached through read-only storage slices to a [const T], a Vec or Map copied out of one stays read-only through lets, and an if's const and writable branches meet at const in either order 2026-09-25 13:08:29 +07:00