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
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
1d219b526c
Merge master into the typed class slots lane
2026-09-25 12:14:42 +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
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
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
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
2682214499
A defclass slot may declare a type that every store into it checks, and set writes a declared slot
2026-09-25 11:40:08 +07:00
3cb6cebdbe
(- x) negates a typed number, a type variable and a dyn, and a float's negation of zero is -0.0
2026-09-25 11:37:56 +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
de8e00314b
A string literal handed to a declare-c reaches C uncopied, and both backends write a NUL after every literal
2026-09-25 11:33:03 +07:00
5062052425
Raylib's strings, models, file lists and matrix stack are bound, and a dev build can name what is still loaded at exit
2026-09-25 11:28:02 +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
05d86b243f
A library resource is known by its identifying field, a Get or a consuming Load is counted as raylib means it, bare pointers are not resources, the report waits for FLAN_DEV_LEAKS, and a release build emits the code it did before the tracker
2026-09-25 11:27:41 +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
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
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
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
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
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
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
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
e511174d3c
No top-level value in the compiler goes unreferenced
2026-09-25 10:16:25 +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
0d629d791f
The array an index or a slice is taken of is rooted while its index runs, when it is a temporary
2026-09-25 09:30:41 +07:00
00f116ea29
Six small refusals and conversions say what the program wrote
2026-09-25 08:41:31 +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
85b9f35a66
(watch "name" v) renders any value into the watch table the way print renders it
2026-09-25 07:22:59 +07:00
aa5052e401
A dyn value an expression answers is the reply's value, not the program's output
2026-09-25 07:14:13 +07:00
6b9d1fa644
A cast of NaN or an infinity to an integer says so by name, on both backends
2026-09-25 06:58:06 +07:00
57fe91f303
Five records become one, and every citation lands somewhere
...
FIX.org, NEXT.md, DISCUSS.org, docs/DISCUSS.md and the session handoff at the
root are one TODO.org now: 293 entries under seven subsystem headings, each
carrying an org keyword that says where it stands. A DONE entry is a few lines
saying what was decided and what that rules out; the reasoning that would not
compress — the embedding spike and the four reports the hand-written x86
backend was built from — moved into docs/BUILT.md instead, and its entries
point there in one line.
Every entry was checked against the tree before it got a keyword, and the
prose was wrong in both directions. Things the deleted files called open were
built: the first-evaluation stall, main being redefinable, macro parameter
lists, the type-limit constants, the array constructors, the byte fills,
inc/dec, the discard's fontification, the Emacs buffers, rt_die's _exit, the
backtrace surface, and the acceptance failure that could print and still exit
zero. Things they called done were not: the backend reports' no-plan buckets
had gone stale in the other direction, the value-dependent defvar was
superseded rather than built, and macro-expansion source locations are on an
unmerged lane, so that entry is NEXT and names the branch.
Every comment that cited one of the five by name now cites a heading that
exists, in TODO.org or in docs/BUILT.md. The session reports under
docs/handoffs/ keep naming the files they worked on, because rewriting them
would falsify what those sessions did; each carries a note saying where the
content went.
2026-09-21 21:05:48 +07:00
d9bb882bbe
A dev build's main is reached through its cell like every other call
...
# Conflicts:
# FIX.org
# test/test_dev.ml
2026-09-21 18:29:02 +07:00