plum
git clone https://git.pyrossh.dev/plum
A statically typed, imperative programming language inspired by rust, python
966bdab
— Peter John
2026-10-26T16:22:27+05:30
docs(plans): zig-generics build log
docs/plans/2026-10-26-zig-generics.progress.md
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
- start 1164924adc90c9110d7deb6e719a8e31ebe30dbc (zig-generics + game-language L1-L3)
|
|
2
|
+
- T1 ac67871; NOTE: Bool.toStr injected by the loader as a synthetic method — user rejected hardcoded loader preludes before; move into checker/codegen intrinsics (folded into T2)
|
|
3
|
+
- T2 a261b90; open: missing-method on primitive receivers lenient; chain line = calling decl line not statement
|
|
4
|
+
- QUEUED (user: fix them) after T3 commits, before T4: strict missing-method errors on primitive/builtin receivers in generic instantiations; called-at uses exact call expr line:col
|
|
5
|
+
- T3 3f7586e; open: generic fn as bare value unsupported
|
|
6
|
+
- fixes 0c02603: strict builtin methods + exact called-at
|
|
7
|
+
- T4 f1d676e; note: legacySyntaxHint is text-based, runs only after a failed parse
|
|
8
|
+
- T5+T6 ad8b044; open: enum/class fields can't hold fn types; closure calling fn-typed param -> 'unknown function'; closure literal as operator operand untested
|
|
9
|
+
- QUEUED T7 nullable sugar T? (after fn-field fixer, before L1)
|
|
10
|
+
- fix b952f81 fn-typed fields + closure fn-param capture (part of its code landed in 2485578 via coordinator's git commit -a — coordinator error, no loss)
|
|
11
|
+
- T7 dispatched 13:42
|
|
12
|
+
- QUEUED T8 near-free closures after L1-L3
|
|
13
|
+
- T7 12fd11a
|
|
14
|
+
- L1 1de3be3; open: List(...) const fails in codegen; const names global across modules (PI collision); nested call as arg to fn-typed field call -> 'unknown method Array.get'
|
|
15
|
+
- T8 ON HOLD: user must approve (bloat concern); exploring Pyret-style for-iteration instead
|
|
16
|
+
- L2 8d065f8; L3 (operators on value enums) covered by L2 test value_operator_add_mul + T5; limits: nested value-enum pattern destructuring, p.pos.x = via heap field rejected
|
|
17
|
+
- T8 redefined (user): for-forms with existing for := syntax + inline user forms (block params); NOT run yet
|
|
18
|
+
- tests fast passed=1 failed=0 skipped=0 seconds=21.4
|
|
19
|
+
- fixes 85ed0b1: fn-field nested arg, List consts (lazy global), nested value patterns, p.pos.x RMW
|
|
20
|
+
- T8 approved by user to run after duplicate-const fix
|
|
21
|
+
- dup consts 54233aa+80110ec; T8a dispatched
|
|
22
|
+
- T8a f359218; BUG to fix in T8b: 'if' clause skips when TRUE (must keep-when-true guard); ruling: iteration protocol length()+at(i)
|
|
23
|
+
- T8b 081a24a; concerns: inline fn bodies untyped (checked only after expansion); filter/find need List; for-expr only as assign RHS; pre-existing 'interpolating Unit' bug after List()+push in tests
|
|
24
|
+
- review 3ca3f26; residuals: closure param typed only by a later call fails; V2-style type names lex as const; match not an expression; f(for ...) parse error
|
|
25
|
+
- T9 2dd6150; residual: untyped List() passed to a free generic fn fails codegen
|