2752d57655
A dev daemon started by a test dies with it, a daemon whose socket is gone ends cleanly, the Emacs daemon buffer asks before it is killed and closes the session, and a program's agent socket lives under TMPDIR and goes on a trap or fatal signal.
2026-09-26 13:13:39 +07:00
28d4c0f8dc
A number literal takes its type from its uses inside the function, an unconstrained float literal is an f64, and a dyn use asks for the dyn width.
2026-09-26 12:41:54 +07:00
6d8ced2ba3
A dyn text becomes a str as its own bytes, a dyn view becomes its own storage, and a dyn vec or map becomes a checked copy in a [const T], a fixed array or a struct, while a writable [T] is never a copy.
2026-09-26 11:48:01 +07:00
c7fb0e5422
Literal locals fed through do, let and if arms share one type without extra rounds, a chain past the rounds names the local to annotate, a restart's conversion fix shows the argument as written, and a name's lookup is answered from the last one under the same scope
2026-09-26 11:14:15 +07:00
23663c4773
An unconstrained float literal is an f64, literal locals settle by merging the locals that feed each other, and a restart refused for a number type writes the conversion
2026-09-26 10:45:46 +07:00
49e6ac6512
Comments and the README example spell the text type str.
2026-09-26 05:39:56 +07:00
8fe8062a0c
Hand-written .fln programs exist, flan convert writes corpus-shaped paren text, and several .fln diagnostics suggest .fln spellings
2026-09-25 23:26:53 +07:00
4b1e722854
slice-from makes a slice from a pointer and any integer count, and ((Ptr U) p) casts a pointer's element type without dropping const
2026-09-25 22:24:11 +07:00
c6a3259a62
A function that returns or stores into a global an address or slice of its own frame is refused, a dev free-all poisons any arena's released bytes and ASan sees them released, and @sanitize checks stack use after return
2026-09-25 20:40:21 +07:00
89e4f53895
Places are evaluated once, enums have a predicate, CFn values live in structs, and a program's names cannot break the prelude
2026-09-25 17:12:56 +07:00
7bcf9e5054
A dev build refuses (free s) on a slice over a Vec's or a Map's storage, and says a formatted number's text is released by free-temp
2026-09-25 17:04:52 +07:00
4c336687ef
Master's error recovery is merged, and the refusal memos are consulted only where a refusal is raised
2026-09-25 17:03:32 +07:00
2c8bd61a20
(free s) hands a slice (bytes s) or (clone xs) made back to the context allocator or a named one, a dev build traps on the wrong allocator, and a sliced array literal lives for its whole function on x86
2026-09-25 16:48:09 +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
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
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
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
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
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
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
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
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
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
02e4fef830
i64->bytes and f64->bytes allocate from a growing temp allocator that (free-temp) releases once a frame and a dev build's agent poll wipes, so a number drawn every frame no longer leaks
2026-09-25 13:07:21 +07:00
59a0fc80de
Only a string the checker marks as a literal reaches C uncopied, a slice of dyn is refused at its clone, and the context allocator holds an incarnation so a restored context whose arena was destroyed traps
2026-09-25 12:55:18 +07:00
bfd176cce9
Merge master: a handler clause runs without its own handler in force, over the condition descriptor, and StaleCall is an Error
2026-09-25 12:50:01 +07:00
1fb4b37125
A restart that takes values can be taken from the break loop, which asks for one per parameter and stores them into the frame as an invoke-restart would
2026-09-25 12:46:23 +07:00
acec25f8a1
Merge master
2026-09-25 12:43:50 +07:00
1d219b526c
Merge master into the typed class slots lane
2026-09-25 12:14:42 +07:00
c6cb018b9f
Only a closure that outlives its frame takes a collector environment, and the collector reads a Vec's elements only through a block it knows is live
2026-09-25 12:12:25 +07:00
93ff39c01d
flan_destroyed_proc says it is the backstop for a caller holding a bare allocator record
2026-09-25 12:08:47 +07:00
c116237621
An Allocator value is its record and the incarnation it was made for, so one kept past its arena-destroy traps at every use even after arena-new reuses the record
2026-09-25 12:05:44 +07:00
73dfaacbc8
A condition type may name a parent and a handler for Error catches every built-in error, a signal passes one descriptor carrying its chain, name, sentence and site, and the break loop shows the sentence the runtime wrote
2026-09-25 12:05:13 +07:00
e0af3c9b1d
A method of update-instance-for-redefined-class runs on each instance as it migrates, and one that signals offers migrate-by-name
2026-09-25 11:55:40 +07:00
c9eb425ed1
A number i64->bytes or f64->bytes renders is copied into the context allocator and outlives the frame that made it
2026-09-25 11:47:01 +07:00
cb83014715
(clone xs) copies any slice's elements into a block from the context allocator or a named one, through the lowering (bytes s) uses
2026-09-25 11:40:42 +07:00
c6f0dd5450
A dev build fills a Vec's old buffer with 0xDEADBEEF when a push moves it, so a stale slice reads a value nobody wrote
2026-09-25 11:36:59 +07:00
680c12e686
A restart frame carries where its clause is written, its :report sentence and whether a handler-case made it up, and the break loop shows the first two and hides the third
2026-09-25 11:35:12 +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
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
0d771494a6
Merge branch 'master' into worktree-agent-a8f5ad274482eeb9c
2026-09-25 11:07:02 +07:00