Skip to content

Roadmap

SuperJS ships a hand-written compiler that owns its full pipeline today, and is growing outward into interop, developer tooling, a standard library, and an eventual native backend. Development is organized into stages — the authoritative per-stage plans live in specs/roadmap/.

Foundations & Compiler Core (Complete, v0.1.0)

Status: Published to npm (@superjsorg/cli, @superjsorg/compiler)

The compiler is written from scratch — no Babel, no TypeScript at runtime. An early Babel-based prototype validated the language design and was then fully replaced by this hand-written pipeline.

What shipped

  • Hand-written pipeline: lexer → recursive-descent + Pratt parser (with error recovery) → bidirectional type checker → SJS-IR lowering → JavaScript codegen
  • Type checker
    • Sound null safety with control-flow narrowing (SJS-E001 / SJS-E003)
    • Type mismatch detection on assignment and return (SJS-E002)
    • Sum types + exhaustive match (SJS-E007), structural object types, generics with inference
    • Strict mode promotes implicit-dynamic warnings to errors (SJS-W001)
  • CLI: superjs build (--out-dir, --source-map, --watch, --no-cache), superjs check (--format pretty|json), superjs explain, superjs init, superjs doctor
  • Deterministic output with Source Map v3 generation and a persistent incremental build cache
  • Config file: superjs.config.json; JSX on by default (automatic or classic runtime)
  • Distributed as self-contained, zero-dependency npm bundles with build provenance

Interop (In progress)

Making SuperJS consume the existing JS/TS ecosystem.

  • .d.ts.d.sjs translation — landed as @superjs/interop, exposed via the superjs translate command
  • tsconfig.json paths inheritance and npm package wrappers — next

Developer Tooling (In progress)

  • VS Code extension — TextMate grammar highlighting (shipped)
  • Watch modesuperjs build --watch (shipped)
  • Formatter & linter (17 rules), LSP server with hover/go-to-definition — next

Standard Library & Ecosystem (Planned)

  • Typed Result, Option, Iterator, and collections
  • React wrapper, Node.js types, and bundler/test-runner integrations

LLVM Native Backend (Future, v2.0)

An optional native compilation path. The SJS frontend feeds a backend targeting LLVM, with monomorphized generics, standalone native binaries, and a WebAssembly target. See the v2.0 vision.


Stage Summary

StageStatusKey Deliverable
Foundations + Compiler CoreComplete (v0.1.0)Hand-written compiler, CLI, type checker, sum types, match, published to npm
InteropIn progress.d.ts.sjs translator, tsconfig paths
Developer ToolingIn progressVS Code extension + watch shipped; formatter, linter, LSP next
Standard Library & EcosystemPlannedResult/Option/collections, framework integrations
LLVM NativeFuture (v2.0)Native binaries, WASM target

Contributing

SuperJS is open source. See the GitHub repository to follow progress, file issues, or submit pull requests.