Radar Tech: Vercel Lança Scriptc — Compilador TypeScript-Nativo que Elimina o Runtime JS
Vercel Labs abre o código do Scriptc, compilador que traduz TypeScript diretamente para código nativo via LLVM, sem engine JavaScript. Cold start cai de centenas de ms para <5ms. Impactos para arquitetura de microsserviços e serverless.
Scriptc: TypeScript sem Runtime JavaScript
Na última semana, a Vercel Labs lançou o Scriptc (github.com/vercel-labs/scriptc), um compilador TypeScript-para-nativo que elimina completamente a necessidade de um runtime JavaScript (Node.js, Bun ou Deno) para executar código TypeScript.
O compilador funciona em duas etapas:
- Análise semântica do TypeScript — types, imports, exports, type erasure
- Geração de LLVM IR → código de máquina nativo (ELF, WASM)
O resultado é um binário independente que não carrega V8, não faz JIT, não precisa de npm install em produção.
Por que isso importa para arquitetura de software?
Cold Start
O impacto mais imediato é em cold start. Um microsserviço Node.js típico leva 150-500ms para inicializar (carregar runtime, resolver módulos, executar código). Com Scriptc, esse número cai para 1-5ms — o binário já está em código de máquina.
Para arquiteturas serverless (AWS Lambda, Cloudflare Workers, Vercel Functions), isso significa:
- SLA de 50ms viável sem provisionamento constante
- Eliminação da prática de "keep-warm" (pings a cada 5min)
- Redução de footprint de ~25-35MB para ~1MB por função
Impacto em Custos
Memória é o principal driver de custo em Kubernetes (requests/limits). Um pod que antes consumia 256MB pode rodar com 16MB. Em frotas de 50+ microsserviços, a economia mensal pode chegar a dezenas de milhares de dólares.
Trade-offs Conhecidos
Nem tudo são flores. O Scriptc não suporta:
eval()enew Function()— reflection dinâmico- Módulos npm que dependam de runtime JavaScript (ex.:
fast-json-stringifycom reviver function) require()dinâmico em tempo de execução- Módulos que acessam V8 API diretamente
Isso significa que nem todo microsserviço pode migrar. A abordagem recomendada é um ADR (Architecture Decision Record) que avalie serviço por serviço, pesando ganho de desempenho versus custo de compatibilidade.
Contexto do Mercado
O Scriptc chega em um momento onde várias frentes disputam o espaço de "TypeScript sem Node":
- Bun (JIT, runtime próprio, cold start ~50ms)
- Deno (V8 isolado, cold start ~80ms)
- tsx + Node --experimental-strip-types (Node 22+, cold start ~200ms)
- Rust puro (zero compatibilidade TS, máximo desempenho)
Cada opção ocupa um ponto diferente na curva desempenho × compatibilidade. O Scriptc é o primeiro a oferecer compatibilidade semântica total com TypeScript (sem runtime) — o que pode ser um divisor de águas para times que querem desempenho nativo sem reescrever o stack.
Recomendação de Arquitetura
Para times avaliando a adoção:
- Mapeie dependências — identifique quais microsserviços dependem de bibliotecas com eval/reflection
- Comece por serviços stateless — APIs REST puras, sem ORM complexo, são os melhores candidatos
- Shadow deploy — use tráfego espelhado para validar comportamento antes de rotear usuários reais
- Meça cold start real — não confie apenas nos benchmarks, meça no seu hardware e carga
O Scriptc ainda é um projeto jovem (repositório da Vercel Labs, não production-ready). Mas a direção é clara: a era do runtime JS monolítico para microsserviços pode estar com os dias contados.