c1018d87c5
Every reference to the removed .flan files is updated, generated.fln's stale banner line is regenerated, and the ported .fln files read like handwritten Flan.
2026-09-26 18:13:56 +07:00
5d5018011e
Vendor packages, examples/*, and sand.flan are ported from .flan to .fln, and flan generate-c writes generated.fln.
2026-09-26 17:07:04 +07:00
178c129c97
A .fln name carries no ? or !, and .fln has T?, x ?? d, x!, if let over a plain name and a?.b chaining.
2026-09-26 14:54:58 +07:00
7db1a81d1f
Builtins, prelude, vendor and raylib predicates are named with is- or has- and no name carries a ? or !.
2026-09-26 14:34:36 +07:00
6170f50061
The agent's comment on socket removal describes how a flan dev session removes it now.
2026-09-26 13:17:05 +07:00
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
49e6ac6512
Comments and the README example spell the text type str.
2026-09-26 05:39:56 +07:00
267db2cd91
The typed read-only text type is spelled str, and string is refused with that fix.
2026-09-26 05:22:24 +07:00
93e614e239
A frame that prints shows its globals, live prelude shadowing matches a rebuild, flan run cleans up and dies with flan, and a long socket path works from Emacs
2026-09-25 22:59:50 +07:00
24761dcf54
rl/update-texture-colors remains, as a one-line defn over the pointer cast
2026-09-25 22:27:21 +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
e0f71bba9c
A unix socket path too long for sun_path is bound and reached through its directory, so flan dev runs under any TMPDIR and -s path
2026-09-25 22:18:52 +07:00
c9b556a539
A restart is taken only after every job queued before it was accepted has run, and a choice waiting for an outer break survives a nested one, so a fix loaded just before retry is the body the retry runs.
2026-09-25 22:01:08 +07:00
d77d541360
A value that traps or faults while the inspector reads it shows as #<trapped: NAME> with no break pushed, a restart already accepted is taken before queued reads run, and a fault in the inspector's read names the read.
2026-09-25 21:27:24 +07:00
36c2d14c28
The inspector's reader prints a generic struct instance as (Pair i32 {…}) through Render.head, as the compiled renderer does.
2026-09-25 20:33:31 +07:00
72c35ff05c
A dyn value the inspector reads is rendered on the program's own thread, so one that traps or faults is a nested break and the daemon keeps answering.
2026-09-25 20:24:34 +07:00
ae23787c04
The inspector reads a stopped program's memory through the compiled layouts, so locals, inspect, at, condition and globals build no module, and the inspector reads a generic instance's type arguments.
2026-09-25 19:57:39 +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
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
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
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
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
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
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
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
f87d596bdc
A file with a broken form still starts a session, a package's macros expand bare from its file, a delivery a running program never polls for says so with a fix that compiles, and aborting an expression stopped in the park abandons it and keeps the session
2026-09-25 13:06:36 +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
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
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
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
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
8bebff61eb
Merge branch 'master' into worktree-agent-a8f88805fa4af49cf
2026-09-25 11:01:36 +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
22401a6521
Merge branch 'master' into worktree-agent-acca0e216df6ca366
2026-09-25 10:42:50 +07:00
ca031d6b38
Every tracked Flan file is what the indenter would write, and a with- head indents its body like a definer
...
clojure-mode decided each shape. A with- head, and a def or with- head behind a namespace, indents as a body; a qualified head finds its unqualified spec. The rest was hand formatting: cond and match results under their tests, ordinary call arguments under the first one, and lone ; continuation comments rewritten as ;; lines above the code.
2026-09-25 10:19:22 +07:00
f0fc66940f
The break loop's snapshot caps and its choice handoff are driven from inside the stopped thread by a poll hook
2026-09-25 10:15:35 +07:00
6fd456c0a2
A function declared with defn- is callable only from the files of its own package
2026-09-25 07:42:40 +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