¿Typescript se cambia a go?

Introducción: Noticias en el Mundo de TypeScript

El panorama del desarrollo web podría estar al borde de un cambio significativo, con noticias que sugieren una posible transformación en la forma en que se construye uno de los lenguajes de programación de más rápido crecimiento. TypeScript, conocido por añadir tipado estático a JavaScript y facilitar la creación de aplicaciones de gran escala, podría experimentar una renovación interna crucial. Se ha dado a conocer la exploración por parte de Microsoft de un nuevo compilador para TypeScript, cuyo nombre en clave es “Corsa”, escrito en el lenguaje de programación Go . La afirmación principal que acompaña a este proyecto es un potencial aumento de velocidad de hasta diez veces, acompañado de una reducción en el uso de memoria . Este desarrollo podría tener amplias implicaciones para la comunidad de desarrolladores y para el futuro del lenguaje.

¿Qué es TypeScript? Una Versión Mejorada de JavaScript

Para comprender la magnitud de este posible cambio, es fundamental recordar qué es exactamente TypeScript. En esencia, TypeScript es un superconjunto de JavaScript. Esto significa que cualquier código JavaScript válido es también código TypeScript válido. La principal diferencia y ventaja que aporta TypeScript es la adición de tipado estático con anotaciones de tipo opcionales. Esta característica permite a los desarrolladores especificar los tipos de datos que se esperan en diferentes partes de su código, lo que facilita la detección de errores durante la fase de desarrollo en lugar de en tiempo de ejecución . Además del tipado estático, TypeScript incorpora otras funcionalidades que mejoran la organización y el mantenimiento del código, como interfaces, enumeraciones y genéricos . Finalmente, es importante destacar que el código TypeScript no se ejecuta directamente en los navegadores u otros entornos JavaScript; primero debe ser transpiled (compilado) a JavaScript .

El Origen de TypeScript: Un Proyecto de Microsoft

La creación de TypeScript fue impulsada por la necesidad de abordar los desafíos inherentes al desarrollo de aplicaciones JavaScript de gran tamaño . Fue desarrollado por Microsoft, y el arquitecto principal detrás de su diseño es Anders Hejlsberg , una figura destacada en el mundo de la programación, también conocido por su trabajo en Turbo Pascal, Delphi y C# . La demanda de mejores herramientas para facilitar el desarrollo de componentes en JavaScript, tanto dentro de Microsoft como entre sus clientes, fue el catalizador para el nacimiento de TypeScript, que se lanzó públicamente en 2012 .

¿Dónde se Usa TypeScript? En Todas Partes de la Web y Más Allá

Hoy en día, TypeScript se ha convertido en una tecnología fundamental en el desarrollo web y más allá. Es ampliamente utilizado en el desarrollo front-end con frameworks populares como Angular, React y Vue.js. Su capacidad para mejorar la mantenibilidad y la robustez del código lo hace especialmente adecuado para la construcción de aplicaciones web complejas y de una sola página. Sin embargo, su utilidad no se limita al front-end; TypeScript también se emplea cada vez más en el desarrollo back-end con entornos de ejecución como Node.js, Deno y Bun. Además, su versatilidad se extiende al desarrollo de aplicaciones móviles (con Ionic), aplicaciones de escritorio (con Electron), interfaces de línea de comandos (CLIs), desarrollo de juegos e incluso en algunas áreas de inteligencia artificial y aprendizaje automático (con TensorFlow.js). La creciente popularidad y la amplia adopción de TypeScript dentro de la comunidad de desarrolladores subrayan su importancia en el panorama tecnológico actual.

La Decisión de Cambiar: ¿Por qué Go para el Nuevo Compilador?

La herramienta principal que los desarrolladores utilizan para convertir el código TypeScript en JavaScript ejecutable es el compilador de TypeScript, conocido como tsc. Actualmente, este compilador está escrito en el propio TypeScript y se ejecuta sobre Node.js . Si bien esta estrategia de “autohospedaje” tiene sus ventajas, también puede presentar limitaciones de rendimiento . Para abordar estos posibles cuellos de botella, Microsoft ha decidido explorar la creación de un nuevo compilador, “Project Corsa”, utilizando el lenguaje de programación Go.

