Documentation

A fast TypeScript compiler with an explicit compatibility boundary.

tscc is an experimental TypeScript compiler written in C++17. It combines extremely low-latency transpilation with substantial language, project, CommonJS and TSX support, plus a bounded semantic checker that now spans generics, overloads, classes, control flow, richer collections, advanced types and JSX contracts.

Important: tscc is not yet a drop-in replacement for tsc. The docs distinguish what is implemented, what is tested, and what remains intentionally incomplete.
Emit

Broad TypeScript erasure plus runtime-bearing transforms.

Check

Bounded multi-file checking through generics, overloads, classes, CFG narrowing, collections, advanced types and JSX contracts.

Goal

A production-ready type-checking compiler built in measured slices.

Evidence

Current external gate: 600/0/18 across 618 cases, plus 12/12 multi-file/project and 7/7 JS++ interop.

Compilation pipeline

source files
   ↓
SourceFile + diagnostics
   ↓
lexer
   ↓
parser / structural ranges
   ↓
bounded semantic checker
   ↓
project/module graph
   ↓
module transform / TSX preserve
   ↓
JavaScript / JSX output

What already works well

Type annotations, interfaces, aliases, generics, assertions, enums, parameter properties, namespaces, overload declarations, ambient forms, modern type syntax erasure, project graph resolution, CommonJS transforms and TSX-preserve mode all have dedicated regressions. The exact support boundary is documented rather than implied.

Why this project exists

tsc is extraordinarily capable, but startup and project compilation can feel expensive when the desired operation is only “turn this TypeScript syntax into runnable JavaScript”. tscc explores how far a small native compiler can push that latency downward without building on the TypeScript compiler implementation.

The long-term question is larger: can that compact native foundation grow durable syntax, binding, types and diagnostics without sacrificing the latency advantage that made the experiment worth starting? The roadmap makes that destination and the staged route explicit.

Read next

Start with Getting started and the practical compiler examples. Use Language support, Modules & TSX and the compiler-preview contract as the current boundary. Battle tested explains the independent evidence.