La lentitud de TypeScript que se oculta a plena vista
El desarrollo con TypeScript implica dos procesos distintos: la transpilación y la verificación semántica de tipos. Herramientas de compilación rápidas como esbuild o Vite eliminan rápidamente la sintaxis de TypeScript y la convierten en JavaScript ejecutable. Este paso es rápido y a menudo toma milisegundos.
El cuello de botella aparece durante la verificación semántica de tipos, que comprueba la validez del código. Este proceso, crucial para la retroalimentación del editor y los pipelines de CI, puede tardar minutos en proyectos grandes. Los desarrolladores perciben este retraso como una notificación de errores lenta en los IDE o como tiempos de ejecución de CI más largos.
Microsoft abordó oficialmente este problema con un port en Go del compilador de TypeScript, que ofrece una mejora de velocidad de 8 a 12 veces frente al motor heredado en JavaScript. Esta versión en Go, parte de TypeScript 7.0, redujo de forma significativa los tiempos de verificación; por ejemplo, la verificación de tipos de VS Code pasó de 125,7 segundos a 10,6 segundos.
Recientemente surgió una implementación en Rust impulsada por la comunidad, que ofrece un nuevo contendiente. Desarrollado con rapidez por Cloudflare y el proyecto Oxc con ayuda de agentes de IA, este port en Rust del código base en Go afirma ser casi tres veces más rápido que la versión oficial en Go. Aunque todavía no está integrado en todo el ecosistema, supera más del 99,9% de las pruebas de conformidad de TypeScript, lo que demuestra su potencial.
El benchmark: 0,3 segundos frente a 0,7
Para cuantificar la mejora de velocidad, un benchmark enfrentó el compilador heredado en JavaScript con los nuevos ports en Go y Rust. La prueba utilizó el repositorio de TypeScript oficial, un código base considerable que comprende 793 archivos y aproximadamente 380.000 líneas de código. Cuatro escenarios evaluaron el rendimiento: código perfectamente válido, un único error de tipo, un fallo en cascada causado por un tipo central roto y una recursión profunda.
En estos diversos escenarios, los resultados fueron sorprendentes. El compilador de JavaScript fue sistemáticamente el más lento, con tiempos de entre 6,6 y 13 segundos. El port en Go mejoró esto de forma notable, completando las verificaciones en entre 0,6 y 2,2 segundos. Sin embargo, la versión en Rust demostró un rendimiento superior, al terminar en apenas entre 0,2 y 0,5 segundos.
Para poner en perspectiva las cifras principales, el compilador en Rust fue en promedio aproximadamente 24 veces más rápido que la implementación original en JavaScript. Más impresionante aún, fue casi tres veces más rápido que el port en Go en esta prueba específica. Estos resultados ponen de relieve el potencial de mejoras sustanciales en la experiencia del desarrollador.
Es fundamental recordar que los resultados de los benchmarks pueden variar. Factores como las especificaciones del hardware, la estructura del proyecto, las versiones concretas del compilador y la metodología exacta del benchmark pueden influir en el rendimiento. No obstante, la mejora de velocidad constante y espectacular observada con el port en Rust es un avance significativo para el ecosistema de TypeScript.
Los agentes de IA copiaron un diseño perfeccionado con mucho esfuerzo
Cabe destacar que el port en Rust no surgió de un ingeniero humano que diseñara un nuevo sistema de tipos. En su lugar, un ingeniero dirigió a agentes de IA, principalmente Claude Opus 3.5, para traducir a Rust, función por función, el compilador existente de Microsoft en Go. Este enfoque se basó en una traducción mecánica, más que creativa.
Esta estrategia de traducción aprovechó la extensa suite de conformidad de TypeScript, que consta de más de 13.000 casos de prueba. Cada caso de prueba especifica los errores de diagnóstico exactos que debería informar un compilador conforme. Los agentes portaban una función, ejecutaban las pruebas correspondientes, depuraban cualquier discrepancia y luego pasaban a la siguiente función.
Superar todas estas pruebas, como lo hace ahora la versión en Rust, confirma su compatibilidad y su capacidad para producir resultados de verificación de tipos idénticos a los del compilador oficial en Go. Esto permitió una iteración rápida y verificable en solo tres semanas de desarrollo. Para más información sobre el port oficial en Go, consulte A 10x Faster TypeScript - Microsoft Developer Blogs.
Sin embargo, superar las pruebas de conformidad verifica principalmente la corrección de los resultados. No garantiza por sí mismo un rendimiento equivalente en todos los tipos de proyecto, una integración fluida con el editor ni que esté listo de inmediato para producción en cualquier base de código. Aunque los benchmarks presentados en el vídeo son convincentes, será crucial seguir integrándolo y probarlo en entornos reales para consolidar su adopción más amplia.
¿Te está gustando? Recibe uno así en tu bandeja cada mañana.
un correo al día · date de baja en dos clics · sin rastreadores de terceros
La velocidad entusiasma; la adopción es la verdadera prueba
Las mejoras de rendimiento de Rust son emocionantes, pero su propuesta con WebAssembly ofrece una razón convincente para adoptarlo. Cloudflare, por ejemplo, pretende ejecutar herramientas para desarrolladores directamente en entornos de navegador y de edge. Rust se compila a WebAssembly sin incluir un recolector de basura, a diferencia de Go, lo que lo hace ideal para una ejecución ligera y aislada en un entorno controlado (sandbox).
La implementación en Go del compilador de TypeScript de Microsoft sigue siendo la referencia oficial y da soporte a TypeScript 7.0 con mejoras de velocidad significativas. El port en Rust, en cambio, se está desarrollando dentro del proyecto Oxc, una cadena de herramientas en Rust de los creadores de Vite. Esto lo posiciona para aplicaciones futuras como el linting con detección de tipos en Oxc Lint, aprovechando su velocidad para ofrecer retroalimentación en tiempo real.
Considere el benchmark como una señal prometedora, no como una garantía universal. Verifique la compatibilidad y el soporte de herramientas para la pila específica de su proyecto antes de integrarlo. Observe si estas optimizaciones e integraciones llegan a los flujos de trabajo cotidianos y reducen en la práctica los tiempos de ciclo de los desarrolladores. La verdadera prueba para el port en Rust será su recorrido desde un benchmark impresionante hasta una utilidad práctica y generalizada.
Preguntas frecuentes
¿Es el compilador de TypeScript en Rust una versión oficial de Microsoft?
No. Es un port de Rust impulsado por la comunidad y asociado al proyecto Oxc; el port nativo oficial del compilador de Microsoft está escrito en Go.
¿Cuánto más rápido fue el compilador en Rust en el benchmark del vídeo?
En la prueba del repositorio de TypeScript, fue en promedio aproximadamente 24 veces más rápido que el compilador de JavaScript y casi tres veces más rápido que el port en Go.
¿Por qué crear un compilador de TypeScript en Rust?
La ausencia de un recolector de basura en Rust puede hacer atractivo el empaquetado para WebAssembly, mientras que el port también explora optimizaciones de rendimiento y de memoria.
¿Fue el port en Rust escrito por IA?
Agentes de IA realizaron buena parte del port mecánico bajo la dirección de un ingeniero, usando el compilador de Microsoft y las pruebas de conformidad de TypeScript como guías.

