Ir para o conteúdo principal
Voltar aos artigos

tsrs acelera a discussão: compilador novo precisa comparar diagnósticos, não só segundos

A implementação experimental de TypeScript em Rust pede avaliação de compatibilidade, memória e integração antes de qualquer substituição.

·3 min de leitura·11 visualizações

Cloudflare, VoidZero e Max Schwenk anunciaram o tsrs, uma implementação em Rust do compilador TypeScript incubada no ecossistema Oxc e licenciada em Apache-2.0.[11] O projeto foi desenvolvido com agentes e testes de conformidade do TypeScript, sem transferir da equipe original a responsabilidade pela evolução da linguagem.[11] É uma proposta de implementação, não uma nova autoridade sobre o significado dos tipos.

O que muda para quem desenvolve

O ganho anunciado chega a oito vezes na checagem de tipos e inclui menor uso de memória, mas a reportagem também cita uma comparação com TypeScript 7.1 beta em que a vantagem foi de 2,7 vezes.[11] A base de comparação muda a interpretação do resultado.

A leitura de engenharia é avaliar equivalência antes de celebrar velocidade. Um compilador que termina antes, mas não aceita a configuração necessária ou altera um diagnóstico importante, pode não atender ao contrato da pipeline. O custo de adaptação deve entrar na comparação.

A versão continua experimental, sem modo watch e servidor de linguagem, com opções ainda não suportadas e possível mudança na ordem dos diagnósticos.[11] Além disso, acompanha TypeScript 7, não constituindo uma substituição transparente para qualquer projeto nas linhas 5 ou 6.[11] Isso delimita o tipo de experimento que faz sentido agora.

Como aplicar

Use uma branch isolada e fixe a revisão do código, a configuração e as versões dos compiladores. Comece com uma execução que preserve a ferramenta atual como referência. Registre duração, pico de memória, diagnósticos e código de saída em cada alternativa.

Inclua arquivos com erros conhecidos, não apenas um projeto que já compila. O exercício deve demonstrar que os problemas relevantes continuam sendo detectados. Normalize a comparação pela identidade do arquivo, posição e mensagem, sem exigir uma ordem idêntica caso ela não faça parte do contrato do consumidor. Investigue divergências antes de classificá-las como ganhos ou defeitos.

A matéria informa código de saída 2 para erro de tipos no tsrs, em vez do 1 utilizado pelo tsc.[11] Revise scripts que interpretam valores específicos e confirme se um erro realmente bloqueia a entrega. Uma pipeline verde por interpretação incorreta do código de saída seria um resultado pior, mesmo com checagem mais rápida.

Cuidados e limites

Parte das otimizações já influencia o compilador da Microsoft, segundo a reportagem.[11] Não atribua toda a diferença a Rust contra Go nem suponha que o ganho permanecerá igual entre versões.

A possibilidade de compilação para WebAssembly abre cenários no navegador e em Workers, mas não elimina as limitações experimentais descritas.[11] Só considere substituir o caminho principal depois de demonstrar compatibilidade no seu conjunto de arquivos e de prever retorno simples à implementação anterior.

Fonte

[11] Fonte: InfoQ

Continue lendo