Skip to content
hyperpolymath edited this page May 26, 2026 · 2 revisions

AffineScript Wiki

AffineScript is a successor to JavaScript / TypeScript / ReScript — a practical, resource-safe application language with affine / QTT-style usage tracking, algebraic effects, row polymorphism, and a WebAssembly-oriented deployment story. The compiler is OCaml; the canonical surface syntax is .affine with a face system for alternative front-ends (jaffascript, rattlescript, lucidscript, cafescripto, pseudoscript).

Where to look

You want Read
What works today docs/CAPABILITY-MATRIX.adoc — authoritative per-feature readiness
State as of 2026-05-26 State snapshot (this wiki) or docs/STATE-2026-05-26.adoc
What's blocked on what docs/TECH-DEBT.adoc — committed coordination index
The spine + Stage A–E definitions docs/ECOSYSTEM.adoc
Phase 1 → 2 → 3 → 1.0 timeline ROADMAP.adoc
AI-agent guidance + disambiguation .claude/CLAUDE.md

Not to be confused with Ephapax

hyperpolymath/affinescript (this repo) and hyperpolymath/ephapax are separate languages. They share exactly one thing — both target hyperpolymath/typed-wasm — and otherwise have different ASTs, type checkers, compilers, and proof stories. The lexical overlap of affine is substructural-logic-family terminology, not a project relationship.

Specifically, Ephapax is internally dyadic and contains an ephapax-affine sublanguage — that sublanguage is NOT AffineScript.

Canonical disambiguation doc: https://github.com/hyperpolymath/nextgen-languages/blob/main/docs/disambiguation/ephapax-vs-affinescript.md

Headline state at 2026-05-26

  • Test gate: 327 tests, 0 failures.
  • Open issues: 21. Open PRs: 13 (post end-of-day admin-merge).
  • Stage A (core affine spine): CLOSED
  • Stage B (grammar): CLOSED
  • Stage C (stdlib AOT): CLOSED 2026-05-18
  • Stage D (CORE-01 + INT-01..04): ACTIVE — current frontier
  • Stage E (typed-wasm convergence): planned, blocked on D
  • The one named soundness gap — CORE-01 (#177) — substantially complete; Parts 1+2 + Slices A+B+C-light all LANDED. Residual = Slices C-full (Polonius, ADR-gated), C′ (loop), D (captured-linears), and ref-to-ref binding.
  • Mechanized proofs in this repo: 0. Soundness story is operational (borrow checker in lib/borrow.ml + CI gate). Cross-validation via typed-wasm contract is Stage E.

See the State snapshot for the full per-section breakdown.

Related repos


Last revised: 2026-05-26.

Clone this wiki locally