1781 Commits

Author SHA1 Message Date
8fe8062a0c Hand-written .fln programs exist, flan convert writes corpus-shaped paren text, and several .fln diagnostics suggest .fln spellings 2026-09-25 23:26:53 +07:00
3e504deb6f An arm is checked at the other arm's type first and meets it at the join only when refused there, so every program master accepts keeps its type and value while arms still meet in either order 2026-09-25 23:10:16 +07:00
c1beb602a7 A .fln let is always flat, and flan convert writes flat lets, renaming a shadowed name instead of nesting 2026-09-25 23:01:11 +07:00
0e26af2107 A macro body counts as run in order only when nothing outside its templates depends on how the body splits into arguments, a let whose longer scope would reach a macro naming it stays in a do: block, and converted programs with shadowed names and macro bodies print what their paren originals print 2026-09-25 23:00:27 +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
bdda16a461 flan run's program dies with flan, and a program killed by a signal ends flan run with 128 plus its number 2026-09-25 22:57:02 +07:00
69ac194ba7 An editor socket path too long to connect to is linked at a short path the Emacs client computes the same way 2026-09-25 22:54:44 +07:00
6583392504 A prelude body moved by one live shadowing is compiled again when a later shadowing moves a call inside it 2026-09-25 22:51:02 +07:00
e18b28be3e Master is merged into the flat-let lane 2026-09-25 22:49:39 +07:00
319a3c78c4 Merge branch 'master' into worktree-agent-a46233a32d1912c78 2026-09-25 22:40:48 +07:00
eb08f1300d dev-parity keeps its pointer global named beside the prints, since a pointer prints without reading it 2026-09-25 22:40:04 +07:00
55ab1a98ae A macro whose definition splices its body into a do, and comment, count as bodies run in order where the .fln printer writes a let flat, and a struct-pattern let renames and flattens like a plain one 2026-09-25 22:39:50 +07:00
a14e633a21 A pointer's element type can be cast and a slice made from a pointer and a count with slice-from 2026-09-25 22:35:34 +07:00
a39d96149d slice-from-ptr is refused with the slice-from call to write, and the pointer cast's const rule is documented as covering the outer pointer only 2026-09-25 22:35:24 +07:00
ccdadeeb6e A mark or a step spliced into a program that defines its own pause or step-point calls the prelude's 2026-09-25 22:34:28 +07:00
70b9040512 type-of answers a dyn value's kind as a keyword, and a class cannot be named after a built-in kind 2026-09-25 22:29:26 +07:00
d07c7b4e2c A prelude function shadowed live keeps the prelude's own calls on the prelude's body, as a rebuild does 2026-09-25 22:28:58 +07:00
41273c9d22 Dyn and typed containers print without a space after the bracket, and a value that cannot cross into dyn gets a fix that compiles 2026-09-25 22:27:53 +07:00
35aa5a8c0f A refused dyn view of a global names its own defining form as the fix, and every dyn fix is spelled in the syntax the code was written in 2026-09-25 22:27:36 +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
c41d27ec45 A frame whose slots are all the compiler's own is compared against the slot count its record carries, so a frame that prints keeps its globals and locals 2026-09-25 22:26:11 +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
285bb1047f The half-write test reports a session that closes under a question as a failure instead of ending test_dev 2026-09-25 22:24:08 +07:00
0b80c1956f A let in .fln is always flat and a line indented under one is refused, the printer renames a let's name a later statement means otherwise or puts the let in a do: block, and a one-argument and/or prints as its argument 2026-09-25 22:23:37 +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
c1b21edaf4 The break loop's typed-value walk prints arrays and slices as [1 2 3], matching evaluation 2026-09-25 22:18:45 +07:00
e80411d283 type-of answers a value's kind as a keyword or an instance's class name, and a class named like a kind is refused. 2026-09-25 22:18:36 +07:00
47cc213b42 Return types read off the body and the converter's latest fixtures live together 2026-09-25 22:14:32 +07:00
ff0679cbb1 An if's else arm is checked once and brought to the join, an abandoned check undoes only what it wrote, and an arm refused at the join says why at its value 2026-09-25 22:14:06 +07:00
a1e5e39dba Master's changes are merged into the dyn printing lane, with its converter fixture 2026-09-25 22:11:04 +07:00
2b35085358 flan run removes its executable and work directory when it is sent SIGTERM or SIGHUP, and the one-shot commands' empty work directory is gone from TODO.org since the exit handler already removes it 2026-09-25 22:10:07 +07:00
d16fe79b79 A refused dyn view of a parameter names its declaration as the fix 2026-09-25 22:09:44 +07:00
8aaf33589e type-of is queued 2026-09-25 22:04:28 +07:00
5adabd9f3c Dyn text is immutable and counts characters, str counts bytes 2026-09-25 22:03:26 +07:00
85283c2e87 Any typed container crosses into dyn as a view 2026-09-25 22:02:04 +07:00
c3d36b5108 The inspector reads memory directly, a trapped read shows as trapped without a break, and requests take effect in the order the client sent them 2026-09-25 22:01:53 +07:00
4f060bb648 Dyn and typed containers print as [1 2 3] and {:a 1}, a refused dyn view names the value and a dyn fix in the file's own syntax, and a dyn function whose body gives no value says so by name 2026-09-25 22:01:40 +07:00
cf8fea9b3c docs/BUILT.md says a restart is taken after the jobs queued before it. 2026-09-25 22:01:15 +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
af6e00bc2a = compares bools, a match over a bool takes true and false, and a match over a dyn takes keyword arms 2026-09-25 22:00:51 +07:00
1cfe97548a test/syntax/algorithms.fln is the converter's fixture again 2026-09-25 22:00:44 +07:00
cecbec6c71 A slice from a C pointer and a pointer cast are queued 2026-09-25 22:00:13 +07:00
cc45b8a55d Dyn has a character type 2026-09-25 21:57:37 +07:00
2dec18b87f The typed text types are str and String 2026-09-25 21:54:26 +07:00
d8ece682d3 Merge master 2026-09-25 21:51:08 +07:00
e81191d770 A bool returned from C reads as its low bit on --x86 as on LLVM, and the where-and fix and the x-1 hint follow the code's own syntax rather than its file name 2026-09-25 21:50:56 +07:00
bb800903d8 Return types read off the body and frame-escape refusals live together 2026-09-25 21:49:14 +07:00
7bc04cc434 Flan is dyn unless annotated 2026-09-25 21:43:21 +07:00
c3a05d7447 The site says a match over a bool needs no _ arm 2026-09-25 21:37:44 +07:00
18581a452c = and != compare bools, a match over a bool takes true and false arms, a match over a dyn takes keyword arms, and where predicates joined with and are refused with the comma or vector form as the fix 2026-09-25 21:35:31 +07:00