Các nhà phát triển Python đang trải qua một thời kỳ phục hưng trong các công cụ phát triển, với ba trình kiểm tra kiểu mới dựa trên Rust—Pyrefly, Ty và Zuban—hứa hẹn hiệu suất cực nhanh. Tuy nhiên, khi cộng đồng đưa các công cụ này vào thử nghiệm, một bức tranh phức tạp dần lộ ra khi tốc độ thuần túy phải được cân bằng với độ chính xác, tính đầy đủ của tính năng và khả năng tích hợp với hệ sinh thái Python hiện có.
Nhu Cầu Về Tốc Độ Thúc Đẩy Sự Đổi Mới
Bối cảnh phát triển Python đã được chuyển đổi bởi sự xuất hiện của ba trình kiểm tra kiểu được cung cấp bởi Rust trong vòng một năm qua. Pyrefly tuyên bố các chỉ số hiệu suất ấn tượng, kiểm tra kiểu hơn 1,85 triệu dòng mã mỗi giây và hoàn thành việc phân tích codebase PyTorch chỉ trong 2,4 giây so với 4,7 giây của Pyright. Lợi thế về tốc độ này đại diện cho một sự thay đổi cơ bản trong cách các nhà phát triển có thể làm việc với tính năng kiểm tra kiểu được bật trong quá trình phát triển tích cực thay vì như một bước kiểm tra lỗi riêng biệt. Phản hồi từ cộng đồng phản ánh cả sự phấn khích lẫn thận trọng, khi các nhà phát triển thử nghiệm các công cụ này trên các dự án thực tế của họ để xem liệu lợi ích về hiệu suất có phải trả giá bằng độ tin cậy hay không.
Nếu ruff & uv đã chứng minh điều gì đó, thì đó là một công cụ không tốn công sức, mang lại lợi ích ròng và nhanh chóng sẽ được chấp nhận. Các trình kiểm tra kiểu mới không cần phải hoàn hảo. Chúng cần đủ tốt, dễ dàng tích hợp và có tỷ lệ dương tính giả thấp.
So sánh hiệu suất trên cơ sở mã nguồn PyTorch
- Pyrefly: 2.4 giây
- Pyright: 4.7 giây
- MyPy: 4.7 giây
Kiểm Tra Thực Tế Tiết Lộ Khoảng Trống Tính Năng
Việc kiểm tra từ cộng đồng đã phát hiện ra sự khác biệt đáng kể giữa các công cụ mới này và các giải pháp đã được thiết lập. Người dùng báo cáo rằng Pyrefly gặp khó khăn với các gói được nhập vào thiếu chú thích kiểu, tạo ra nhiều cảnh báo has no attribute. Công cụ này cũng tỏ ra bảo thủ trong suy luận kiểu của nó, đôi khi từ chối các mẫu mã hợp lệ mà các trình kiểm tra khác chấp nhận. Một người dùng lưu ý rằng Pyrefly đã không bắt được mã không thể truy cập trong khi Pyright thành công, trong khi một người khác nhận thấy tính năng tự động hoàn thành cho các mô-đun trả về tên kiểu chung chung thay vì nội dung mô-đun thực tế. Những hạn chế này làm nổi bật thách thức trong việc cân bằng giữa tốc độ và sự hiểu biết ngôn ngữ toàn diện.
Các Vấn Đề Thường Gặp Được Cộng Đồng Báo Cáo
- Suy luận kiểu dữ liệu bảo thủ chặn các đoạn code hợp lệ
- Thiếu các tính năng IDE (tự động import, chức năng goto declaration phù hợp)
- Khởi động language server chậm mặc dù type checking nhanh
- Hỗ trợ hạn chế cho các mẫu Python động và thành ngữ EAFP
Cuộc Chiến Tính Năng IDE Nóng Lên
Ngoài việc kiểm tra kiểu thuần túy, các nhà phát triển đang đánh giá các công cụ này dựa trên khả năng của máy chủ ngôn ngữ. Cộng đồng đã xác định các mức độ hỗ trợ khác nhau cho các tính năng IDE thiết yếu như tự động nhập, tài liệu chữ ký trong tự động hoàn thành và sự phân biệt giữa đến định nghĩa so với đến khai báo. Một số người dùng báo cáo rằng bất chấp những tuyên bố về tốc độ, Pyrefly có thể chậm một cách đáng ngạc nhiên khi tải và khởi tạo các tính năng của máy chủ ngôn ngữ. Sự cạnh tranh giữa các công cụ mở rộng đến cách tiếp cận của chúng với các thành ngữ Python, với một số trình kiểm tra ủng hộ việc thực thi kiểu nghiêm ngặt hơn triết lý dễ dàng hơn để xin lỗi hơn là xin phép (EAFP) truyền thống của Python.
Các Trình Kiểm Tra Kiểu Dựa Trên Rust Hiện Tại
- Pyrefly (từ Meta)
- Ty (từ Astral - nhóm Ruff/UV)
- Zuban (từ tác giả Jedi)
Chặng Đường Đến Sự Trưởng Thành
Bất chấp những hạn chế hiện tại, cộng đồng vẫn lạc quan về tương lai của kiểm tra kiểu trong Python. Nhiều nhà phát triển đang áp dụng cách tiếp cận chờ đợi và quan sát, lên kế hoạch đánh giá lại các công cụ này vào năm 2026 khi chúng trưởng thành hơn. Sự lặp lại nhanh chóng và phát triển tích cực của cả ba lựa chọn cho thấy rằng những khoảng trống tính năng hiện tại có thể chỉ là tạm thời. Thành công của các công cụ như Ruff và UV từ Astral (nhà phát triển của Ty) đã tạo ra sự tin tưởng rằng các nhóm này có thể cung cấp các giải pháp sẵn sàng cho sản xuất. Hiện tại, các nhà phát triển đang tận hưởng sự lựa chọn chưa từng có trong các giải pháp kiểm tra kiểu nhanh trong khi thừa nhận rằng hệ sinh thái vẫn đang trong giai đoạn đầu.
Sự bùng nổ của các công cụ Python mới phản chiếu thời kỳ chuyển đổi của JavaScript một thập kỷ trước, nhưng với những khác biệt quan trọng. Các công cụ ngày nay được xây dựng với các triết lý thiết kế cụ thể và các mục tiêu hiệu suất rõ ràng. Trong khi bối cảnh hiện tại có thể cảm thấy bị phân mảnh, sự cạnh tranh này thúc đẩy sự đổi mới mà cuối cùng mang lại lợi ích cho toàn bộ cộng đồng Python. Khi các công cụ này phát triển, các nhà phát triển có thể mong đợi một công cụ kiểm tra kiểu nhanh hơn, chính xác hơn, tích hợp liền mạch vào quy trình làm việc của họ mà không ảnh hưởng đến các tính năng giúp việc phát triển Python trở nên hiệu quả và thú vị.
Tham khảo: Pyrefly