Scriptc de Vercel compila TypeScript a binarios nativos sin Node ni V8

El compilador de Vercel Labs utiliza lowering estático por defecto, solo incrusta QuickJS mediante un modo opt-in y rechaza el código que no puede traducir de forma segura.

By · Published

Primary source: GitHub

Why it matters

Scriptc gives TypeScript developers a credible path toward tiny native CLIs and services, while exposing exactly where JavaScript's dynamic behavior still requires a runtime.

Diagram showing Vercel's Scriptc converting TypeScript into native binaries, with labeled stages for static lowering, an optional QuickJS embed, and rejected unsafe code paths.

Vercel, fundada y dirigida por Guillermo Rauch, ha dado a conocer Scriptc, un compilador de código abierto que convierte TypeScript ordinario en ejecutables nativos sin empaquetar Node.js, V8 u otro motor de JavaScript en los binarios producidos a través de su ruta estática predeterminada. El proyecto con licencia Apache-2.0 alcanzó la versión 0.0.17 el 27 de julio, una de varias versiones publicadas durante un estallido de desarrollo en los últimos cuatro días. (github.com)

La traza de lanzamientos muestra a Chris Tate como un committer activo de Scriptc, aunque las fuentes suministradas no establecen que él haya fundado o dirija formalmente el proyecto. Los commits de Tate aparecen a lo largo de la actividad reciente de Scriptc, con trabajo relacionado con llamadas a funciones externas nativas, compilación cruzada para Windows, pruebas de compatibilidad con Node y las reglas que gobiernan paquetes npm que no pueden compilarse de forma estática. (github.com)

Scriptc amplía una apuesta que Rauch persigue desde antes de que Vercel adoptara su nombre actual. Él creó Mongoose, la biblioteca de modelado de objetos para MongoDB, y construyó Vercel alrededor de la idea de dar a desarrolladores ordinarios infraestructura que antes estaba reservada para grandes empresas de tecnología. Vercel comenzó como ZEIT, centrado en simplificar el despliegue, y luego se expandió a través de frameworks, sistemas de compilación, herramientas de IA y computación gestionada. Scriptc empuja esa tesis por debajo del despliegue y hacia el ejecutable mismo: los desarrolladores de TypeScript deberían poder conservar su lenguaje mientras se deshacen de gran parte del peso del runtime tradicionalmente asociado a él. (vercel.com)

Un compilador que hace explícito el comportamiento dinámico

La elección de diseño central de Scriptc es un modelo de ejecución de tres niveles. El TypeScript compatible se compila a código nativo. El código que depende de JavaScript incluido en paquetes npm o de valores tipados como any puede ejecutarse mediante un motor QuickJS embebido cuando el desarrollador habilita explícitamente --dynamic. Los constructos no compatibles fallan la compilación con un diagnóstico numerado y, en muchos casos, una reescritura sugerida. (scriptc.dev)

Esa salvedad importa. La afirmación principal de que Scriptc produce binarios sin motor de JavaScript se aplica a su nivel estático. Una compilación usando --dynamic incluye un motor embebido, y los materiales de Scriptc sitúan los binarios en modo dinámico alrededor de 3 MB en lugar del rango más pequeño del modo estático. El compilador incluye un comando de cobertura que informa qué sentencias se compilan de forma estática, cuáles requieren ejecución dinámica y cuáles bloquean la compilación.

Esta postura de estático-o-rechazo le da a Scriptc un límite más nítido que las herramientas convencionales de empaquetado de JavaScript. La función de ejecutable independiente de Bun empaqueta el runtime de Bun con archivos y paquetes importados. Deno compile embebe una aplicación en denort, un runtime de Deno depurado. Las aplicaciones de un solo ejecutable de Node inyectan un blob de aplicación preparado en un binario de Node. Esos sistemas priorizan la compatibilidad al llevar un runtime. Scriptc intenta demostrar que cada constructo soportado puede convertirse en código nativo y luego rechaza el resto a menos que el desarrollador opte por QuickJS. (docs.deno.com)

Porffor es una comparación técnica más cercana. También compila JavaScript y TypeScript por adelantado a WebAssembly o binarios nativos sin empaquetar un runtime completo. Scriptc está haciendo una promesa de compatibilidad distinta en torno al TypeScript ordinario, el verificador oficial de TypeScript y APIs seleccionadas de Node, incluyendo acceso a archivos, redes, HTTP, TLS, procesos hijos y buffers. El proyecto presenta esa superficie como adecuada para programas de línea de comandos y servicios pequeños. (porffor.dev)

Los benchmarks siguen siendo afirmaciones de Scriptc

Scriptc afirma ejecutar más de 800 pruebas diferenciales, ejecutando cada programa del corpus bajo Node y como un binario nativo antes de comparar la salida estándar, los errores y los códigos de salida. El repositorio también describe una pista de pruebas con AddressSanitizer destinada a capturar errores y fugas de memoria. Esas salvaguardas son más fuertes que una prueba de demostración, pero siguen siendo pruebas diseñadas e informadas por los mantenedores de Scriptc. (github.com)

Las cifras de rendimiento deben leerse con cuidado. Los materiales de Scriptc describen binarios estáticos de aproximadamente 170 KB a 200 KB, arranque alrededor de 2 a 4 milisegundos, uso de memoria típico de 1 MB a 4 MB, y binarios en modo dinámico alrededor de 3 MB. Esas son cifras de los mantenedores; las páginas suministradas no ofrecen suficiente metodología para tratarlas como benchmarks independientes. (github.com)

Los tiempos reportados por Scriptc encajan con un movimiento más amplio hacia herramientas nativas dentro del mercado de TypeScript. Microsoft lanzó TypeScript 7.0 el 8 de julio como un puerto nativo en Go, reportando aceleraciones de compilación completas de 8x a 12x. El trabajo de Microsoft acelera el compilador y los servicios de lenguaje mientras preserva JavaScript como la salida normal de TypeScript. Scriptc da el siguiente paso e intenta hacer que la aplicación también sea nativa. (devblogs.microsoft.com)

Vercel avanza más abajo en la pila

Vercel puede financiar ese experimento sin forzar un modelo comercial inmediato. En septiembre de 2025, Vercel recaudó $300 millones en una Serie F con una valoración post-money de $9.3 mil millones, codirigida por Accel y GIC. Scriptc está disponible como un repositorio de Vercel Labs con licencia Apache-2.0. (vercel.com)

La dirección sigue coincidiendo con la expansión de Vercel desde el despliegue frontend hacia la infraestructura que rodea la creación y ejecución de software. Scriptc aborda la pila desde el otro extremo, ofreciendo a los desarrolladores una forma de producir ejecutables pequeños y portables a partir del lenguaje ya común en los productos y la base de clientes de Vercel.

La tarea más difícil del proyecto será mantener el límite que ha trazado. JavaScript obtiene gran parte de su utilidad del comportamiento dinámico, la compatibilidad con npm y la reflexión en tiempo de ejecución. Cada característica no soportada crea presión ya sea para ampliar la reducción nativa de Scriptc o para enviar más código a través de QuickJS, debilitando la propuesta de binarios pequeños. Los códigos de rechazo del compilador y los informes de cobertura hacen visible ese intercambio. Si los desarrolladores aceptan esas limitaciones determinará si Scriptc se convierte en una herramienta práctica para CLIs y servicios en TypeScript o si permanece como una demostración ambiciosa de cuánto JavaScript se puede compilar.

Reader comments

Conversation for this story loads after sign-in.