CPython nới lỏng yêu cầu với Rust: Chuyển sang tích hợp tùy chọn để tránh làn sóng phản đối

Công nghệ14 tháng 9, 2026·5 phút đọc

Các nhà phát triển CPython quyết định không bắt buộc Rust trở thành dependency chính thức, thay vào đó xây dựng API Rust tùy chọn cho nội bộ. Cách tiếp cận thận trọng này nhằm tránh những tranh cãi tương tự như khi Linux kernel áp dụng Rust.

CPython nới lỏng yêu cầu với Rust: Chuyển sang tích hợp tùy chọn để tránh làn sóng phản đối

CPython nới lỏng yêu cầu với Rust: Chuyển sang tích hợp tùy chọn để tránh làn sóng phản đối

Các maintainer của CPython đã rút lại kế hoạch biến Rust thành dependency bắt buộc đối với bản tham chiếu của Python. Thay vào đó, họ tập trung vào việc xây dựng một API Rust tùy chọn cho quá trình phát triển nội bộ.

Theo Tomáš Šedovič, Giám đốc chương trình Rust, chia sẻ tại RustConf diễn ra ở Montréal tuần trước, động thái này "né tránh được rất nhiều lo ngại mà mọi người đã nêu ra". Šedovič và các cộng sự đang phối hợp với đội ngũ phát triển cốt lõi CPython để làm mượt quá trình tích hợp giữa hai môi trường.

Từ đề xuất táo bạo đến cách tiếp cận thận trọng

Vào tháng 11 năm ngoái, lập trình viên Python Emma Smith đã đưa ra ý tưởng tích hợp hỗ trợ Rust vào Python, ban đầu là để viết các extension module, nhưng với kế hoạch tổng thể biến Rust thành dependency bắt buộc trong CPython. Điều này tương tự mối quan hệ giữa Rust và ngôn ngữ C — nền tảng chính mà CPython được xây dựng dựa trên (do đó mới có tên gọi này).

C mang theo những rủi ro bảo mật liên quan đến bộ nhớ, vốn phải được cấp phát và giải phóng thủ công trong mã nguồn. Rust với khả năng an toàn bộ nhớ loại bỏ hoàn toàn nhóm lỗi này ngay từ giai đoạn biên dịch, chính vì thế nó thu hút sự quan tâm của cộng đồng CPython.

Tuy nhiên, việc bắt buộc sử dụng Rust đã tạo ra nhiều vấn đề:

  • Không phải mọi bản triển khai Python đều chạy trên nền tảng hỗ trợ Rust
  • Việc build chính Rust lại yêu cầu Python, tạo ra dependency vòng trong quy trình build
  • Tâm lý ngại thay đổi vốn có khi bị ép buộc nâng cấp

Đến tháng 5, Smith đã sửa đổi đề xuất để loại bỏ yêu cầu bắt buộc, thay vào đó đề xuất sửa đổi CPython để các nhà phát triển có thể viết extension module tùy chọn bằng Rust nếu họ muốn.

"Chúng ta đều biết rằng việc viết lại toàn bộ bằng Rust sẽ không khả thi, nhưng bắt đầu đưa Rust vào các thành phần ít thiết yếu trước, rồi dần dần để nó đảm nhận nhiều thành phần quan trọng hơn — đó là một kế hoạch tốt."

Đó là nhận định của Guido van Rossum, cha đẻ của Python, khi bình luận về đề xuất này.

Những thách thức kỹ thuật phía trước

Kể từ đó, công việc tích hợp Rust vào quy trình build vẫn tiếp tục, cùng với việc thiết kế API Rust cho phép sử dụng các crate (thư viện) Rust để xây dựng chính Python. API này dự kiến có mặt trong bản phát hành Python 3.16 (dự kiến tháng 10 năm 2027), đi kèm với thư viện nén Rust zlib như một crate thử nghiệm.

Python và Rust sẽ phải có những điều chỉnh để phối hợp ăn ý với nhau. Một số vấn đề cần giải quyết:

  • Hỗ trợ GCC: Rust cần hỗ trợ GNU Compiler Collection để đáp ứng "đuôi dài" các nền tảng ít phổ biến mà CPython vẫn hỗ trợ
  • Khác biệt trong cách build: Hai ngôn ngữ có cách xây dựng standard library và dynamic shared library khác nhau, cần được dung hòa
  • Công cụ sanitizer liên ngôn ngữ: Đảm bảo không xuất hiện trạng thái bộ nhớ không an toàn giữa hai cách xử lý cấp phát bộ nhớ. May mắn là đã có các nỗ lực như BorrowSanitizer đang được triển khai

Thách thức phức tạp nhất là mở rộng trait Drop của Rust để các đối tượng Python có thể nhận ngữ cảnh runtime khi bị giải phóng khỏi bộ nhớ. Šedovič cho biết điều này đòi hỏi nhiều nỗ lực suy nghĩ nghiêm túc từ phía các kỹ sư Rust.

Python cũng học hỏi từ Rust

Đề xuất ban đầu hồi tháng 11 đã ca ngợi Cargo là một hệ thống build "xuất sắc". Thực tế, Cargo đảm nhận công việc của nhiều chức năng riêng biệt trong thế giới Python, tự động hóa toàn bộ vòng đời phát triển: tải dependency, biên dịch, liên kết với các thư viện khác và kiểm thử.

Với Python, bạn cần các công cụ riêng biệt cho khởi tạo dự án, build, kiểm thử và phát hành. Python hiện đã theo bước Cargo với uv, một trình quản lý package và dự án thống nhất được viết bằng Rust.

Van Rossum thậm chí còn đùa rằng có lẽ CPython sẽ cần được đổi tên thành "CRPython".

Góc nhìn cho cộng đồng lập trình viên Việt Nam

Đối với các nhà phát triển Python tại Việt Nam, quyết định này mang lại sự yên tâm nhất định. Việc Rust chỉ là tùy chọn đồng nghĩa các dự án hiện tại không bị ảnh hưởng, trong khi những ai muốn thử nghiệm có thể tận dụng API mới để tăng hiệu năng cho các extension module quan trọng.

Xu hướng kết hợp Python và Rust cũng phản ánh một hướng đi đáng chú ý: các ngôn ngữ an toàn bộ nhớ đang dần thâm nhập vào hệ sinh thái lâu đời, nhưng theo cách hòa nhập dần dần thay vì cách mạng hóa đột ngột. Đây là bài học về quản lý thay đổi trong các dự án mã nguồn mở quy mô lớn.

Chia sẻ:FacebookX
Nội dung tổng hợp bằng AI, mang tính tham khảo. Xem bài gốc ↗