1307 Commits

Author SHA1 Message Date
bf0a939093 A dyn negation of a non-number is refused by name, and a prelude function shadowed in a live session is a recorded gap 2026-09-25 12:07:32 +07:00
5c0698d749 (max-of T) and (min-of T) are a numeric type's limits, at a concrete type or a type variable the bound admits, and given a slice they are still the prelude's reductions 2026-09-25 12:00:42 +07:00
2ea47f91eb A program's function named as a prelude function takes the name over for its own file, with a warning, and the prelude's own calls keep the prelude's 2026-09-25 11:51:58 +07:00
c671bba490 (the T e) gives any expression its type, and an array literal nothing names is typed when its elements agree and a dyn vector when they mix 2026-09-25 11:47:28 +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
315125c677 A literal arm of an if, a cond or a match takes its type from the arms that are not literals 2026-09-25 11:32:54 +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
0b9ae9318e flan build and flan run of a file with no main say so and show one, rather than failing at the link 2026-09-25 11:26:13 +07:00
8b4c6f81df The IR and the disassembly name the source form each piece of code came from 2026-09-25 11:08:35 +07:00
56fdfabc84 A destroyed arena is to trap always, and a mixed array literal is to be a dyn vector 2026-09-25 11:08:28 +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
892989fe85 A container parameter its function grows is to be warned at 2026-09-25 11:03:56 +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
e158cd3a66 An intermittent x86 dyn-global failure after an allocating thunk is recorded 2026-09-25 10:58:51 +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
cc39ff2a01 A destroyed arena's allocator is reused by the next arena-new with its epoch kept, a stale dyn view names its site, and the spec fixes the Vec at five words in every build 2026-09-25 10:48:30 +07:00
a49ed2243a Merge branch 'master' into worktree-agent-a4be641f87966b149 2026-09-25 10:48:05 +07:00
0beafedd14 Dead code is gone, and the daemon says what to fix when a session cannot start or reach its program 2026-09-25 10:45:17 +07:00
146be41bd4 flan dev refuses at start a TMPDIR that is missing or too deep for a socket path, and a program with no main, and tells a program with no agent how to add one
The dropped (agent/start ...) note named the wrong cause rather than being unreachable: an over-long socket path fails the agent's bind while it is linked. That case is now refused before anything is built, and the comments, the TODO entry and the fixture say so.
2026-09-25 10:43:33 +07:00
12c3d07acf The x86 backend describes its frames in every build, and converts a u64 to and from a float as LLVM does 2026-09-25 10:43:20 +07:00
22401a6521 Merge branch 'master' into worktree-agent-acca0e216df6ca366 2026-09-25 10:42:50 +07:00
85a1368826 The Vec header keeps its epoch in every build, and the spec is to say five words 2026-09-25 10:41:50 +07:00
222dc0ae90 A loop, dotimes, match, macro, class or generic binding that starts with $ is refused too 2026-09-25 10:37:43 +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
aca3edff41 CLAUDE.md keeps only the rules the code cannot teach 2026-09-25 10:32:05 +07:00
3a2837c278 The indent table's docstring says what a with- and a qualified head do 2026-09-25 10:31:34 +07:00
83b244475a A refusal that suggests a fix suggests one that compiles, for vec-new, map-new and a near miss that is a value 2026-09-25 10:30:52 +07:00
5214343251 Every tracked .flan file reindents to itself 2026-09-25 10:28:28 +07:00
d1fd323043 The destroyed-allocator trap is recorded as having no site 2026-09-25 10:27:39 +07:00
6c9635cd53 A wide literal is refused for its range as an enum member, names the u64 cast where a dyn is wanted, and comes back wide from a macro 2026-09-25 10:26:03 +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
fc9f3059f9 C's calling convention for CFn waits with the callbacks 2026-09-25 10:23:28 +07:00
e16b5cbced A local's type is to print qualified by its package 2026-09-25 10:23:18 +07:00
0e7a9ab98f The x86 survey is to compare against LLVM at -O0 only 2026-09-25 10:21:28 +07:00
cf04bfc8fd A u64 converts to and from a float on x86 as it does under LLVM, across the top half of its range 2026-09-25 10:21:23 +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
dd160aa31b A return computes its value before it runs its defers 2026-09-25 10:19:09 +07:00
e85b2d3e98 A dev session is to run under the sanitizer on request 2026-09-25 10:19:02 +07:00
4d10f3c327 An allocator outlives the arena arena-destroy hands back, so a container made from it traps on a read of live memory 2026-09-25 10:18:31 +07:00
ea19dedb90 The corpus is to be swept once for leaks nothing owns 2026-09-25 10:18:17 +07:00
49a7860cc4 The truthiness retry is to reuse the first pass and stay linear 2026-09-25 10:16:45 +07:00
2b42cecded No test program is left from the move-only rule for Vec that nothing checks any more 2026-09-25 10:16:25 +07:00
e511174d3c No top-level value in the compiler goes unreferenced 2026-09-25 10:16:25 +07:00
3636f31cba A running program's reply never says it has not called (agent/start ...), because the agent's constructor has bound the socket before main 2026-09-25 10:16:25 +07:00
ddf7ca4974 The flan_dyn.h ABI has one implementation, flan_dyn.c 2026-09-25 10:16:02 +07:00
c1dcdeb5af A stop is to say whose it is from the frame that stopped 2026-09-25 10:15:47 +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
9dd7dd4137 The agent socket is to bind only for the daemon that launched the program 2026-09-25 10:14:48 +07:00