TypeScript Semanal #1: Mergify sortea los escollos de TS 7 y tsrs sorprende reescrito en Rust

TypeScript · Weekly #1

TypeScript Semanal #1: Mergify sortea los escollos de TS 7 y tsrs sorprende reescrito en Rust

typescriptTypeScriptsemanalGoRust

Fuentes:GitHub Releases + 官方博客 + HN

📦 Novedades de versiones

La versión estable oficial más reciente es TypeScript 7.0.2 (publicada el 2026-08-20). Esta semana, el equipo de VS Code lanzó específicamente la actualización de la extensión vscode-typescript/v1.0.1 (publicada el 2026-09-30, basada en el commit b6eaace9).

TypeScript 7 reescribe el compilador en Go, rompiendo con las limitaciones de hilo único de V8. La versión 7.0.2 introduce los siguientes cambios:

  1. Comprobación paralela multinúcleo: Al ejecutar tsc --noEmit en plataformas multinúcleo, el tiempo de compilación en bases de código grandes se reduce drásticamente.
  2. Ausencia temporal de las API del compilador: [email protected] aún no expone las API de Node.js para que las utilicen librerías de terceros, lo que provoca errores en herramientas que dependen del análisis sintáctico de AST.

Artículo detallado de nuestro sitio relacionado con esta sección: /lang/2026-08-20-typescript-7-0-release/

📝 Artículos en profundidad

1. Crónica de migración en Mergify: comprobación de tipos reducida a 3.5 segundos

Qué ocurrió: El equipo de Mergify migró una aplicación React de 244 000 líneas a TypeScript 7.0. En un MacBook Pro M5, la comprobación completa pasó de 13 segundos a 3.5 segundos, mientras que el pico de memoria bajó de 183 MiB a 101 MiB. Por qué es importante: A nivel de un solo núcleo, la versión en Go solo rinde 1.4 veces más que V8; el resto de la ganancia se debe por completo a la concurrencia en 4 núcleos. No obstante, la versión 7.0 eliminó las API del compilador, lo que provoca el bloqueo de typescript-eslint al iniciarse. A quién afecta: A los equipos de frontend que afrontan la actualización. La solución actual es un “sistema de doble compilador”: mediante alias de paquetes, se hace que import 'typescript' apunte a la versión 6.0.2 para consumo local de ESLint, mientras que en la canalización de CI se invoca la 7.0 para una verificación ultrarrápida. Comentario del autor: La falta de API es una concesión estratégica oficial. TypeScript 7.1 promete restablecer los bindings de la API, por lo que la configuración actual de alias de paquetes es solo una capa provisional para unos pocos meses; evite crear macros de compilación sobre ella.

2. La versión comunitaria tsrs en Rust supera a la implementación oficial en Go

Qué ocurrió: Max Schwenk publicó como código abierto tsrs, portando a Rust el código en Go de TypeScript 7 (tsc/internal) manteniendo las firmas de funciones. Superó con éxito 13 458 de 13 462 pruebas de diagnóstico de errores. Por qué es importante: El proyecto integra su propio servidor de lenguaje (tsrs --lsp -stdio). Al ejecutar 200 modificaciones sobre un proyecto de 38 000 archivos, la memoria del servidor de lenguaje oficial en Go osciló entre 4.9 GiB y 7.4 GiB, mientras que tsrs se mantuvo estable en 2.9 GiB. A quién afecta: Equipos de infraestructura que ejecutan servidores de tipos en contenedores WebAssembly e ingenieros que desarrollan ecosistemas de compilación en Rust como Rolldown. Comentario del autor: El recolector de basura de Go provoca sobrecarga de memoria ante el autocompletado frecuente y la asignación masiva de nodos AST. La estructura en árbol basada en ciclos de vida de Rust evita fugas de memoria en procesos LSP de ejecución prolongada.

3. Tarve: un framework de escritorio TSX nativo sin DOM de navegador

Qué ocurrió: Se lanzó Tarve, que permite desarrollar aplicaciones nativas de escritorio con Bun y TSX puro. El framework elimina por completo la dependencia de Chromium, mapeando el árbol de componentes directamente a los manejadores de dibujo del sistema operativo. Por qué es importante: Tarve utiliza Taffy en Rust para la maquetación (compatible con Flexbox y CSS Grid) y Parley para el perfilado tipográfico. En Windows se conecta directamente con D3D11 y DXGI, recurriendo a renderizado por CPU si no hay GPU disponible. A quién afecta: Desarrolladores full-stack que crean herramientas de escritorio ligeras y de bajo consumo de memoria. Comentario del autor: A diferencia de Tauri, que delega la capa de presentación en WebKit, Tarve toma el control de la canalización de renderizado dentro del propio proceso de Bun. Al gestionar animaciones, puede controlar los ciclos de redibujado con una sobrecarga de comunicación entre procesos extremadamente baja.

4. Constructor de expresiones regulares fuertemente tipado: composición encadenada inspirada en Emacs

Qué ocurrió: Surgió en la comunidad una librería para construir expresiones regulares en TypeScript inspirada en la macro Rx de Emacs. Permite sustituir cadenas literales codificadas a mano por funciones componibles y legibles como seq(start, oneOrMore(word), end). Por qué es importante: En las expresiones regulares tradicionales, los comprobadores de tipos estáticos no pueden detectar caracteres de escape mal escritos. Esta librería mantiene un AST mediante inferencia de tipos literales, adelantando la validación sintáctica a la fase de compilación. A quién afecta: Ingenieros de producto a cargo de validaciones de formularios y analizadores complejos de logs. Comentario del autor: Frente a magic-regexp, esta librería delega el cálculo del escape de cadenas en los nodos Literal subyacentes. Las variables inyectadas dinámicamente se convierten obligatoriamente en texto plano, neutralizando los riesgos de ataques ReDoS a nivel sintáctico.

🔥 Debates en la comunidad

1. Ask HN: Con backend en Node, ¿elegir React Native o Flutter en móvil?

  • Actividad del debate: 15 comentarios, 5 puntos
  • Puntos clave de discrepancia: Al basar el backend en Node.js, la elección se convierte en un pulso entre los defensores de la “isomorfía de lenguaje” y los del “motor de renderizado propio”. Quienes apoyan React Native destacan la reutilización directa en el frontend de los modelos de datos Zod del backend, reduciendo los costes de integración. Los adeptos a Flutter sostienen que la coherencia de renderizado píxel a píxel en ambas plataformas gracias a su motor propio compensa con creces el esfuerzo de duplicar modelos.

2. Show HN: Durable Actor Session Protocol (DASP)

  • Actividad del debate: 7 comentarios, 18 puntos
  • Puntos clave de discrepancia: Tras la popularización de Cloudflare Durable Objects, la comunidad debate las fronteras arquitectónicas de los agentes persistentes. El núcleo de la discusión radica en si un Actor residente en memoria debe contar obligatoriamente con un planificador en sandbox antes de recibir peticiones públicas. Los arquitectos advierten que exponer puertos directamente propicia ataques de agotamiento de recursos; DASP, por su parte, busca establecer un protocolo de saludo estandarizado en la capa de análisis sintáctico para bloquear renovaciones ilícitas de sesión.

Qué seguir la próxima semana

La próxima semana convendrá seguir la evolución de las compilaciones nocturnas de [email protected], prestando especial atención a si las firmas de la API interna restaurada provocan rupturas drásticas con la serie 6.0 al intentar imitar las estructuras de memoria de Go. Si la especificación de las firmas cambia sustancialmente, los plugins de ESLint y las macros de Babel basados en transformaciones de AST requerirán una reestructuración a fondo.