Cộng đồng phát triển Python đang thể hiện sự quan tâm đặc biệt đến hai thay đổi quan trọng được lên kế hoạch cho Python 3.14: việc chuyển đổi một số hàm được triển khai bằng C sang Python, và khả năng áp dụng API C kiểu HPy. Những thay đổi này, được nêu trong lộ trình mới công bố bởi nhóm Faster CPython, đang tạo ra nhiều cuộc thảo luận giữa các nhà phát triển về tác động của chúng đối với hiệu suất và khả năng tương thích.
Viết lại các hàm C bằng Python
Một trong những thay đổi đáng chú ý nhất được lên kế hoạch cho Python 3.14 là việc chuyển đổi một số hàm tích hợp từ triển khai C sang Python. Điều này bao gồm các hàm thường được sử dụng như any
, all
, và enumerate
. Mặc dù điều này có vẻ không hợp lý từ góc độ hiệu suất, nhưng thực tế thay đổi này nhằm cải thiện khả năng tối ưu hóa. Theo ghi nhận trong lộ trình của nhóm Faster CPython, thay đổi này sẽ cho phép trình tối ưu hóa nhìn thấy được các ranh giới gọi hàm, có thể dẫn đến cơ hội tối ưu hóa tốt hơn.
Hướng tới tích hợp HPy
Hướng tới Python 3.15, nhóm phát triển đang xem xét việc áp dụng API C kiểu HPy. Thay đổi này đặc biệt quan trọng vì nó gắn liền với việc triển khai tham chiếu số nguyên được gắn thẻ, có thể cải thiện đáng kể hiệu quả bộ nhớ và hiệu suất cho các phép toán số nguyên. API mới này ban đầu sẽ được sử dụng nội bộ, nhưng các công cụ như Cython và Pybind11 dự kiến sẽ áp dụng nó để bỏ qua chi phí của API truyền thống dựa trên PyObject*
.
Cải thiện hiệu suất
Các thay đổi được lên kế hoạch là một phần của sáng kiến tập trung vào hiệu suất bao gồm:
- Nâng cao khả năng của trình biên dịch JIT với việc tạo và tối ưu hóa mã được cải thiện
- Cơ chế đếm tham chiếu hiệu quả hơn
- Cải thiện thu gom chu kỳ cho quản lý bộ nhớ
- Tối ưu hóa mở rộng cho các phép toán số học
Subinterpreters và xử lý đồng thời
Lộ trình cũng bao gồm công việc quan trọng về subinterpreters, với kế hoạch triển khai một trình thực thi pool interpreter tương tự như các trình thực thi thread pool và process pool hiện có. Sự phát triển này có thể mang lại cơ hội mới cho xử lý đồng thời trong các ứng dụng Python, mặc dù theo các cuộc thảo luận của cộng đồng, việc áp dụng bởi các máy chủ web và bộ xử lý tác vụ nền vẫn đang ở giai đoạn đầu.
Những thay đổi này thể hiện một sự chuyển đổi đáng kể trong kiến trúc nội bộ của Python, có khả năng mang lại hiệu suất tốt hơn trong khi vẫn duy trì tính dễ tiếp cận và dễ sử dụng của Python. Đặc biệt, việc chuyển đổi từ C sang Python cho một số hàm cho thấy một bước đi chiến lược hướng tới việc tận dụng khả năng tối ưu hóa của chính ngôn ngữ thay vì chỉ dựa vào các triển khai cấp C.
Tham khảo: Berlakovitch, Felix, và Stefan Brunthaler. 2024. Cross Module Quickening - The Curious Case of C Extensions. DOI: 10.4230/LIPIcs.ECOOP.2024.6