La elección de Go no es casual. Este lenguaje ofrece varias características técnicas que lo hacen especialmente adecuado para la tarea de construir un compilador de alto rendimiento . En primer lugar, Go es conocido por su velocidad de compilación y su eficiente ejecución gracias a la compilación nativa . Proporciona un control preciso sobre la disposición de la memoria, lo cual es crucial para optimizar el rendimiento de un compilador . Una gestión eficiente de la memoria se traduce en un menor consumo de recursos y una mayor velocidad de ejecución.

En segundo lugar, Go cuenta con un soporte integrado para la concurrencia a través de goroutines y canales, lo que permite el procesamiento paralelo y una mejor utilización de los procesadores multinúcleo . Esta capacidad es fundamental para tareas del compilador como la verificación de tipos, que se puede paralelizar para mejorar la eficiencia.

En tercer lugar, los compiladores dependen en gran medida del procesamiento de grafos para diversas tareas, como la resolución de dependencias y la optimización del código, áreas en las que Go demuestra un buen rendimiento.

Además, Go comparte ciertas similitudes estructurales con JavaScript y TypeScript . Esta semejanza facilita el mantenimiento y permite una migración más sencilla de la base de código existente . De hecho, en lugar de una reescritura completa desde cero, el equipo de TypeScript optó por una “portabilidad” del código, lo que ahorró tiempo y garantizó una mayor compatibilidad.

La elección de Go también se basa en el éxito demostrado por otras herramientas similares en el ecosistema de JavaScript/TypeScript. Transpiladores como esbuild y swc, escritos en Go y Rust respectivamente, ya han logrado mejoras significativas en la velocidad, lo que sugiere el potencial de un lenguaje nativo para todo el proceso de compilación.

Otras ventajas técnicas de Go incluyen un recolector de basura eficiente, que simplifica la gestión de la memoria en comparación con lenguajes de bajo nivel como C o C++ , y la capacidad de generar binarios autónomos. Esta última característica simplifica la implementación del compilador, ya que elimina la necesidad de un entorno de ejecución separado como Node.js.

La decisión de explorar un nuevo compilador en Go responde a la necesidad de superar las limitaciones de rendimiento que se han vuelto más evidentes a medida que la adopción de TypeScript y el tamaño de los proyectos han crecido. El compilador actual, aunque funcional, ha encontrado desafíos para escalar a proyectos muy grandes, lo que ha llevado a tiempos de compilación prolongados y problemas de memoria . Esta iniciativa refleja un enfoque proactivo del equipo de TypeScript para asegurar que el lenguaje siga siendo competitivo y continúe ofreciendo una experiencia de desarrollo positiva a medida que los proyectos se vuelven más complejos.

Diez Veces Más Rápido: La Promesa de Go

La promesa fundamental de la migración del compilador de TypeScript a Go es una mejora significativa en la velocidad, con estimaciones que hablan de un aumento de hasta diez veces (y en algunos casos, hasta quince veces) en los tiempos de compilación . Las pruebas internas realizadas por Microsoft han arrojado resultados impresionantes. Por ejemplo, la compilación de la base de código de Visual Studio Code, que consta de más de 1.5 millones de líneas, se redujo de 77.8 segundos a tan solo 7.5 segundos, lo que representa una mejora de 10.4 veces . Otros proyectos conocidos como Playwright, TypeORM, date-fns, tRPC y rxjs también mostraron aumentos de velocidad notables.

Esta mejora en el rendimiento tendrá un impacto directo en varios aspectos del flujo de trabajo de desarrollo. Los desarrolladores pueden esperar tiempos de compilación mucho más rápidos al utilizar el comando tsc en la línea de comandos . Además, se prevé una mejora significativa en el rendimiento del servicio de lenguaje de TypeScript, lo que se traducirá en una experiencia de desarrollo más fluida y receptiva dentro de los entornos de desarrollo integrados (IDEs) . Esto incluye tiempos de inicio del editor más rápidos y operaciones más ágiles como la visualización de información al pasar el ratón, la detección de errores, la navegación a la definición de símbolos y el cambio de nombre de variables.

