Introducción
La compilación de TypeScript siempre fue un cuello de botella en el ciclo de desarrollo de aplicaciones JavaScript modernas. A medida que los monorepos crecen y las estructuras de tipos se vuelven más complejas, el tiempo de respuesta del compilador (tsc) impacta directamente en la productividad del equipo. Si bien la migración del compilador original a Go (TypeScript 7.0) trajo mejoras significativas, la demanda de rendimiento sigue superando las opciones actuales. Cloudflare, junto con VoidZero y la comunidad de Oxc, presentó tsrs, una implementación del compilador de TypeScript escrita en Rust. Este port no busca fragmentar el ecosistema, sino ofrecer una alternativa de alto rendimiento que aproveche las ventajas de seguridad de memoria y eficiencia de Rust, permitiendo ejecutar entornos de desarrollo completos en espacios antes inviables, como navegadores o dispositivos embebidos.
La iniciativa surge de la necesidad de reducir la latencia en los bucles de compilación y despliegue. Los benchmarks iniciales muestran resultados contundentes: tsrs es hasta 8 veces más rápido que TypeScript 7.0 y consume aproximadamente un 70% menos de memoria. Esta eficiencia no es solo una métrica de velocidad, sino un habilitador arquitectónico para ejecutar cargas de trabajo de compilación en infraestructuras de serverless más compactas y económicas, como Cloudflare Workers.
Qué ocurrió
Cloudflare, VoidZero y Max Schwenk de Owner.com están colaborando en el desarrollo de tsrs, un port de TypeScript a Rust incubado dentro de la cadena de herramientas del compilador JavaScript Oxc. Es crucial aclarar que este proyecto no es un fork hostil ni una bifurcación independiente del lenguaje. El equipo de TypeScript mantiene el control total sobre el diseño y la dirección del lenguaje. La estrategia técnica consiste en seguir estrictamente las decisiones de implementación del equipo original para garantizar la compatibilidad a largo plazo.
El desarrollo de tsrs utiliza modelos de IA de frontera para realizar el port a gran escala, algo que habría sido prohibitivo hace unos años. Sin embargo, la supervisión humana es central para evitar los riesgos de los «slopforks» (forks de baja calidad). El equipo de Oxc ya ha comenzado a refactorizar el código base para optimizar el rendimiento y la mantenibilidad. Además, están trabajando con Theo Browne para fusionar tsc-rs y tsrs en un único paquete que soporte todas las funcionalidades de TypeScript, incluido el Protocolo de Servidor de Idiomas (LSP) y los mapeadores de contenido, asegurando que la experiencia del desarrollador no se vea comprometida por el cambio de backend.
Impacto para DevOps / Infraestructura / Cloud / Seguridad
Para los equipos de infraestructura y cloud, la reducción del 70% en el uso de memoria tiene un impacto directo en los costos operativos y la densidad de despliegue. En entornos de CI/CD, donde se ejecutan miles de compilaciones diarias, esta eficiencia permite utilizar instancias más pequeñas o ejecutar más compilaciones en paralelo en el mismo hardware, reduciendo la factura de nube y el tiempo de espera en las colas de build.
La ventaja más disruptiva para la arquitectura cloud es la capacidad de ejecutar tsrs en WebAssembly (Wasm). A diferencia de Go, que requiere incluir su recolector de basura (GC) en el binario Wasm, Rust permite una interacción de memoria directa y eficiente entre el huésped y el anfitrión. Esto significa que tsrs puede ejecutarse en entornos sandboxed extremadamente ligeros. Cloudflare Workers, que ya soportan Rust mediante el target Emscripten, pueden ejecutar todo el toolchain de desarrollo (compilación, linting, type-checking) de manera encapsulada y segura. Esto abre la puerta a IDEs completos que corren enteramente en el navegador o en dispositivos IoT, sin necesidad de servidores backend dedicados para la lógica de compilación.
Desde la perspectiva de seguridad, la ejecución del compilador en un entorno Wasm aislado reduce la superficie de ataque. El código de compilación no tiene acceso directo al sistema de archivos ni a la red del host, limitando el impacto de cualquier vulnerabilidad potencial en el compilador mismo.
Detalles técnicos
tsrs está diseñado como un port fiel de la implementación de TypeScript. Los benchmarks comparativos se realizaron utilizando la misma configuración por defecto que TypeScript 7.0 para evitar inflar los resultados mediante ajustes de máquina o flags personalizados. Con el mismo número de workers de verificación de tipos, tsrs demuestra una mejora de rendimiento de hasta 8x. Por ejemplo, si un proyecto tarda 10 segundos en compilarse con tsc v7.0, tsrs puede completar la tarea en aproximadamente 1.25 segundos bajo las mismas condiciones.
La arquitectura de memoria de Rust es el pilar de esta eficiencia. Al no depender de un GC gestionado por el runtime en tiempo de ejecución (como Go o JavaScript), tsrs gestiona la memoria de forma estática en tiempo de compilación. Esto elimina las pausas del GC y reduce la sobrecarga de memoria. Además, el binario Wasm resultante es significativamente más pequeño. Mientras que un binario Go compilado a Wasm debe incluir todo el runtime de Go y su GC, el binario de tsrs contiene solo la lógica necesaria, lo que facilita la carga rápida en navegadores o en entornos con recursos limitados.
Actualmente, existen algunas diferencias menores con el upstream, como el orden de impresión de los diagnósticos. El equipo se compromete a minimizar estas divergencias antes del lanzamiento estable. Las mejoras de rendimiento descubiertas durante el desarrollo de tsrs se están haciendo upstream al código base de Go de TypeScript, beneficiando a toda la comunidad, incluso a quienes no utilicen tsrs.
Qué deberían hacer los administradores y equipos técnicos
Los equipos de desarrollo pueden probar tsrs experimentalmente instalando el paquete desde npm. Dado que es una versión beta/pre-estable, se recomienda utilizarlo primero en proyectos secundarios o en pipelines de CI para evaluar la estabilidad y la compatibilidad con librerías específicas.
npm install -D tsrs
# Ejecutar el compilador con la configuración por defecto
npx tsrs build
Para los administradores de infraestructura, el siguiente paso es evaluar el potencial de consolidación de recursos. Si ejecutan compilaciones de TypeScript en Kubernetes o en instancias de EC2/GCP/Azure, pueden realizar pruebas de estrés comparando el uso de memoria de tsc v7.0 contra tsrs. El objetivo es determinar si pueden reducir el límite de memoria (memory limits) de los pods o contenedores de build sin afectar el rendimiento.
Además, los equipos que trabajan con Cloudflare Workers deben revisar la integración de Rust y Wasm. Cloudflare acaba de anunciar soporte nativo para Rust en Workers con el nuevo target de Emscripten. Los desarrolladores pueden explorar cómo integrar tsrs en sus pipelines de Workers para ejecutar pre-compilación o validación de tipos dentro del propio entorno de ejecución, eliminando la necesidad de servicios externos de compilación. Es vital monitorear la sincronización con el upstream de TypeScript; los equipos deben mantener una versión estable de tsc como fallback hasta que tsrs alcance la paridad funcional total y la certificación de estabilidad.
Conclusión
tsrs representa un salto cualitativo en la evolución de las herramientas de JavaScript. No se trata solo de hacer que TypeScript compile más rápido, sino de reimaginar dónde y cómo pueden ejecutarse los entornos de desarrollo. La combinación de Rust y WebAssembly permite llevar la potencia de un compilador completo a espacios antes inalcanzables, desde el navegador hasta el edge de la nube.
La colaboración estrecha con el equipo de TypeScript garantiza que este esfuerzo no fragmente el ecosistema, sino que lo fortalezca. Para los equipos DevOps, la reducción del 70% en memoria y el 8x en velocidad son argumentos financieros y operativos sólidos. A medida que tsrs madure y se integre con herramientas como Oxlint y Vite, veremos una cadena de herramientas de JavaScript más rápida, ligera y portátil. Los equipos que comiencen a experimentar ahora estarán mejor posicionados para adoptar estas nuevas arquitecturas de desarrollo en la nube cuando estén listas para producción.
Fuentes
https://blog.cloudflare.com/typescript-rust-port/
