fastC

compare · TypeScript

fastC vs TypeScript

TypeScript is the default language for agent-written application code today. fastC is the native, capability-typed alternative for the slice where a GC, a Node runtime, and the npm supply chain are dealbreakers.

TypeScript is, in practice, the most common language coding agents emit — huge training corpus, structural types, immediate feedback. Its types are erased at runtime, its authority is ambient, and its packages run install scripts from the largest and most-attacked registry on Earth. fastC keeps the thing TypeScript gave up — a type system that is actually enforced at runtime through contracts and capabilities — and drops the Node runtime for a native C11 binary. The comparison is honest only if we admit the overlap is narrow: TypeScript owns the web and most tooling; fastC wants the native-systems slice.

Row by row

Dimension fastC TypeScript Note
Execution model Compiled to C11, native binary Transpiled to JS; runs on V8 (Node/Deno/Bun) fastC ships no runtime; TS ships a JS engine.
Type enforcement Static + runtime (contracts, traps) Static only — types are erased at runtime fastC's types still hold when the program runs.
Memory model No GC — traps + contracts GC (V8) with pause characteristics fastC wins for predictable latency and audit.
Capability-typed I/O Yes — caps in signatures No — any module can fs / fetch (Deno flags are process-level, not type-level) fastC's structural wedge; Deno's sandbox is coarser.
No executable install scripts Yes — declarative manifest only No — npm postinstall runs arbitrary code npm install-time code is a standing attack surface.
Supply chain Vendored, sha256 + cosign + SLSA L3 npm — largest registry, recurring malware (event-stream, left-pad class) fastC wins on threat model decisively.
Contracts on public APIs Yes — @requires / @ensures No — runtime validation via zod/io-ts by hand fastC makes it a language obligation.
Deployment artifact One 53 KB static binary Node runtime + node_modules, or a bundled MB-scale blob fastC wins on size and reproducibility.
Ecosystem size 11-package fastc-core npm — the largest package ecosystem in existence TypeScript wins on breadth, by a lot.
Agent familiarity New; small training corpus Among the largest training corpora TypeScript wins — agents are extremely fluent.
Runtime performance Native, no GC V8 JIT — fast for a managed runtime, GC pauses fastC wins on compute and tail latency.
Where it runs Anywhere a C11 binary runs Anywhere Node/Deno/Bun or a browser runs Different deployment surfaces.

Where fastC wins

fastC wins where the artifact must be native and small, where GC pauses or a Node runtime are unacceptable, where I/O authority must be visible in the type, and where you cannot accept npm's install-time-code threat model. For an agent writing a systems daemon, a CLI, or a security-sensitive component, fastC turns 'can this code phone home?' into a signature-reading question.

Where TypeScript wins

TypeScript wins on ecosystem, web/full-stack reach, editor tooling, agent familiarity, and iteration speed. For frontends, Node services, build tooling, and the vast majority of application code agents write today, TypeScript is the pragmatic default and fastC is not competing for it.

The honest framing

TypeScript is the incumbent for agent-written app code and will stay that way. fastC is not a web language and never will be. The overlap is the native-systems slice — a CLI or service where you would reach for a Node binary but actually want a 53 KB static executable with capability-scoped I/O and no npm postinstall in the dependency graph.

← all comparisons