|
|
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 |
|
|
|
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 |
|
|
|
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 |
|
|
|
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 |
|
|
|
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 |
|
|
|
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 |
|
|
|
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 |
|
|
|
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 |
|