Jorge Turbica / blog · Blog ← Todos los artículos EN · Read in English
Lenguajes

tsrs, TypeScript en Rust: hasta 8 veces más rápido que tsc 7.0 y un 70 % menos de memoria

Cloudflare y VoidZero portan el compilador de TypeScript a Rust. Cómo se compara con TypeScript 7.1 beta y si compensa en tu CI.

Hasta 8 veces más rápido y un 70 % menos de memoria que TypeScript 7.0, con el mismo número de hilos de comprobación de tipos. Son las primeras cifras de tsrs, el port a Rust del compilador de TypeScript que Cloudflare, VoidZero y Max Schwenk (Owner.com) presentaron el 20 de octubre de 2026. Ese mismo día Microsoft publicó la beta de TypeScript 7.1, su compilador en Go, con mejoras de hasta 1,9x en sus propias pruebas. La pregunta para quien mantiene un monorepo en TypeScript es si merece la pena mirar ya fuera del compilador oficial.

Qué es tsrs

tsrs es un port fiel del compilador de TypeScript 7 (tsc) y de su servidor de lenguaje, escrito en Rust e incubado dentro de Oxc, la cadena de herramientas de la que ya salen Oxlint y Oxfmt. Tiene licencia Apache-2.0 y su código está en oxc-project/tsrs.

Cloudflare insiste en que no es un fork: el equipo de TypeScript sigue decidiendo el lenguaje y tsrs se compromete a seguir su implementación al pie de la letra. Lo hace en colaboración con ese equipo, y algunas optimizaciones de tsrs ya se han subido al compilador en Go.

Hay dos detalles que explican por qué aparece ahora:

  • La IA lo ha hecho viable. Según Cloudflare, de todos los intentos de portar TypeScript solo había cuajado el de Microsoft a Go, pero los modelos de frontera ya pueden hacer ports de este tamaño casi solos en cuestión de días. El mantenimiento también será con agentes: agentes que revisan cada día los cambios del repositorio oficial, abren issues y proponen el arreglo cuando la batería de pruebas detecta una diferencia. Es el mismo proceso que usan con Vinext frente a Next.js.
  • El objetivo es WebAssembly, no solo la velocidad. Un programa en Go compilado a Wasm arrastra su recolector de basura; Rust no. Con un compilador de TypeScript pequeño en memoria, Cloudflare quiere ejecutar entornos de desarrollo completos dentro de Workers, en el navegador o en dispositivos embebidos, y usarlo para reglas de lint con información de tipos en Oxlint.

Cómo probarlo

El paquete está en npm como experimental. La última versión, publicada el 19 de octubre de 2026, es 0.18.0-ts7.1.0-dev.20260929: el sufijo indica la versión de TypeScript de la que parte el port.

bash
npm install tsrs
npx tsrs

Para comparar con lo que trae Microsoft, la beta de 7.1 se instala junto al proyecto:

bash
npm install -D typescript@beta
npx tsc --noEmit

Lo útil es lanzar los dos sobre el mismo repositorio con --noEmit y comparar tiempo, memoria y, sobre todo, los diagnósticos que devuelve cada uno.

Las cifras, puestas en su sitio

Las comparativas entre ports de TypeScript se han llenado de números difíciles de reproducir, y Cloudflare lo reconoce: muchas usan máquinas más grandes u opciones distintas de las de serie. Por eso dice haber pactado con el equipo de TypeScript que sus pruebas comparen la misma configuración. Aun así, conviven tres saltos distintos que no hay que mezclar:

  • TypeScript 7.0 frente a 6: el paso de JavaScript a Go dejó el compilador, según Microsoft, en torno a 10 veces más rápido.
  • TypeScript 7.1 beta frente a 7.0: con 4 hilos y --noEmit, Microsoft mide entre 1,2x (bluesky, vscode) y 1,9x (mui-docs), y entre un 16 % y un 50 % menos de memoria. En la gráfica de Cloudflare la mejora llega a 2,5x.
  • tsrs frente a 7.0: hasta 8x y un 70 % menos de memoria con los mismos hilos. De serie, tsrs usa una configuración adaptativa según la máquina que gasta más memoria a cambio de ir aún más rápido.

Es decir: la comparación justa de tsrs es contra 7.0, y la versión que vas a tener en un mes es 7.1, que ya recorta parte de la distancia.

tsrs frente a TypeScript 7.1

tsrsTypeScript 7.1 beta
LenguajeRustGo
Quién lo mantieneOxc (VoidZero), Cloudflare, Max SchwenkEquipo de TypeScript (Microsoft)
EstadoExperimental, 0.18.0Beta; RC en un mes aproximadamente y final poco después
RendimientoHasta 8x frente a 7.01,2x–1,9x frente a 7.0
Memoria~70 % menos que 7.016 %–50 % menos que 7.0
API para herramientasAPI JS de TypeScript 7, inestableAPI nueva con typescript/sync, typescript/async, typescript/ast…
WebAssemblyObjetivo de diseñoNo es su foco
CompatibilidadDiferencias conocidas, como el orden de los diagnósticosEs la referencia
LicenciaApache-2.0Apache-2.0

Dónde gana tsrs y dónde pierde

Gana en lo que mide: tiempo de comprobación y memoria. En un pipeline de CI que corre tsc --noEmit sobre un monorepo grande, la memoria es a menudo lo que obliga a usar runners más caros, y un 70 % menos cambia el tamaño de máquina que necesitas. También gana si quieres compilar TypeScript donde Go encaja mal: un sandbox en Wasm, el navegador, un Worker.

Pierde en todo lo que no es rendimiento. Es un paquete experimental en 0.x, con diferencias reconocidas frente al compilador oficial y una fusión pendiente con tsc-rs, el port de Theo Browne, para cubrir todas las funciones, incluidos el servidor de lenguaje y los content mappers. Tampoco hay todavía una versión estable que siga a 7.1: el sufijo ts7.1.0-dev dice que va un paso por detrás de la beta.

La parte que más me interesa es el modelo de mantenimiento. Sostener un port fiel de un compilador con agentes que replican cada cambio del original es un experimento que, si funciona, servirá para mucho más que TypeScript. Si falla, lo notarás como un error de tipos que tsc no da, o al revés. Ese es el riesgo concreto: que tsrs y tsc no coincidan y tu CI apruebe código que el compilador oficial rechaza.

Veredicto

Para quién sí: equipos con monorepos donde la comprobación de tipos domina el tiempo o la memoria del CI, dispuestos a ejecutarlo como paso adicional junto a tsc y a comparar resultados. Y quien construye herramientas en Wasm o sobre Workers, que es para lo que nace.

Para quién no, todavía: cualquiera que necesite una única fuente de verdad en CI o que dependa del servidor de lenguaje en el editor. Para ellos el movimiento sensato es actualizar a TypeScript 7.1 cuando salga la versión final: es el compilador oficial, mejora entre 1,2x y 1,9x sin cambiar nada y recibe parte de las optimizaciones que salen de tsrs.

Fuentes

Jorge Turbica

Software Engineer y SRE. Escribo sobre los retos reales que me encuentro en producción.

Ver portfolio ↗