f6384fdf38
Merge master into the generics lane
2026-09-25 20:03:34 +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
2f321fd061
Merge master into the generics lane
2026-09-25 17:03:13 +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
020392b064
Merge branch 'master' into worktree-agent-a55c4be9d199b8eb4
2026-09-25 16:22:58 +07:00
8eac6734f0
Merge branch 'master' into worktree-agent-a37bbb17fdd22924a
2026-09-25 16:15:40 +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
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
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
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
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
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
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
d2f25a6e44
Merge branch 'master' into worktree-agent-a9288676abb278ffb
2026-09-25 13:35:10 +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
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
9ba99d7d5b
A dev build puts every closure handed to a named call on the collector's heap, since a redefinition can make the callee keep it
2026-09-25 12:55:56 +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
acec25f8a1
Merge master
2026-09-25 12:43:50 +07:00
d8945ae4ae
The address of read-only storage is a (Ptr const T), which nothing is written through and which a C const T * parameter takes
2026-09-25 12:43:04 +07:00
aedd50c646
Merge branch 'master' into worktree-agent-ac750a5e83cab251b
...
# Conflicts:
# lib/check.ml
2026-09-25 12:17:58 +07:00
23b144178a
A dev build's frame records the call it is in, so a backtrace names the call each caller is making and the expression the innermost one stopped at
2026-09-25 12:12:40 +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
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
6e8cc52bc7
Merge branch 'master' into worktree-agent-ad097f67134ba0552
2026-09-25 12:02:48 +07:00
3892f1ed34
Merge master
2026-09-25 11:50:29 +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
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
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
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
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
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
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
573076994e
Merge branch 'master' into worktree-agent-a0a469774e7454c6c
...
# Conflicts:
# lib/loc.ml
# lib/x86.ml
2026-09-25 10:59:24 +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
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
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
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
e511174d3c
No top-level value in the compiler goes unreferenced
2026-09-25 10:16:25 +07:00
96be1193c0
The x86 backend describes every frame it emits for an unwinder, in a release build as in a debug one
2026-09-25 10:07:40 +07:00
795ba945d9
A dyn value held beside a sibling that can allocate is rooted until it is used, on every backend
2026-09-25 09:32:34 +07:00
00f116ea29
Six small refusals and conversions say what the program wrote
2026-09-25 08:41:31 +07:00
6f0f4957f4
The break buffer, the inspector and the watch table show what a stopped program holds
2026-09-25 08:37:15 +07:00
ff744120fc
A release build's watch is only its value, next-error lets go of a stack that has resumed, and the frame a stop is in is always shown
2026-09-25 08:36:53 +07:00
0653f341d0
A dyn value held in an operand list is rooted while a sibling operand may allocate
2026-09-25 08:36:34 +07:00