Coverage matrix
Two different things live on this page, and it's worth not confusing them. First: how much of each targeted feature area works. Second: how the compiler scores against full external test suites — a much harsher, much lower number.
Targeted feature areas
These count a feature that works for its core, documented case, mirrored from the project's own status matrix (the repository tracks a stricter “zero-caveat” number per page too). They say “the paths this compiler targets work” — not “it runs all TypeScript.”
External conformance
Run unfiltered against the public suites, the numbers are low — and shown anyway, because hiding them would be dishonest. This is a typed subset compiler: most of Test262 uses eval as its own assertion mechanism, and Node's tests are dynamic, untyped JavaScript against the entire platform. Those files don't fail so much as fall outside what this project set out to compile.
By compat flag
Every suite runs under both compatibility lanes. -compat=strict — The compiler's opinionated, safer-than-JS typed semantics — the default. Untyped-JS patterns it can't prove safe are rejected at compile time.
-compat=js — Best-effort vanilla-JS compatibility — a permissive superset of strict, for running untyped JavaScript as-is. Trades some of strict’s guarantees for reach.
Test262
The official ECMAScript conformance corpus, run unfiltered. Most of it is out of scope by design — eval-based assertions, Intl/Temporal, dynamic import — so the honest figure is the in-scope subset.
Web Platform Tests
The browser platform’s own test suite, run headless through a testharness shim. It is dominated by DOM/rendering tests this compiler doesn’t target, so the runnable-document figure is low by design — shown for the JS/encoding/URL corners that do apply.
TypeScript accept/reject
Agreement with tsc’s own accept/reject verdict over Microsoft’s compiler and conformance test cases — a measure of front-end fidelity, not runtime behavior.
Node.js test/parallel
How much of Node’s own behavioral test suite runs verbatim after a mechanical CommonJS→typed-ESM transform — a floor on Node fidelity, not a coverage claim.
Numbers are generated by the conformance tool (both lanes, full corpora) and sourced from conformance-platforms.json — never hand-edited, so they can't drift from the last run. Shown here for the primary platform; the conformance page tabs across every OS.
Language
| Area | Coverage |
|---|---|
| Async / Promise | 100% |
| Classes / OOP | 100% |
| Array methods | 100% |
| Number / Math | 100% |
| Type primitives | 100% |
| Object & collections | 100% |
| Type system features | 100% |
| Modules | 100% |
| String methods | 97% |
| JSON | 100% |
Web platform
| Area | Coverage |
|---|---|
| Networking (fetch, WS, SSE) | 100% |
| Streams | 100% |
| Web Crypto | 89% |
| Workers / Concurrency | 100% |
| Binary data & Typed Arrays | 100% |
| URL | 100% |
| Timers | 100% |
Node.js
| Area | Coverage |
|---|---|
| HTTP Server | 100% |
| events (EventEmitter) | 100% |
| path | 100% |
| os | 100% |
| Process / CLI I/O | 100% |
| File System (fs) | 90% |
| Other core modules | 94% |
Known sharp edges
- Compiling to native doesn't make
: numbera machine integer — it stays an IEEE-754 double, exactly as in JS. For real integer semantics reach for a sizedint8…uint64type (or a JSDoc width) — a KlainMainLang extension that standardtscdoesn't recognize. - Concurrency is cooperative — one fiber at a time per thread, no preemption.
- Nothing is dynamic — no
Proxy, no runtime property add/delete. - Whole-program compile only — there's no separate compilation or link step.
The repository's status pages and generated conformance reports are the source of truth.