|
|
267e84bada
|
In a .fln buffer numbers are coloured, a colon is not part of a name, TAB keeps a line at a valid column, evil line objects take their newline, and C-x C-e and C-u C-c C-c understand match arms, conditions, clauses and comments
|
2026-09-25 20:14:51 +07:00 |
|
|
|
5d3a0fc316
|
Inferring a closure return and recompiling a _ caller after its callee changes wait behind .fln
|
2026-09-25 20:14:22 +07:00 |
|
|
|
241ea67fbb
|
A struct can be generic over types and lengths, and an error in a generic names the call that made it
|
2026-09-25 20:03:49 +07:00 |
|
|
|
f6384fdf38
|
Merge master into the generics lane
|
2026-09-25 20:03:34 +07:00 |
|
|
|
df00848910
|
A struct value's printed head comes from Render.head, which every renderer shares
|
2026-09-25 20:00:51 +07:00 |
|
|
|
ad40123b25
|
Master's error recovery and return types read off the body live together, and two ways out of an inferred body that cannot share a type are refused with both named
|
2026-09-25 19:58:31 +07:00 |
|
|
|
ff8b61e44c
|
A self-containing or runaway generic struct and a where clause over a length are each one error among the file's others, and a literal that does not fit a variable a typed field decided names that field
|
2026-09-25 19:57:58 +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 |
|
|
|
8c814b39c1
|
.fln files open in flan-fln-mode, which evaluates, moves over, indents and edits statements, clauses and top-level forms, and every Flan mode derives from flan-base-mode
|
2026-09-25 17:13:12 +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 |
|
|
|
d6e6a5dc0c
|
A program's global named as a prelude function or global shadows it for the file, with the shadowing warning a defn gets
|
2026-09-25 17:12:05 +07:00 |
|
|
|
ff88b9dad6
|
A defn whose return slot is _ (or a .fln fn with no arrow) takes its return type from its own body, recursion through such functions is refused by name, and a stale caller of one is told which line changed its type
|
2026-09-25 17:09:13 +07:00 |
|
|
|
20684c2d9f
|
A grown parameter the function returns, or whose field it reassigns, is not warned at
|
2026-09-25 17:06:19 +07:00 |
|
|
|
dbdaf66e29
|
A slice that bytes or clone copied is released with free, and a dev build traps a free through the wrong allocator
|
2026-09-25 17:05:08 +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 |
|
|
|
2f321fd061
|
Merge master into the generics lane
|
2026-09-25 17:03:13 +07:00 |
|
|
|
1e8086b4d3
|
The use-after-release checks to build are recorded
|
2026-09-25 17:00:16 +07:00 |
|
|
|
7c1cbd3a9f
|
Merge branch 'master' into worktree-agent-a9288676abb278ffb
|
2026-09-25 17:00:08 +07:00 |
|
|
|
9d0d42e467
|
A generic struct's copy prints as (Pair i32 {...}), crosses to C behind a pointer, names each use that made it when refused, settles literal fields at the wider type, and is laid out by stores and restarts that first name it
|
2026-09-25 16:59:11 +07:00 |
|
|
|
fc6e2f7dfb
|
The break window evaluates in a frame and steps through a function, and C-c C-c reports every error in the form
# Conflicts:
# test/test_dev.ml
|
2026-09-25 16:52: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 |
|
|
|
37938db7c2
|
A call through a failed local is not reported and a miscounted call's arguments are, eval-in-frame answers slotless frames and ended stops, flan dev links its own agent, and the daemon buffer colours only file:line:col diagnostics
|
2026-09-25 16:47:51 +07:00 |
|
|
|
43c7494d54
|
A Vec or Map field grown through a struct parameter taken by value is warned at the parameter, naming the field path and the (Ptr ...) that reaches the caller's
|
2026-09-25 16:40:39 +07:00 |
|
|
|
d5978aeab8
|
The dev daemon re-runs under two processes, knows whose break it is, guards its socket, runs under sanitizers, and unloads evaluated modules
|
2026-09-25 16:39:09 +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 |
|
|
|
00fd022330
|
A call through a null CFn parks a dev program in the break loop with NullCall named and continue takeable, on LLVM and x86
|
2026-09-25 16:37:05 +07:00 |
|
|
|
a95b4c288e
|
Merge branch 'master' into worktree-agent-a37bbb17fdd22924a
|
2026-09-25 16:35:58 +07:00 |
|
|
|
83dc716133
|
A program's or a session's defn named as a macro shadows the macro for its calls, with the shadowing warning a prelude function gets
|
2026-09-25 16:32:49 +07:00 |
|
|
|
730730a1a7
|
A relocated prelude refusal's note says only that the refusal is there, since the notes before it name which body
|
2026-09-25 16:23:19 +07:00 |
|
|
|
020392b064
|
Merge branch 'master' into worktree-agent-a55c4be9d199b8eb4
|
2026-09-25 16:22:58 +07:00 |
|
|
|
7b3e7f0efa
|
A program's global or type cannot change what the prelude means: a type variable wins over a global in a type position, prelude signatures pair against prelude types, and a global or type spelled like a built-in type is refused
|
2026-09-25 16:22:27 +07:00 |
|
|
|
f32f88413e
|
Merge branch 'master' into worktree-agent-a4f010dac78379ee2
|
2026-09-25 16:20:22 +07:00 |
|
|
|
b51b7d0a53
|
A refusal in a prelude generic's body stands at the call that asked for the copy, with the prelude's line as a note
|
2026-09-25 16:20:08 +07:00 |
|
|
|
0f9160f3bc
|
flan convert keeps comments beside their forms, and the dev loop reads code in the syntax the editor sends
|
2026-09-25 16:17:33 +07:00 |
|
|
|
30373ffda5
|
A converted comment stays with the form it was written beside when the printer reorders or splits bindings, the round trip checks each comment's form, and a snippet's first line sets its left edge
|
2026-09-25 16:17:12 +07:00 |
|
|
|
8eac6734f0
|
Merge branch 'master' into worktree-agent-a37bbb17fdd22924a
|
2026-09-25 16:15:40 +07:00 |
|
|
|
ea67e058bf
|
A generic over a generic struct calls another at the same struct variables, and a struct copy is a map key and a function-value parameter on both backends
|
2026-09-25 16:15:40 +07:00 |
|
|
|
78261fccda
|
The collector walks Map storage, arrays of strings or structs are map keys, map-keys and map-values are prelude generics, and spike/ is gone
|
2026-09-25 16:10:38 +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 |
|
|
|
8fe2a666a1
|
A refused if is answered from memory for the same condition, scope and expectation, so a refused or/and chain is checked in linear time
|
2026-09-25 16:09:31 +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 |
|
|
|
6c8f503ebf
|
A --two-process re-run checks the whole program before building it and refuses at a stale caller, and a change made while the child has ended waits in the session for the re-run
|
2026-09-25 16:08:13 +07:00 |
|
|
|
69d17a9d59
|
Merge branch 'master' into worktree-agent-aebbe657e5dc1f8ef
|
2026-09-25 16:03:19 +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 |
|
|
|
4b64dc5f65
|
Code-carrying dev requests name their syntax and starting line and column, so a .fln snippet sent from the middle of a buffer reads with the buffer's own locations
|
2026-09-25 15:57:09 +07:00 |
|
|
|
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 |
|