|
|
267db2cd91
|
The typed read-only text type is spelled str, and string is refused with that fix.
|
2026-09-26 05:22:24 +07:00 |
|
|
|
40eb57a5b6
|
A dyn opened in any value position of an operand or an arm makes it meet as a dyn, found by the one walk of value positions the frame-escape check also uses
|
2026-09-26 00:09:42 +07:00 |
|
|
|
263214e639
|
A dyn opened by an expectation is marked where it is opened, so a bool or an Option beside a dyn stays a dyn, and an operand refused at a type is not asked again, so nested sums and matches check in linear time
|
2026-09-25 23:43:14 +07:00 |
|
|
|
2135f6d37f
|
Merge branch 'master' into worktree-agent-a46233a32d1912c78
|
2026-09-25 23:27:55 +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 |
|
|
|
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 |
|
|
|
319a3c78c4
|
Merge branch 'master' into worktree-agent-a46233a32d1912c78
|
2026-09-25 22:40:48 +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 |
|
|
|
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 |
|
|
|
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 |
|
|
|
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 |
|
|
|
a1e5e39dba
|
Master's changes are merged into the dyn printing lane, with its converter fixture
|
2026-09-25 22:11:04 +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 |
|
|
|
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 |
|
|
|
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 |
|
|
|
ed7258c80f
|
An abandoned check puts back everything it wrote into the environment, an else arm refused on its own terms is not blamed for the then arm's type, and a match's arms meet at the same join as an if's
|
2026-09-25 21:26:56 +07:00 |
|
|
|
4fa11f6360
|
Merge master
|
2026-09-25 21:11:31 +07:00 |
|
|
|
111ee66a4b
|
A match arm can be a number, char or string literal compared with =, over a number, a string or a dyn, with a _ arm required
|
2026-09-25 20:51:24 +07:00 |
|
|
|
c6a3259a62
|
A function that returns or stores into a global an address or slice of its own frame is refused, a dev free-all poisons any arena's released bytes and ASan sees them released, and @sanitize checks stack use after return
|
2026-09-25 20:40:21 +07:00 |
|
|
|
f6384fdf38
|
Merge master into the generics lane
|
2026-09-25 20:03:34 +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 |
|
|
|
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 |
|
|
|
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 |
|
|
|
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 |
|
|
|
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 |
|
|
|
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 |
|
|
|
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 |
|
|
|
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 |
|
|
|
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 |
|
|
|
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 |
|
|
|
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 |
|
|
|
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 |
|
|
|
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 |
|
|
|
5b8c4a68fa
|
into refuses to copy elements that own storage as they stand, and names (map clone) where clone takes the element
|
2026-09-25 15:22:44 +07:00 |
|
|
|
580d377847
|
A fixed array of strings or of structs is a map key, hashed and compared element by element
|
2026-09-25 15:21:30 +07:00 |
|
|
|
a41e43cbba
|
(slice d ...) over a dyn text answers a text, in the three spellings the typed slice has
|
2026-09-25 15:19:39 +07:00 |
|
|
|
6745aa7cb4
|
map-keys and map-values are prelude generics over any hashable key
|
2026-09-25 15:17:05 +07:00 |
|
|
|
b0323606fc
|
spike/ is gone: the x86 and JS surveys and the cells check live in test/, their probes in test/programs as x86-p* and js-p*, and dump.sh in tools/
|
2026-09-25 15:14:27 +07:00 |
|
|
|
680b8e7e59
|
A refusal inside a generic copy names each call that asked for it, a refused generic body is reported once, and a type variable prints with its $
|
2026-09-25 15:13:12 +07:00 |
|
|
|
610e9fcf9d
|
A parent's handler reads a name and message made in context/temp, whole and good until the frame ends, and the handler-case landing no longer holds a buffer of its own
|
2026-09-25 14:36:46 +07:00 |
|