Skip to main content
Version: Next (unreleased)

Xisto

Xisto is a strict subset of TypeScript, compiled ahead of time to small native executables. You write TypeScript under a few stricter rules; xisto build checks it and produces one executable that starts at once, uses little memory and needs nothing installed to run. The same source still runs on Node.

$ cat hello.ts
const xs: number[] = [1, 2, 3];
console.log(`hello ${xs.reduce((a, b) => a + b, 0)}`);

$ xisto build -o hello hello.ts && ./hello
hello 6

Three numbers​

Measured on an Apple M4, November 2026, against Node v26.12.0. Method, raw files and the cases where Xisto loses are in Benchmarks.

WhatXistoNode
Peak memory of a small program (fib)1.3 MB66.1 MB
HTTP hello, /ping (oha, 64 connections)231,097 req/s136,913 req/s
Startup of a real NestJS app (Conduit)21 ms268 ms

What to expect​

  • It is early (0.x). The compiler and the standard library run real services, and the test suite compares every program's output with Node's byte for byte, but expect gaps and breaking changes between versions.
  • There are rules. Types are real at run time, null is the only empty value, == never coerces, and any is a checked, slower dynamic path. Each rule exists so the types can become native code. See The language.
  • The differences are written down. Every place where Xisto behaves differently from TypeScript on Node is in the divergence table. Read it before you port anything.
  • npm packages come as ported source packages. NestJS, TypeORM, pg, express, rxjs and others are ported with the same API in xistolang/packages.

Map of the docs​