|
|
25e303caf4
|
Master's indented reader is merged, and its x += v over a place with a call in it reads as update, evaluating the place once
|
2026-09-25 15:56:51 +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 |
|
|
|
8200120bf3
|
flan convert keeps comments and number spellings in both directions, and a .fln message quotes the text as written, with let-bound match, if and block calls read as values
|
2026-09-25 15:47:29 +07:00 |
|
|
|
9a91440486
|
C-c C-s installs a defn that stops before each form of its body, and the break buffer steps it with s and runs the rest of the call with c
|
2026-09-25 15:43:24 +07:00 |
|
|
|
d46067962d
|
A Vec or Map parameter the function grows with push, reserve or put is warned at the parameter, naming the (Ptr ...) that reaches the caller's container
|
2026-09-25 15:41:42 +07:00 |
|
|
|
d0fc036bba
|
flan dev --sanitize builds the host under ASan and UBSan on LLVM, refuses --x86 by name, and the sanitize sweep drives a real session through reloads and breaks
|
2026-09-25 15:39:00 +07:00 |
|
|
|
a615e4ecfc
|
The leak sweeps have switches, a C source that includes the dyn header is recompiled when the header changes, and the map-remove and map-keys programs free what they allocate
|
2026-09-25 15:38:02 +07:00 |
|
|
|
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 |
|
|
|
17f0358e92
|
A .fln file is read as indented syntax into the same forms, and flan convert prints a program in it
|
2026-09-25 15:35:42 +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 |
|
|
|
8dc90416d4
|
The daemon's buffer draws errors, warnings and notes in compilation's faces and the program's own output in a face of its own
|
2026-09-25 15:14:23 +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 |
|
|
|
d6621827b3
|
A read-only slice's diagnostics suggest clone where clone accepts the type
|
2026-09-25 14:31:36 +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 |
|
|
|
bb4705b7e0
|
An allocator is two words and dies with its arena, clone copies a slice, and quick formatting uses a per-frame temporary allocator
|
2026-09-25 14:26:45 +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 |
|
|
|
22d2a4cfb2
|
An indented surface beside s-expressions is specified as a second reader chosen by file extension
|
2026-09-25 14:21:51 +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 |
|
|
|
f04cd18c0a
|
A session's evaluated modules are recorded as never unmapped
|
2026-09-25 14:06:06 +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 |
|
|
|
e6ea657263
|
The array literal given a slice type by the matches a read-only slice too
|
2026-09-25 13:41:49 +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 |
|