- Pyrefly de Meta es un verificador de tipos para Python de código abierto y una extensión para IDE desarrollada en Rust
- Ofrece análisis ultrarrápido e integración con IDE, y fue creado para superar las limitaciones de Pyre
- Adopta como principios la inferencia automática de tipos, el soporte para bases de código grandes y la filosofía de código abierto
- Busca mejorar el sistema de tipos en todo el ecosistema mediante colaboración y aportes con la comunidad de Python
- Actualmente se lanzó en versión alfa y están solicitando activamente comentarios y contribuciones de la comunidad
Introducción
- Pyrefly es un proyecto de código abierto de Meta: un verificador estático de tipos para Python y una extensión para IDE, desarrollado en Rust
- Ayuda a detectar errores de forma anticipada al verificar la consistencia de tipos antes de ejecutar el código
- Puede usarse tanto con integración en IDE como desde CLI, lo que ofrece un flujo de trabajo flexible
- Su objetivo es contribuir al avance del sistema de tipos de Python y de distintas bibliotecas mediante la colaboración con la comunidad de código abierto
Contexto del desarrollo de Pyrefly
- En 2017, Meta desarrolló un nuevo verificador de tipos, que luego sería Pyre, para la gran base de código en Python de Instagram
- Pyre tomó como referencia diseños sólidos como Hack y Flow, y fue desarrollado en OCaml por razones de rendimiento
- Con el tiempo surgieron limitaciones a medida que crecían las necesidades de evolución del sistema de tipos y de integración con IDE
- También usaron herramientas de la comunidad como Pyright, pero como no cubrían del todo requisitos como la exploración de código a gran escala o la exportación de tipos, intentaron desarrollar Pyrefly
Principios principales de Pyrefly
-
1. Rendimiento
- Los desarrolladores necesitan una verificación de tipos rápida en cada pulsación de tecla justo después de escribir código
- Pyrefly está construido en Rust con una arquitectura de alto rendimiento capaz de analizar 1.8 millones de líneas por segundo incluso en bases de código enormes
-
2. Diseño centrado en el IDE
- Desde el inicio se diseñaron las abstracciones para que IDE y CLI mantengan la misma visión
- En Pyre esto se añadió después, pero en Pyrefly la consistencia se enfatiza desde la fase de diseño
-
3. Inferencia
- Incluso en código Python sin anotaciones ni tipos explícitos, ofrece inferencia automática de tipos
- Muestra en el IDE los tipos de valores de retorno y variables locales, y para ayudar a escribir mejor código, permite insertar automáticamente el tipo inferido al hacer doble clic
-
4. Código abierto
- Pyrefly está publicado en GitHub bajo licencia MIT, y reciben con gusto PR e informes de issues de la comunidad
- Busca una comunicación activa a través de un canal de Discord, en vínculo con el ecosistema de Python y bibliotecas clave de Meta como PyTorch
El futuro de Pyrefly
- Está avanzando con el objetivo de mejorar el lenguaje Python y la experiencia de los desarrolladores junto con la comunidad
- Desde los inicios del desarrollo de Pyre se mantuvo la apertura del código y la contribución a PEP, y con Pyrefly planean maximizar las ventajas del uso de tipos para desarrolladores, bibliotecas y principiantes
- Meta planea compartir diversas experiencias basadas en su uso de tipos en lenguajes dinámicos y en sus resultados, para impulsar una mejora en la calidad de los tipos dentro del ecosistema
- Actualmente Pyrefly está en versión alfa, pero siguen trabajando en corrección de errores y nuevas funciones con el objetivo de un lanzamiento oficial este verano
- Los comentarios de la comunidad son muy importantes, y piden activamente reportes de issues y solicitudes de mejora tras usar Pyrefly
Guía sobre el uso de la versión alfa de Pyrefly y la comunidad
- El proceso de desarrollo de Pyrefly y sus detalles técnicos se presentaron en Meta Tech Podcast y en charlas como PyCon US
- También comparten más novedades a través de distintos canales como sitios relacionados con Meta Open Source, YouTube, Facebook, Threads, X y LinkedIn
1 comentarios
Opiniones en Hacker News
uves tan popular, da la sensación de quetypodría ganar en este espacio. Si sale mal, podría darse una situación como Atom o Flow, donde un equipo interno termina siendo desplazado por open source externo y desde arriba empiece a surgir el ambiente de "¿de verdad necesitamos este equipo? Mejor pasémoslo a open source". Parece ser algo a lo que la gerencia (¿Aaron Pollack?) debería prestar atención.upstream, lo que llevó a migrar a mercurial; del lado de mercurial sí aceptaron con gusto las contribuciones. Explica que, como las herramientas internas cambian tan rápido, tiene sentido ser dueño de los propios proyectos.mypysigue existiendo.mypy.pyreflyno está atado solo avscode, y se pide un poco más de consideración hacia que distintas personas tienen distintas preferencias.pycharmtampoco es objetivamente mejor. La persona comenta que le resulta cómodo el desarrollo remoto envscode, y que no le gustaría ir a internet a decir quepycharmle parece malo.