TypeScript se reescribe en Go. Un cambio radical en el desarrollo web

El equipo de Microsoft TypeScript ha anunciado un ambicioso proyecto: la reescritura completa del compilador y las herramientas de TypeScript, eligiendo Go como el nuevo lenguaje base. Esta decisión marca un punto de inflexión en el desarrollo de TypeScript y promete mejoras significativas en rendimiento y escalabilidad.

¿Qué es TypeScript?

Para aquellos que no estén familiarizados, TypeScript es un superconjunto de JavaScript que añade tipado estático opcional. Esto permite a los desarrolladores detectar errores comunes en el código durante la fase de desarrollo, como errores tipográficos, argumentos faltantes o el olvido de verificar valores nulos o indefinidos. En esencia, TypeScript ayuda a escribir código JavaScript más robusto y mantenible.

El actual problema con JavaScript:

Anders Hejlsberg, el arquitecto principal de TypeScript, explicó en una publicación de su blog y un video de YouTube que la implementación actual de TypeScript, escrita en JavaScript, presenta limitaciones, especialmente en términos de rendimiento y escalabilidad. JavaScript, optimizado para interfaces de usuario y el uso en navegadores, no es la mejor opción para cargas de trabajo intensivas en computación, como compiladores y herramientas de sistema. Los usuarios han reportado problemas de memoria con bases de código grandes, lo que ha llevado al equipo de TypeScript a concluir que han alcanzado los límites de lo que pueden obtener de JavaScript.

La solución es Go

La reescritura en Go busca solucionar estos problemas. Hejlsberg afirma que la nueva implementación nativa mejorará drásticamente el inicio del editor, reducirá los tiempos de compilación hasta en 10 veces y disminuirá significativamente el uso de memoria. Se espera que una versión preliminar de tsc (el compilador de TypeScript) con capacidades de verificación de tipos en la línea de comandos estará disponible a mediados de 2025, y una solución completa para la construcción de proyectos y un servicio de lenguaje para finales del presente año.

Los beneficios de migrar a Go:

  • Rendimiento Mejorado en el Editor: Dado que los desarrolladores pasan la mayor parte de su tiempo en los editores, el rendimiento en este entorno es crucial. Usando el código base de Visual Studio Code como referencia, el tiempo actual para cargar un proyecto completo en un ordenador rápido es de aproximadamente 9.6 segundos. Con el nuevo servicio de lenguaje nativo, este tiempo se reduce a alrededor de 1.2 segundos, lo que representa una mejora de 8 veces en el tiempo de carga del proyecto en escenarios de edición.
  • Menor Uso de Memoria: El uso general de memoria también parece ser aproximadamente la mitad de la implementación actual y el equipo espera lograr mejoras adicionales a medida que continúe la optimización.
  • Compatibilidad: Un factor clave en la elección de Go fue la necesidad de mantener la mayor compatibilidad posible con el código base existente, tanto en términos de semántica como de estructura de código. El equipo planea mantener ambas bases de código durante algún tiempo, y otros lenguajes que requerirían una reestructuración fundamental de la gestión de memoria, la mutación, las estructuras de datos, el polimorfismo, etc., serían más adecuados para una reescritura desde cero. Go se asemeja mucho a los patrones de codificación existentes del código base de TypeScript, lo que hace que este esfuerzo de portabilidad sea mucho más manejable.

Go presenta algunos desafíos:

El equipo reconoce que Go tiene algunas debilidades, como la interoperabilidad con JavaScript en el mismo proceso, que no es tan buena como algunas alternativas. Sin embargo, tienen planes para mitigar estos problemas.

El Futuro de TypeScript:

La versión de Go aparecerá por primera vez como TypeScript 7. La versión más reciente de TypeScript fue TypeScript 5.8 y TypeScript 5.9 está por llegar. El código base escrito en JavaScript continuará desarrollándose en la serie 6.x, y TypeScript 6.0 introducirá algunas obsolescencias y cambios importantes para alinearse con el próximo código base nativo.

La decisión de reescribir TypeScript en Go, aunque pueda parecer extraña a primera vista (considerando que TypeScript «compila» a JavaScript, un lenguaje interpretado), representa un movimiento estratégico para mejorar el rendimiento, la escalabilidad y la experiencia general del desarrollador. Este cambio radical promete un futuro más eficiente y robusto para el desarrollo web con TypeScript.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.