- Pyrefly của Meta là một trình kiểm tra kiểu cho Python mã nguồn mở đồng thời là tiện ích mở rộng cho IDE, được phát triển bằng Rust
- Hỗ trợ hiệu năng phân tích cực nhanh và tích hợp IDE, được phát triển để vượt qua các giới hạn của Pyre
- Lấy suy luận kiểu tự động, hỗ trợ codebase lớn và triết lý mã nguồn mở làm các nguyên tắc cốt lõi
- Mục tiêu là cải thiện hệ thống kiểu trên toàn hệ sinh thái thông qua hợp tác và đóng góp cùng cộng đồng Python
- Hiện đã phát hành bản alpha và đang tích cực kêu gọi phản hồi cũng như đóng góp từ cộng đồng
Giới thiệu
- Pyrefly là dự án mã nguồn mở gồm trình kiểm tra kiểu tĩnh cho Python và tiện ích mở rộng IDE do Meta phát triển bằng Rust
- Hỗ trợ phát hiện lỗi sớm bằng cách xác minh tính nhất quán của kiểu trước khi chạy mã
- Có thể dùng cả với IDE lẫn CLI, mang lại quy trình làm việc linh hoạt
- Hướng tới đóng góp cho hệ thống kiểu của Python và sự phát triển của nhiều thư viện khác nhau thông qua hợp tác với cộng đồng mã nguồn mở
Bối cảnh phát triển Pyrefly
- Năm 2017, Meta đã phát triển một trình kiểm tra kiểu mới cho codebase Python quy mô lớn của Instagram; về sau đó là Pyre
- Pyre tham khảo thiết kế vững chắc từ Hack, Flow..., và được viết bằng OCaml để tối ưu hiệu năng
- Theo thời gian, khi hệ thống kiểu phát triển và nhu cầu tích hợp IDE tăng lên, các giới hạn bắt đầu xuất hiện
- Meta cũng sử dụng các công cụ cộng đồng như Pyright, nhưng do vẫn có hạn chế trong việc đáp ứng các yêu cầu như duyệt code quy mô lớn và xuất kiểu, nên đã bắt tay phát triển Pyrefly
Các nguyên tắc chính của Pyrefly
-
1. Hiệu năng
- Nhà phát triển cần kiểm tra kiểu nhanh ở mỗi lần gõ phím ngay sau khi viết mã
- Pyrefly có kiến trúc triển khai Rust hiệu năng cao, có thể kiểm tra 1,8 triệu dòng mỗi giây ngay cả với codebase cực lớn
-
2. Thiết kế lấy IDE làm trung tâm
- Hệ thống trừu tượng được thiết kế ngay từ đầu để IDE và CLI giữ cùng một góc nhìn
- Nếu như với Pyre đây là phần được bổ sung về sau, thì với Pyrefly tính nhất quán đã được nhấn mạnh ngay từ giai đoạn thiết kế
-
3. Inference (suy luận)
- Hỗ trợ tự động suy luận kiểu ngay cả với mã Python không có chú thích và không khai báo kiểu rõ ràng
- Hiển thị kiểu của giá trị trả về và biến cục bộ trong IDE, đồng thời cho phép tự động chèn kiểu được suy luận khi nhấp đúp để hỗ trợ viết mã tốt hơn
-
4. Mã nguồn mở
- Pyrefly được công khai trên GitHub theo giấy phép MIT, hoan nghênh PR và báo cáo issue từ cộng đồng
- Hướng tới giao tiếp sôi nổi qua kênh Discord, đồng thời liên kết với hệ sinh thái Python và các thư viện chủ chốt của Meta như PyTorch
Tương lai của Pyrefly
- Đang hoạt động với mục tiêu cải thiện ngôn ngữ Python và trải nghiệm nhà phát triển cùng cộng đồng
- Ngay từ giai đoạn đầu phát triển Pyre, Meta đã duy trì việc mở mã nguồn và đóng góp cho PEP; với Pyrefly, công ty cũng có kế hoạch tối đa hóa lợi ích của việc sử dụng kiểu cho nhiều nhà phát triển, thư viện và cả người mới bắt đầu
- Dựa trên kinh nghiệm và thành quả trong việc áp dụng kiểu cho ngôn ngữ động, Meta dự định chia sẻ nhiều trải nghiệm hơn và thúc đẩy nâng cao chất lượng kiểu trong hệ sinh thái
- Hiện Pyrefly vẫn là bản alpha, nhưng đang liên tục sửa lỗi và bổ sung tính năng với mục tiêu ra mắt chính thức vào mùa hè này
- Phản hồi từ cộng đồng là rất quan trọng, và Meta tích cực kêu gọi báo cáo issue cũng như đề xuất cải tiến sau khi sử dụng Pyrefly
Hướng dẫn về bản alpha của Pyrefly và cộng đồng
- Quá trình phát triển Pyrefly và các chi tiết kỹ thuật đã được chia sẻ qua Meta Tech Podcast, các bài trình bày tại PyCon US và nhiều kênh khác
- Thông tin bổ sung sẽ được cung cấp qua nhiều kênh như các trang liên quan đến Meta Open Source, YouTube, Facebook, Threads, X và LinkedIn
1 bình luận
Ý kiến trên Hacker News
uvquá phổ biến nên có linh cảmtysẽ thắng trong lĩnh vực này. Nếu không cẩn thận, có thể rơi vào tình huống như Atom hay Flow, khi đội nội bộ bị dự án mã nguồn mở bên ngoài lấn át và từ cấp trên sẽ xuất hiện bầu không khí kiểu "đội này có thật sự cần thiết không? Hay chuyển sang dùng mã nguồn mở đi". Tôi nghĩ đây là điều phía quản lý (Aaron Pollack?) cần lưu tâm.