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-
dynamicwarnings 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.sjstranslation — landed as@superjs/interop, exposed via thesuperjs translatecommandtsconfig.jsonpathsinheritance and npm package wrappers — next
Developer Tooling (In progress)
- VS Code extension — TextMate grammar highlighting (shipped)
- Watch mode —
superjs 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
| Stage | Status | Key Deliverable |
|---|---|---|
| Foundations + Compiler Core | Complete (v0.1.0) | Hand-written compiler, CLI, type checker, sum types, match, published to npm |
| Interop | In progress | .d.ts → .sjs translator, tsconfig paths |
| Developer Tooling | In progress | VS Code extension + watch shipped; formatter, linter, LSP next |
| Standard Library & Ecosystem | Planned | Result/Option/collections, framework integrations |
| LLVM Native | Future (v2.0) | Native binaries, WASM target |
Contributing
SuperJS is open source. See the GitHub repository to follow progress, file issues, or submit pull requests.