La promesa de una compilación más rápida también se extiende a los procesos de integración continua (CI), donde los tiempos de construcción reducidos pueden acelerar significativamente los ciclos de retroalimentación y despliegue . Asimismo, se espera que los tiempos de recarga en caliente durante el desarrollo local sean considerablemente más rápidos.

Microsoft tiene previsto lanzar el compilador basado en Go como TypeScript 7.0, con una fecha estimada para finales de 2025.

La siguiente tabla ilustra los resultados de las pruebas de rendimiento comparando el compilador actual con la nueva implementación en Go en varios proyectos de código abierto populares:

Estos datos demuestran de manera contundente el potencial de la nueva implementación para transformar la velocidad de compilación en proyectos de diversos tamaños.

¿Cómo Afecta Esto a los Desarrolladores? Más Velocidad y Eficiencia

La transición a un compilador de TypeScript escrito en Go tendrá una serie de beneficios directos para los desarrolladores. Una de las ventajas más evidentes será el aumento de la productividad . Los tiempos de compilación más rápidos significan menos tiempo de espera y más tiempo dedicado a escribir código.

Además, la experiencia dentro del IDE mejorará significativamente . Un servicio de lenguaje más receptivo se traducirá en una codificación más fluida y eficiente, con finalización de código más rápida, verificación de errores instantánea y navegación y refactorización de código más ágiles

La aceleración de los ciclos de retroalimentación es otro beneficio clave . Tanto en el desarrollo local como en las tuberías de CI/CD, la compilación más rápida permitirá a los desarrolladores iterar sobre su código y desplegar cambios con mayor rapidez.

Los desarrolladores que trabajan en proyectos grandes se beneficiarán especialmente de estas mejoras . Los monorepos y los proyectos con sistemas de tipos complejos a menudo sufren tiempos de compilación lentos con el compilador actual. El nuevo compilador en Go promete aliviar estos problemas.

El menor consumo de memoria por parte del compilador de Go también es una ventaja importante . Esto puede mitigar problemas como los errores de falta de memoria, especialmente al trabajar con bases de código extensas, y potencialmente reducir los costos en entornos de CI/CD basados en la nube.

Las ganancias de rendimiento podrían incluso abrir la puerta a la exploración e implementación de características del lenguaje y herramientas más avanzadas que antes eran demasiado costosas computacionalmente.

Es importante destacar que los desarrolladores probablemente se beneficiarán de estas mejoras simplemente actualizando a TypeScript 7.0, sin necesidad de realizar modificaciones en su código existente . Además, el compilador nativo elimina la dependencia de Node.js para la compilación, lo que podría simplificar la configuración del entorno y las construcciones de Docker.

Conclusión: Un Futuro Potencialmente Más Veloz para TypeScript

En resumen, Microsoft está llevando a cabo un proyecto significativo para migrar el compilador de TypeScript al lenguaje Go, con el objetivo principal de lograr una mejora de rendimiento de diez veces. Esta iniciativa, conocida como “Project Corsa”, promete ofrecer numerosos beneficios a los desarrolladores, incluyendo tiempos de compilación más rápidos, una experiencia mejorada en el IDE y un menor consumo de recursos. Indirectamente, los usuarios finales también podrían beneficiarse de un proceso de desarrollo más eficiente que conduzca a aplicaciones y sitios web de mayor calidad y con actualizaciones más rápidas. Con el lanzamiento de TypeScript 7.0 previsto para finales de 2025, la comunidad de desarrollo web espera con interés el impacto potencial de este cambio en el panorama tecnológico.

Tags :
Desarrollo de software
Share This :

Leave a Reply

Your email address will not be published. Required fields are marked *

Lastest In News