|
Important
|
This document is the single authoritative source for AffineScript feature
readiness. Where any other document ( |
Status vocabulary, used precisely:
| Term | Meaning |
|---|---|
enforced |
Wired into the CLI pipeline and gates real user programs today. |
works |
Implemented and exercised by the test gate; not necessarily complete. |
partial |
Implemented for common cases; known gaps documented in the row. |
declared-but-unwired |
Surface syntax and/or an internal module exists, but the feature is not enforced on user programs through the CLI. |
parse-only |
Surface syntax parses; no semantics behind it yet. |
absent |
Does not exist, regardless of what prose elsewhere claims. |
Gate baseline at reconstruction: opam exec --switch=. — dune runtest
--force = 260 tests, 0 failures (2026-05-19).
| Component | Status | Notes (truthed) |
|---|---|---|
Lexer |
works |
Full Unicode. Quantity-literal |
Parser |
works |
Menhir grammar, ADR-009 conformance. Stage B CLOSED:
#215 closed with the owner-ratified ADR-012 disposition — the residual
~68 S/R + state-401 R/R conflicts are an intentional won’t-fix (Menhir
resolves them correctly; the gate proves every parse is intended;
eliminating them is the contortion ADR-012 forbids). |
AST |
works |
All current language constructs represented. |
Name resolution |
works |
Module loader, |
Type checker |
works |
Bidirectional inference, effect rows, subsumption,
|
Effect system |
partial |
Pure/impure separation + effect polymorphism
enforced. Handlers: interpreter-complete; WasmGC dispatch is
|
Borrow checker |
partial — graph validation landed (CORE-01 pt 1) |
Place/borrow/move infra + use-after-move, conflicting-borrow,
move-while-borrowed, lambda-capture. CORE-01 part 1 (PR #240, Refs #177,
gate 263/263): borrow-graph validation wired — |
Quantity / affine types |
enforced |
QTT semiring in |
Interpreter |
works |
Pattern matching, control flow, effect handler dispatch,
|
Traits |
partial |
Registry, |
Dependent / refinement types |
parse-only |
|
Row polymorphism |
partial |
Records + effect rows in typecheck/unify; not fully exercised end-to-end. |
Formatter / linter |
works |
AST pretty-printer; 4 lint rules. |
LSP |
works |
Phases A–D: hover, goto-def, completion, JSON-RPC
|
The compiler emits to many targets. Maturity is not uniform; do not claim "N production backends". Order is by enforcement depth.
| Target | Status | Notes |
|---|---|---|
WASM (core) |
works |
Cross-module imports + |
WASM-GC |
partial |
Variant-with-args + same-arity |
typed-wasm |
contract, narrow |
Not a backend flag — a discipline-bearing
shape over the WASM output: the |
Deno-ESM |
works |
Direct AST→ES-module transpiler ( |
Node-CJS |
works |
|
Julia, JS, Rust, Lua |
works (transpile) |
|
C, WGSL, Faust, ONNX, OCaml, Bash, Nickel, ReScript, LLVM, Verilog, Gleam, CUDA, Metal, OpenCL, MLIR, Why3, Lean, SPIR-V |
partial / experimental |
Code-generators exist and build. Coverage varies widely; treat as
experimental unless a row above promotes them. Any non-Wasm backend with
no |
stdlib ~95%; 19/19 stdlib files compile resolve→typecheck→codegen with the
AOT CI gate (test/test_stdlib_aot.ml) since Stage C closed 2026-05-18.
Portable primitives Http (#160) / Json (#161) / Dict-Map (#162) are the
current authoring frontier. A few primitives remain extern builtins.
-
Not "production-ready". Alpha. The borrow checker has a known soundness gap (CORE-01).
-
Not "N production backends". One reference target (WASM), two solid JS-host targets (Deno-ESM, Node-CJS), the rest experimental.
-
typed-wasm is not an AffineScript subsystem. It is a separate, language-agnostic target with its own repo, proofs, and other producers (ephapax). AffineScript is one producer among several.
-
The satellite ecosystem is mostly scaffold/skeleton — see the satellite registry in
ECOSYSTEM.adoc.affinescript-tea/-dom-loader/-cadrewere imaginary until the #175 scaffolds;-dom/-pixijsare skeletons.
Any PR that re-introduces backend-breadth, "production-ready", or
stdlib-percentage over-claims must be rejected (DOC-01..09 / issue #176;
Hypatia/gitbot DOC-FORMAT/DOC-DEDUP rules). Update this file in the same
PR as any capability change; STATE.a2ml mirrors, it does not lead.
-
ECOSYSTEM.adoc — the spine, the real AS↔typed-wasm contract, the satellite registry, the Stage A–E definitions, INT-01..12.
-
TECH-DEBT.adoc — the coordination ledger.
-
hyperpolymath/typed-wasm— the target spec (separate repo).