Skip to content
Tech AI Wire

tsgolint v7 lança linting com consciência de tipos escrito em Go

O tsgolint v7 executa em Go as regras com consciência de tipos do typescript-eslint. Ele cobre 59 das 61 regras, e as duas alegações de velocidade do próprio projeto não batem.

Por Tech AI Wire Team

4 min de leitura

XLinkedIn
A terminal window showing oxlint running in type-aware mode over a TypeScript project, with the elapsed run time visible.

Em números

typescript-eslint type-aware rules implemented
59 of 61
speedup over ESLint measured in the Oxc project's own blog post
12-18x
speedup the same project's README claims for the same tool
20-40x
tsgolint speedup over ESLint, per the Oxc blog's benchmarks
typeorm
18x
microsoft/typescript
14x
vuejs/core
13x
microsoft/vscode
12x

O linting com consciência de tipos (type-aware linting) para TypeScript agora tem uma implementação estável escrita em Go. O projeto Oxc anunciou o tsgolint v7.0.2000 em 22 de julho de 2026, e a reportagem do InfoQ de 11 de setembro de 2026 lhe deu atenção mais ampla. Ele cobre 59 das 61 regras com consciência de tipos do typescript-eslint.

A distinção importa mais do que parece. A maioria das regras de lint só precisa ler a forma do seu código: um ponto e vírgula faltando, uma variável sem uso. Regras com consciência de tipos precisam saber o que as coisas de fato são. Perguntar se uma promise chega a receber um await significa perguntar ao verificador de tipos, e o verificador de tipos é a parte lenta.

É por isso que essas regras têm a fama de fazer uma rodada de lint levar minutos. O tsgolint não reimplementa o verificador de tipos para evitar esse custo. Ele constrói programas TypeScript reais sobre o typescript-go, que o README no GitHub do projeto descreve como "a implementação de TypeScript da Microsoft", e mira o TypeScript 7, de codinome Project Corsa.

Os próprios números do projeto não batem

Aqui o relato fica desconfortável, e vale mais dizer isso com franqueza do que escolher o número mais simpático.

O post do blog do Oxc traz tempos detalhados em um Apple M4 Pro de 12 núcleos, comparando com ESLint mais typescript-eslint em configurações equivalentes. Eles mostram uma melhoria de 12 a 18 vezes: microsoft/vscode cai de 83,2 segundos para 6,96 segundos, microsoft/typescript de 27,2 para 1,94, typeorm de 13,2 para 0,75 e vuejs/core de 12,3 para 0,95.

O próprio README do projeto resume seus benchmarks de outro jeito. Ele relata de 22 a 34 vezes nos mesmos quatro repositórios e afirma que a ferramenta é "20-40x mais rápida que ESLint + typescript-eslint em repositórios grandes".

As duas alegações vêm do mesmo projeto, sobre a mesma ferramenta, contra a mesma comparação. A reportagem do InfoQ cita a faixa mais baixa. Não vimos uma explicação para a diferença, e nenhum dos dois números foi reproduzido de forma independente. Trate o 12-18x do blog como o número com as contas visíveis por trás, e faça o benchmark do seu próprio repositório antes de planejar com qualquer um dos dois.

O blog explica, sim, de onde vêm os ganhos: "caminhos rápidos que evitam consultas caras ao verificador de tipos quando a sintaxe já dá a resposta". Uma regra, diz ele, ficou "35 vezes mais rápida no VS Code".

Versão 7 de um projeto que nunca teve uma versão 1

O tsgolint pulou direto de uma linha experimental 0.x para uma v7 estável, o que parece um salto de marketing e não é.

A versão agora acompanha o compilador que ela embute. Em v7.0.2000, o 7.0.2 é a versão do TypeScript, e o contador final é o número de patch do próprio tsgolint, que zera sempre que a versão do TypeScript muda. O InfoQ cita o raciocínio: "o tsgolint agora é versionado em relação ao compilador que embute". O efeito prático é que a string de versão diz qual verificador de tipos você está recebendo.

Detalhe
Lançamento estávelv7.0.2000, 22 de julho de 2026
TypeScript acompanhadov7.0.2
Regras implementadas59 de 61, acima das 43 do alfa de dezembro
TypeScript mínimo7.0
Instalaçãopnpm add -D oxlint oxlint-tsgolint@7
Execuçãopnpm oxlint --type-aware

O código começou como um protótipo dentro da organização typescript-eslint, criado pelo colaborador auvred, e o fork do Oxc o leva adiante com a permissão desse autor.

O que isso significa para os desenvolvedores

A restrição a verificar primeiro é o TypeScript 7. O linting com consciência de tipos exige aqui a 7.0 ou mais recente, e o InfoQ observa que algumas opções legadas do tsconfig e alguns recursos do TypeScript 6 ainda não têm suporte. Se o seu build está no TypeScript 6, isto é algo para planejar, não para adotar hoje à tarde.

Se você já está na 7, o experimento honesto é uma única execução cronometrada. Instale os dois pacotes, rode pnpm oxlint --type-aware no seu repositório e compare com a sua invocação atual do ESLint. O seu próprio número vale mais do que a tabela de benchmarks de qualquer pessoa, e este é um caso em que os números publicados nem sequer são consistentes entre si.

As duas regras que faltam importam mais do que a contagem sugere. Verifique se alguma das duas que não entraram é uma de que a sua equipe depende. Uma suíte de lint que roda 12 vezes mais rápido, mas descarta em silêncio a regra que pega a sua classe de bugs, é uma troca ruim.

Há aqui um padrão mais amplo que vale notar. Reescrever ferramentas de desenvolvimento em uma linguagem compilada por velocidade virou rotina neste ano. O Debian Code Search abandonou sua última dependência de C em favor de Go puro e igualou a versão em C. O autor do linker mold está reescrevendo-o de C++ para Rust. O que diferencia o tsgolint é que ele não reescreveu a parte difícil. Ele embutiu o próprio compilador da Microsoft e otimizou ao redor dele, o que é um jeito bem mais barato de estar correto.

Fontes

  1. tsgolint Reaches Stable v7, Bringing Go-Powered Type-Aware Linting to Oxlint - InfoQ
  2. Type-Aware Linting Stable - Oxc
  3. oxc-project/tsgolint - Type aware linting for oxlint - GitHub

Artigos relacionados

A terminal showing a large C++ project compiling, with the CMake percentage counter partway through and object files scrolling past.
Coding

LLVM debate compilar o ClangIR por omissão

Uma RFC do LLVM propõe compilar o ClangIR dentro do Clang por omissão. Ninguém o usaria sem uma opção, mas há estimativas que duplicam os tempos de compilação.