Angular ngp: compilador em Rust entra em beta, corta build frio e abre o caminho para o TypeScript 7
Angular ngp: o compilador em Rust entrou em beta
O time do Angular colocou em beta o ngp (Angular Preprocessor) , um novo pipeline de compilação que reescreve a etapa de análise em Rust, sobre o Oxc — o mesmo toolchain Rust usado pelo Vite, da VoidZero. O anúncio foi feito por Alex Rickabaugh e Mark Techson no blog do time em setembro, mas só nos últimos dias apareceram os primeiros números públicos de benchmark e a discussão sobre adoção, com cobertura do InfoQ e do iMasters em 11 de novembro.
A motivação não é estética: o TypeScript 7.0, lançado neste ciclo, é um port do compilador para Go e removeu a API ts.Transformer . O compilador do Angular ( ngc ) era essencialmente um wrapper em volta do tsc que plugava a transformação de templates dentro do pipeline do TypeScript. Sem esse gancho, o Angular ficaria preso no TypeScript 6 enquanto o resto do ecossistema migra. O ngp é a resposta: desacoplar a compilação de templates da API do TypeScript.
Um detalhe importante para não confundir assuntos: a volta da API programática no beta do TypeScript 7.1 não resolve o caso do Angular — o contrato interno que o ngc usava não é o mesmo, e o time preferiu não reconstruir a dependência. A leitura é minha, mas os fatos apontam para uma decisão estrutural, não um contorno temporário.
Como o ngp funciona por dentro
O desenho tem três estágios:
Frontend em Rust (Oxc). Lê os arquivos em paralelo, faz o parsing e descobre declarações do Angular — componentes, diretivas, pipes — sem esperar o tsc terminar de montar o programa.
Transformação de templates. A análise de template, que antes rodava como um transformer do TypeScript, passa a acontecer fora do compilador de tipos, com o resultado devolvido ao pipeline.
Emit. A geração de código final continua coordenada com o restante da build, mas o Angular deixa de depender de APIs internas do tsc para chegar lá.
O commit que trouxe o grosso do compilador passa de 370 mil linhas, com cerca de 56 mil de Rust, segundo a análise do Ninja Squad. É um projeto grande, e vale entender o que ele não muda: código de aplicação em Angular — component, template, service, signal — continua igual. O que muda é a ferramenta que transforma isso em JavaScript.
Os números e o que eles realmente dizem
Os benchmarks divulgados apontam builds frios de 2x a 3x mais rápidos , com uso de memória menor e feedback mais rápido no dev server. Para comparação de escala: os benchmarks do próprio TypeScript 7 mostram 8x a 12x em build completo no código do VS Code (125,7 s para 10,6 s) e no Sentry (139,8 s para 15,7 s).
Duas ressalvas que costumam passar batido:
Build frio é a métrica mais generosa. Em build incremental — o ciclo real de quem desenvolve — o ganho tende a ser menor, porque o gargalo passa a ser invalidação de cache e não parsing.
Um build frio de 2x a 3x em CI roda uma vez por pipeline; o dev server roda dezenas de vezes por dia. Antes de vender economia para a gestão, meça em monorepo com a sua quantidade de bibliotecas — é onde a diferença entre análise paralela e serial aparece.
Onde o risco mora: ferramentas, não templates
Aplicação comum tem pouco a fazer. O problema está na camada de tooling que se acopla ao compilador:
Qualquer coisa parecida com isso — codemods internos, builders customizados, esquemas que leem @angular/compiler-cli , regras de lint que dependem do TypeChecker dentro de template — é o primeiro lugar onde a migração quebra. O caminho é reescrever na API nova ou migrar para hooks na camada do Oxc/bundler, e isso é trabalho de engenharia, não de atualização de dependência.
Outros pontos de atenção:
Versões casadas. @angular/* , ng-packagr e o toolchain precisam andar juntos; misturar um pacote em beta derruba o build de bibliotecas com erro pouco descritivo.
Cache de CI inválido. Trocar o compilador invalida cache de build — o primeiro pipeline depois da mudança vai parecer um retrocesso.
SSR e prerender. O pipeline de build de servidor tem outros pontos de extensão; teste separado do build de browser.
Produção. A orientação do time é manter build de produção no ngc até o ngp entrar em uma minor do Angular 22.
O que eu recomendo fazer agora
Para times que rodam Angular em produção, a sequência que faz sentido é:
Trave o TypeScript na versão atual e mapeie a dependência: grep -r "compiler-cli\|ts.Transformer\|createProgram" --include=*.ts no repositório de ferramentas.
Meça baseline com o pipeline real (build frio e rebuild incremental, com e sem cache) antes de qualquer teste com o beta.
Teste o ngp em branch isolada , com build de produção e SSR, não só no dev server.
Não combine a migração do compilador com a migração para TypeScript 7 na mesma janela. Duas variáveis independentes numa janela só transforma um bug em investigação de dias.
Na Maquinaweb, projetos Angular convivem com back-ends em Python, Node.js e .NET, então a decisão de subir TypeScript nunca é local — ela afeta pipeline, lint, bibliotecas compartilhadas e times que entregam em ritmos diferentes. É esse tipo de decisão de engenharia, e não o release em si, que define o custo real.
Fechamento
O ngp é a notícia mais relevante do ecossistema Angular neste ciclo, mas é beta de compilador: ganho real de velocidade em build frio, risco real em tooling. Para quem tem um app médio e sem customizações de build, o caminho é esperar a minor estável e acompanhar os benchmarks da comunidade. Para quem mantém bibliotecas, builders ou ferramentas internas acopladas ao compiler-cli , começar o inventário agora evita uma migração forçada depois.
Se o seu time precisa decidir entre migrar o compilador, subir de versão do TypeScript ou reestruturar o pipeline de build de um projeto Angular sob medida, o time da Maquinaweb pode ajudar a mapear o impacto e desenhar o plano de migração.
Fontes
Continue lendo
Desenvolvimento Polícia Civil de SP: 22 mil credenciais à venda por US$ 40 mil, Barracuda com root explorado e Nitori com 37,6 milhões
Grupo bl33dr00t põe 22 mil credenciais da Polícia Civil de SP à venda por US$ 40 mil enquanto a SSP nega invasão. Na mesma janela, a Barracuda confirma exploração de falhas que dão root em gateways ESG, a CISA corre contra o prazo de 13/11 e a Nitori expõe até 37,6 milhões de registros.
Ler artigo →
Desenvolvimento RHEL 10.3 sela o sistema com criptografia e o EPYC 9006 chega a 256 núcleos: a base física dos agentes de IA
Red Hat libera RHEL 10.3 e 9.9 com imagens seladas, MCP server GA para diagnóstico assistido e GCC 16. No mesmo dia, a AMD põe à venda o EPYC 9006 (Zen 6) com até 256 núcleos. E o Paraná usa IA do Google para encurtar a busca por terapia oncológica.
Ler artigo →
Desenvolvimento N-central fora do ar no mundo inteiro: 33 zero-days derrubam o RMM que administra o resto
N-able tirou o N-central hospedado do ar em todo o mundo depois que um pesquisador publicou 33 zero-days com PoC e lançou hotfix com 7 CVEs. Na mesma janela, o Citrus usa VLESS e LLMs em ataques, e a Fireworks AI confirma vazamento de datasets e pesos de modelos.
Ler artigo →