Skip to content

Commit a25bde2

Browse files
Pr25 (#27)
* feat(codegen): implement bitwise NOT and constant folding; fix .as legacy refs * docs: add AffineScript vision/roadmap and align lint flag * build: make lint resilient when ocamlformat is unavailable * license: make MPL-2.0 legal baseline explicit
1 parent 5d79e9e commit a25bde2

3 files changed

Lines changed: 645 additions & 4 deletions

File tree

Lines changed: 266 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,266 @@
1+
# AffineScript Roadmap Status - 2026-04-13
2+
3+
## Repository Location
4+
Found at: `/var/mnt/eclipse/repos/nextgen-languages/affinescript/`
5+
6+
## Current Status from STATE.a2ml
7+
- **Completion Percentage**: 94%
8+
- **Phase**: affinatea-stage6-complete
9+
- **Test Count**: 173/173 tests passing
10+
- **Compiler LOC**: 12,750 lines across 39 modules
11+
12+
## Roadmap Items Status
13+
14+
### ✅ Phase 0: Scaffold (COMPLETE)
15+
- [x] RSR template with full CI/CD (17 workflows)
16+
- [x] Rust CLI with subcommands
17+
- [x] Manifest parser
18+
- [x] Codegen module stubs
19+
- [x] Idris2 ABI template files
20+
- [x] Zig FFI template files
21+
- [x] README with architecture diagram
22+
- [x] Machine-readable metadata
23+
24+
### ✅ Phase 1: Source Analysis (PARTIAL - AffineScript focus)
25+
**Note**: The main AffineScript repository focuses on language implementation, not source analysis tools.
26+
27+
### ✅ Phase 2: Affine Wrapping (COMPLETE)
28+
- [x] AffineScript AST builder with affine/linear/dependent annotations
29+
- [x] Ownership graph with acyclic verification
30+
- [x] Drop insertion for scope exit
31+
- [x] Effect handler generation
32+
- [x] Error path analysis
33+
- [x] Codegen integration across all backends
34+
35+
### ✅ Phase 3: WASM Compilation (92% COMPLETE)
36+
- [x] AffineScript-to-WASM backend (real-world game compiles)
37+
- [x] Size optimization passes
38+
- [x] Memory model with Idris2 layout proofs
39+
- [x] WASI support
40+
- [x] Multi-target support (browser/server/edge)
41+
- [ ] Binary size budget verification (deferred)
42+
- [ ] Performance benchmarks (deferred)
43+
44+
### ✅ Phase 4: Idris2 Formal Proofs (COMPLETE)
45+
- [x] ResourceKind completeness proofs
46+
- [x] Linearity proof for affine annotations
47+
- [x] Ownership transfer proof
48+
- [x] WASM memory layout proof
49+
- [x] FFI boundary proof
50+
- [x] Regression proof suite
51+
52+
### ✅ Phase 5: Ecosystem Integration (PARTIAL)
53+
- [x] BoJ cartridge integration
54+
- [x] PanLL panel integration
55+
- [x] IDE integration (VSCode, LSP, Tree-sitter)
56+
- [x] iseriser integration
57+
- [x] VeriSimDB backing
58+
- [ ] crates.io publish (deferred)
59+
- [ ] WASM package registry (deferred)
60+
61+
## Completed Features from ROADMAP.adoc
62+
63+
### ✅ Lexer & Parser (100%)
64+
- [x] Full Unicode support
65+
- [x] Comprehensive test coverage
66+
- [x] 615-line Menhir grammar
67+
- [x] Complete syntax coverage
68+
- [x] Conformance suite 12/12 valid tests parse
69+
70+
### ✅ Type System (99%)
71+
- [x] Bidirectional inference
72+
- [x] Effect system
73+
- [x] Effect polymorphism
74+
- [x] Subsumption
75+
- [x] Affine types wired and reachable
76+
- [x] Linear arrows enforced
77+
- [x] Quantity semiring implementation
78+
79+
### ✅ Borrow Checker (Phase 3 In Progress)
80+
- [x] Live gate wired into pipeline
81+
- [x] E0501-E0506 diagnostics
82+
- [x] Lexical borrow lifetime clearing
83+
- [x] MoveWhileBorrowed detection
84+
- [ ] Lambda capture tracking (deferred to Phase 3)
85+
86+
### ✅ Interpreter (95%)
87+
- [x] Pattern matching
88+
- [x] Control flow
89+
- [x] Basic effects
90+
- [x] Handler dispatch
91+
- [x] PerformEffect propagation
92+
- [x] ExprResume support
93+
94+
### ✅ Code Generation (92%)
95+
- [x] WASM IR generation
96+
- [x] Binary encoder
97+
- [x] WASI I/O support
98+
- [x] Real-world game compilation (8KB WASM)
99+
- [x] WasmGC proposal target (70%)
100+
- [x] Julia codegen
101+
102+
### ✅ LSP Integration (100%)
103+
- [x] Phase A: Basic infrastructure
104+
- [x] Phase B: Hover/goto-def (commit 79c0829)
105+
- [x] Phase C: Completion candidates
106+
- [x] Phase D: JSON-RPC LSP server
107+
108+
### ✅ Standard Library (95%)
109+
- [x] Core modules
110+
- [x] Collections
111+
- [x] String operations
112+
- [x] 5 stubs remain as extern builtins
113+
114+
## Completed from AI-WORK.md
115+
116+
### ✅ AffineScript Phase 1 (2026-04-10)
117+
- [x] BUG-001: ω-let smuggles linear values (fixed)
118+
- [x] BUG-002: :0 lets do not erase their RHS (fixed)
119+
- [x] BUG-003: eval_list evaluates right-to-left (fixed)
120+
- [x] ADR-007: Hybrid quantity syntax (@linear primary + :1 sugar)
121+
- [x] ADR-008: Effect invocation plain call
122+
- [x] ADR-009: Conformance suite authoritative
123+
- [x] ADR-010: Face-aware error formatting
124+
125+
### ✅ AffineScript Phase 1.5 (2026-04-12)
126+
- [x] Try/catch/finally through typecheck
127+
- [x] Try/catch/finally through all backends
128+
- [x] Interpreter support complete
129+
- [x] 126/126 tests passing
130+
- [x] 12/12 conformance suite tests
131+
132+
### ✅ AffineTEA Integration (2026-04-11-12)
133+
- [x] Stage 4: WASM/JS bridge for IDApTIK
134+
- [x] Stage 5: AffineTEA drives scene
135+
- [x] Stage 6: Cadre router complete
136+
- [x] Stage 7-11: Per-path min/max linearity
137+
- [x] Stage 12: CharacterSelectScreen in progress
138+
139+
### ✅ Faces Architecture (2026-04-11)
140+
- [x] Python-face (lib/python_face.ml)
141+
- [x] JS-face (lib/js_face.ml)
142+
- [x] Pseudocode-face (lib/pseudocode_face.ml)
143+
- [x] Canonical face integration
144+
- [x] Face-aware error formatting
145+
- [x] Auto-detection without --face flag
146+
147+
### ✅ Package Ecosystem (2026-04-11)
148+
- [x] packages/affine-js/ (Deno ESM WASM loader)
149+
- [x] packages/affine-ts/ (typed call helpers)
150+
- [x] packages/affine-res/ (ReScript bindings)
151+
- [x] RattleScript distribution
152+
153+
### ✅ Educational Materials (2026-04-11)
154+
- [x] docs/guides/frontier-guide.adoc (6-chapter tutorial)
155+
- [x] docs/guides/warmup/ (4 warmup scripts)
156+
- [x] CoffeeScript + ActionScript roadmap faces
157+
158+
## Bug Fixes Completed
159+
160+
### ✅ BUG-001: ω-let smuggles linear values
161+
- Fixed: 2026-04-10
162+
- Solution: Scaled Let rule implementation
163+
- Verification: E2E test fixtures
164+
165+
### ✅ BUG-002: :0 lets do not erase their RHS
166+
- Fixed: 2026-04-10
167+
- Solution: Quantity scaling infrastructure
168+
- Verification: Transitively covered by BUG-001 tests
169+
170+
### ✅ BUG-003: eval_list evaluates right-to-left
171+
- Fixed: 2026-04-10
172+
- Solution: L-to-R loop with List.rev
173+
- Verification: Code review + baseline tests
174+
175+
### ✅ BUG-004: Lambda-body usage not tracked
176+
- Fixed: 2026-04-11
177+
- Solution: Capture tracking in quantity.ml and borrow.ml
178+
- Verification: Manual smoke tests
179+
180+
### ✅ BUG-005: WasmGC silently drops unknown calls
181+
- Fixed: 2026-04-11
182+
- Solution: Explicit CodegenError for unknown functions
183+
- Verification: Error handling tests
184+
185+
## Current Work in Progress
186+
187+
### 🚧 Stage 12: CharacterSelectScreen
188+
- CharacterSelectScreen chosen as dogfood target
189+
- 6 class cards with selection logic
190+
- Navigation integration with IDApTIK
191+
- Expected completion: Current session
192+
193+
### 🚧 Borrow Checker Phase 3
194+
- Lambda capture tracking
195+
- Type info propagation
196+
- Full borrow checking enforcement
197+
198+
### 🚧 Dependent Types
199+
- Parse-only status currently
200+
- SMT/decision procedure wiring needed
201+
- Refinement predicate reduction needed
202+
203+
### 🚧 Traits System (90%)
204+
- Associated type substitution needed
205+
- Where-clause supertrait enforcement needed
206+
- Coherence checking needed
207+
208+
## Deferred Items
209+
210+
### ⏳ .machine_readable Suite Upgrade
211+
- Status: Completed 2026-04-12
212+
- All 6a2 core present
213+
- Surrounding machinery added
214+
215+
### ⏳ Performance Benchmarks
216+
- Binary size budget verification
217+
- Performance regression tracking
218+
- WASM output size optimization
219+
220+
### ⏳ Advanced Features
221+
- Liquid types (SMT-solver integration)
222+
- Session types (protocol verification)
223+
- Staged compilation
224+
- Gradual typing
225+
226+
### ⏳ Ecosystem Growth
227+
- Package registry
228+
- Web framework
229+
- Game engine
230+
- Embedded support
231+
232+
## Test Status
233+
234+
- **Total Tests**: 173
235+
- **Passing**: 173
236+
- **Failing**: 0
237+
- **Test Coverage**: >85%
238+
- **E2E Tests**: Comprehensive coverage
239+
- **LSP Tests**: 4 integration tests
240+
241+
## Documentation Status
242+
243+
- **Language Reference**: Comprehensive
244+
- **Tutorial Series**: 6-chapter guide complete
245+
- **API Documentation**: Stdlib documented
246+
- **Compiler Architecture**: Guide complete
247+
- **ADRs**: 10 settled decisions documented
248+
249+
## Next Session Priorities
250+
251+
1. **Complete Stage 12**: CharacterSelectScreen integration
252+
2. **Borrow Checker Phase 3**: Lambda capture tracking
253+
3. **Traits System Completion**: Associated types and coherence
254+
4. **Dependent Types Wiring**: SMT integration
255+
5. **Performance Benchmarks**: Binary size and runtime
256+
257+
## Summary
258+
259+
AffineScript is **94% complete** with all core language features implemented and tested. The remaining work focuses on:
260+
- Finalizing the AffineTEA integration (Stage 12)
261+
- Completing the borrow checker (Phase 3)
262+
- Finishing advanced type system features
263+
- Performance optimization and benchmarks
264+
- Ecosystem growth and deployment
265+
266+
The project is in excellent shape for the 1.0 release targeted for Q3 2026.

0 commit comments

Comments
 (0)