Fable Converteu o Pylint para Rust
Projeto e Reivindicações Principais
- Reimplementação em Rust do Pylint visa:
- Saída idêntica byte a byte ao Pylint.
- Os mesmos bugs e mensagens de crash do Pylint.
- Grandes ganhos de velocidade (15–2300×, mediana ~85×) em bases de código reais.
Verificação e Correção
- Vários comentaristas duvidam que a equivalência byte a byte completa seja realisticamente verificável.
- Um script de harness no repositório testa prylint vs Pylint em projetos selecionados, mas as pessoas observam:
- Os testes cobrem apenas o comportamento observado, não todos os casos de borda.
- Comportamento idêntico nos testes não garante comportamento idêntico globalmente, especialmente com plugins.
- Alguns veem a reivindicação de “mesmos crashes, mesmos bugs” como um sinal de cópia automática em vez de design cuidadoso.
Discussão de Desempenho
- O ganho de 2328× no destaque vem de um diretório patológico no repositório do Black envolvendo
duplicate-code; isso foi depois otimizado no próprio Pylint. - Alguns argumentam que ganhos tão grandes provavelmente refletem a correção de patologias algorítmicas que também poderiam ter sido corrigidas em Python.
- Outros respondem que grandes ganhos muitas vezes vêm da eliminação de trabalho desnecessário e que compiladores/linters estão cheios desse tipo de oportunidade.
Comparação com Ruff e Pylint
- Vários comentários: “Por que não usar apenas Ruff?”
- Contra-argumentos:
- Ruff ainda não cobre todos os checks do Pylint; muitos projetos executam vários linters.
- O Pylint ainda fornece verificações mais profundas ou diferentes, importantes em ambientes mais rigorosos.
- Contra-argumentos:
- Prylint parece reutilizar código do Ruff internamente, o que alguns criticam como reembalagem de trabalho já existente.
Confiança, Manutenção e Comunidade
- Preocupações sobre:
- O projeto ser em grande parte gerado por LLM com mínima responsabilidade humana.
- Manutenção de longo prazo, dado que muitos projetos passados “portados por IA” estagnaram rapidamente.
- O risco de executar ferramentas não comprovadas e geradas automaticamente sobre código de produção.
- Outros argumentam que apenas correção e testes importam; o método de criação é secundário.
Experiência do Desenvolvedor e Fluxo de Trabalho
- Muitos consideram o Pylint atual lento demais para bases de código grandes ou hooks de pre-commit; até ~2 segundos por arquivo é visto como doloroso para trabalho interativo.
- Ferramentas mais rápidas baseadas em Rust são atraentes, especialmente para CI e para evitar interpretadores Python alternativos.
Tradução de Código Assistida por LLM e Implicações Mais Amplas
- Vários participantes descrevem ports semelhantes conduzidos por LLM (por exemplo, ferramentas Python e bibliotecas C para outras linguagens) usando “swarm” de agentes, loops automatizados de compile/test/fix e fuzzing.
- Alguns preveem:
- Migração sistemática de linguagem para linguagem como um nicho forte para LLMs.
- Pressão sobre projetos de código aberto, já que IA torna clonagem e reimplementação baratas.
- Uma mudança no valor do programador, de escrever código manualmente para projetar sistemas e verificação.