864 Commits

Author SHA1 Message Date
2752d57655 A dev daemon started by a test dies with it, a daemon whose socket is gone ends cleanly, the Emacs daemon buffer asks before it is killed and closes the session, and a program's agent socket lives under TMPDIR and goes on a trap or fatal signal. 2026-09-26 13:13:39 +07:00
1243504ac6 .fln has let groups, grid[r c] indices and a not prefix, and a binding lines up under the let's first name. 2026-09-26 13:01:34 +07:00
28d4c0f8dc A number literal takes its type from its uses inside the function, an unconstrained float literal is an f64, and a dyn use asks for the dyn width. 2026-09-26 12:41:54 +07:00
d415d5da15 .fln comparison chains may mix operators pointing one way, such as 0 <= r < rows, and evaluate every operand once in order. 2026-09-26 12:35:30 +07:00
b1cba196b9 A .fln comparison chain may mix < with <=, or > with >=, reading as the and of its tests with every operand evaluated once, left to right, as a < b < c is, and the printers write that and back as the chain. 2026-09-26 12:19:03 +07:00
349e2d7e72 Merge master 2026-09-26 12:09:56 +07:00
66ea0b3abe Merge branch 'master' into worktree-agent-ab88d16e8e6fbfe15 2026-09-26 12:05:38 +07:00
6d8ced2ba3 A dyn text becomes a str as its own bytes, a dyn view becomes its own storage, and a dyn vec or map becomes a checked copy in a [const T], a fixed array or a struct, while a writable [T] is never a copy. 2026-09-26 11:48:01 +07:00
bcdb6250a9 A bit operator's operand of any shape that answers a bool gets the and, or or not hint, found by a check that is thrown away. 2026-09-26 11:46:32 +07:00
c7fb0e5422 Literal locals fed through do, let and if arms share one type without extra rounds, a chain past the rounds names the local to annotate, a restart's conversion fix shows the argument as written, and a name's lookup is answered from the last one under the same scope 2026-09-26 11:14:15 +07:00
17ff7cb348 A binding ends its let's bindings only when its value ends in an open block, the message names the let's own line, and Emacs offers no binding column after such a value 2026-09-26 11:11:32 +07:00
3d5caf25ae Merge master 2026-09-26 11:06:05 +07:00
5712d4bdc0 A bool operand of a bit operator is refused with its and, or or not hint in a whole-file check, whichever operand it is. 2026-09-26 11:04:32 +07:00
c4452fc500 Merge master into the bit operators lane 2026-09-26 11:04:32 +07:00
a546bde112 Merge master 2026-09-26 10:56:30 +07:00
473bf0a2b7 The bit operators are && || ^^ ~~ in .fln at Python's precedence, take integers only on typed and dyn values, and popcount, leading-zeros, trailing-zeros and the rotations exist on both backends. 2026-09-26 10:49:54 +07:00
23663c4773 An unconstrained float literal is an f64, literal locals settle by merging the locals that feed each other, and a restart refused for a number type writes the conversion 2026-09-26 10:45:46 +07:00
17a7afb297 The .fln reader takes loop and recur as names wherever the Lisp loop's spellings are not written, and the convert refusal lists its lines in a sentence of their own. 2026-09-26 10:43:10 +07:00
63dc853121 A binding whose value is a block ends its let's bindings, a tab between let and its name is refused, and only a binding-shaped line under a let gets the alignment advice 2026-09-26 10:39:05 +07:00
b5380b4750 Merge master 2026-09-26 10:33:04 +07:00
fc463cf320 The .fln reader refuses loop and recur, flan convert refuses a .flan file that uses them, and every loop outside recur.flan is a while or until. 2026-09-26 10:31:53 +07:00
207f5d7bad Merge master 2026-09-26 09:59:00 +07:00
0e9d647aca A let's binding lines must line up with its first name, may name an operator word in parentheses, are refused clearly after a block value, and at the top level may be a typed name alone 2026-09-26 09:56:54 +07:00
497c9f470f A dyn view's record is collected with it, a dev build ties a view of a stack address to its owning frame and finds a heap block through an address index, and a view's traps name the field, the operation and the site. 2026-09-26 09:54:45 +07:00
5f1b9b9e7e An unconstrained float literal is an f32, and an integer literal meeting a float literal meets it at the float 2026-09-26 09:49:51 +07:00
163c224d0d Merge master 2026-09-26 09:49:41 +07:00
697c016231 Merge master 2026-09-26 09:29:40 +07:00
d519ca81dd Merge master into the views lane 2026-09-26 09:29:15 +07:00
36156c9de9 A dyn value takes .field and [:key] as get and put, and a class instance refuses a slot it does not have 2026-09-26 09:28:25 +07:00
12cd4feff0 A .fln let takes more bindings on the lines indented under it, a top-level one more globals, and flan convert writes runs of short bindings that way 2026-09-26 06:26:36 +07:00
0a1f5a3483 The literal-conflict fix spells a whole float with its point, and the measuring switch says what it is for 2026-09-26 06:26:24 +07:00
5177586848 A number or character literal bound by let or loop takes its type from its uses in the function 2026-09-26 06:22:25 +07:00
f39612bc7c Code a request sends without :syntax is read in its file's syntax, or the program's when it names none, and a dotted dyn name points to its accessor. 2026-09-26 06:21:07 +07:00
f91ed8ad27 Indices in .fln separate like a vector's elements, by spaces between single values or by commas 2026-09-26 06:19:59 +07:00
e79d9c0d07 Merge master into the views lane 2026-09-26 06:18:31 +07:00
d5d9dc1538 A view describes a struct from its own program's table, and an Option's payload is bound to a slot before it is viewed. 2026-09-26 06:17:59 +07:00
7953376e4e Any typed container of numbers, bools, str, structs, arrays, slices or Vecs crosses into dyn as a view from any storage, and a dev build traps on a view whose frame returned or whose block was released. 2026-09-26 06:10:11 +07:00
b1404727b6 A lambda with a block prints wherever it is last in its brackets, an element after a block lambda is refused as not last, and TAB offers no column of a block whose brackets have closed 2026-09-26 06:09:47 +07:00
2dbc8539e5 Merge branch 'master' into worktree-agent-af3c12884ed5f2255 2026-09-26 06:09:13 +07:00
4eefd25df9 A class instance refuses a key its class does not declare, read or written, through get, put, .field and [:key]. 2026-09-26 06:02:51 +07:00
1022b7c7f9 Merge branch 'master' into worktree-agent-af3c12884ed5f2255 2026-09-26 05:54:17 +07:00
6f6e01db06 A bare def is answered with the let to write, and a generic missing its arrow is refused at the end of its line. 2026-09-26 05:54:01 +07:00
605eb97e75 A dyn value's .field and [:key] read as get and assign as put. 2026-09-26 05:52:56 +07:00
895828992e Merge branch 'master' into worktree-agent-ae8e466a60e7cf35a 2026-09-26 05:44:39 +07:00
a8f98c86f1 A let in a form cut from inside a body stays local when the editor sends it, and the printer forgets one file's class names before the next. 2026-09-26 05:44:03 +07:00
702ebdc9c5 In a .fln file a top-level let is a global and def is refused, while a let in a block or an evaluated expression stays local. 2026-09-26 05:39:59 +07:00
cde4f2ab1b A .fln file writes classes and methods as class, generic, multi and method headers, and flan convert prints them so. 2026-09-26 05:39:59 +07:00
905a4c53be A struct or union fits on one line, struct Pt(x: i32, y: i32), and flan convert writes that form when it fits. 2026-09-26 05:39:59 +07:00
de0c8791f3 A variable named like a header or clause word, data = 3 or on += 1, is read and printed as an assignment. 2026-09-26 05:39:59 +07:00
72c73117d6 A .fln file writes a type alias as type Row = Vec(i32), and flan check prints nothing for a file that checks unless given --defs. 2026-09-26 05:39:59 +07:00