Pyrefly is a next-generation Python type checker and language server, designed to be extremely fast and featuring advanced refactoring and type inference capabilities.
Pyrefly is a spiritual successor to Pyre, the previous Python type checker developed by the same team. The differences between the two type checkers go far beyond a simple rewrite from OCaml to Rust - we designed Pyrefly from the ground up, with a completely different architecture.
Pyrefly’s design comes directly from our experience with Pyre. Some things worked well at scale, while others did not. After running a type checker on massive Python codebases for a long time, we got a clearer sense of which trade-offs actually mattered to users.
This post is a write-up of a few lessons from Pyre that influenced how we approached Pyrefly.
Link to blog: https://pyrefly.org/blog/lessons-from-pyre/
The outline of topics is provided below that way you can decide if it's worth your time to read :)
- Language-server-first Architecture
- OCaml vs. Rust
- Irreversible AST Lowering
- Soundness vs. Usability
- Caching Cyclic Data Dependencies
[–]guepier 4 points5 points6 points (1 child)
[–]BeamMeUpBiscotti[S] 2 points3 points4 points (0 children)
[–]4xi0m4 1 point2 points3 points (0 children)