Fable convirtió Pylint a Rust
Proyecto y afirmaciones centrales
- La reimplementación de Pylint en Rust apunta a:
- Una salida idéntica byte a byte a Pylint.
- Los mismos bugs y mensajes de fallo que Pylint.
- Aceleraciones muy grandes (15–2300×, mediana ~85×) en bases de código reales.
Verificación y corrección
- Varios comentaristas dudan de que una equivalencia byte a byte completa sea verificable de forma realista.
- Un script de harness en el repositorio prueba prylint frente a Pylint en proyectos seleccionados, pero la gente señala:
- Las pruebas solo cubren el comportamiento observado, no todos los casos límite.
- Un comportamiento idéntico en las pruebas no garantiza un comportamiento idéntico en general, especialmente con plugins.
- Algunos ven la afirmación de “mismos fallos, mismos bugs” como una señal de copia automática más que de diseño cuidadoso.
Discusión sobre rendimiento
- La mejora de 2328× que aparece en el titular proviene de un directorio patológico en el repositorio de Black relacionado con
duplicate-code; esto luego fue optimizado en el propio Pylint. - Algunos sostienen que aceleraciones tan enormes probablemente reflejan la corrección de patologías algorítmicas que también podrían haberse corregido en Python.
- Otros responden que las mejoras importantes a menudo vienen de eliminar trabajo innecesario y que los compiladores/lintadores están llenos de esas oportunidades.
Comparación con Ruff y Pylint
- Varios comentarios: “¿Por qué no usar simplemente Ruff?”
- Contraargumentos:
- Ruff aún no cubre todas las comprobaciones de Pylint; muchos proyectos ejecutan varios linters.
- Pylint sigue ofreciendo comprobaciones más profundas o diferentes, importantes en entornos más estrictos.
- Contraargumentos:
- Prylint parece reutilizar internamente el código de Ruff, algo que algunos critican como reempaquetar trabajo existente.
Confianza, mantenimiento y comunidad
- Preocupaciones sobre:
- Que el proyecto esté generado en gran parte por LLM con poca propiedad humana.
- El mantenimiento a largo plazo, dado que muchos proyectos “portados por IA” del pasado se estancaron rápidamente.
- El riesgo de ejecutar herramientas auto-generadas y no probadas sobre código de producción.
- Otros argumentan que solo importan la corrección y las pruebas; el método de creación es secundario.
Experiencia de desarrollo y flujo de trabajo
- Muchos encuentran que Pylint es demasiado lento para bases de código grandes o hooks de pre-commit; incluso ~2 segundos por archivo se considera doloroso para el trabajo interactivo.
- Las herramientas más rápidas basadas en Rust resultan atractivas, especialmente para CI y para evitar intérpretes alternativos de Python.
Traducción de código asistida por LLM e implicaciones más amplias
- Varios participantes describen ports similares impulsados por LLM (por ejemplo, herramientas de Python y bibliotecas C a otros lenguajes) usando “swarms” de agentes, bucles automáticos de compilar/probar/arreglar y fuzzing.
- Algunos prevén:
- La migración sistemática de un lenguaje a otro como un nicho fuerte para los LLM.
- Presión sobre los proyectos de código abierto, ya que la IA hace barato clonar y reimplementar.
- Un cambio en el valor del programador, de escribir código a mano a diseñar sistemas y verificación.