- Trình quản lý gói APT của Debian dự kiến sẽ bao gồm mã và các phụ thuộc dựa trên Rust từ sau tháng 5/2026
- Ở giai đoạn đầu, phạm vi tích hợp gồm trình biên dịch Rust, thư viện chuẩn và hệ sinh thái Sequoia
- Trình phân tích tệp
.deb, .ar, .tar và mã xác minh chữ ký HTTP là các khu vực cải tiến chính về an toàn bộ nhớ và tăng cường kiểm thử đơn vị
- Các port không có toolchain Rust cần xây dựng môi trường Rust trong vòng 6 tháng hoặc ngừng hỗ trợ (sunset)
- Đây là bước đi nhằm giúp toàn bộ dự án chuyển sang công cụ và công nghệ hiện đại, tránh bị kìm hãm bởi yêu cầu tương thích với phần cứng cũ
Kế hoạch đưa mã Rust vào APT
- Dự kiến đưa mã Rust và phụ thuộc cứng (hard dependency) vào APT sau tháng 5/2026
- Thời điểm áp dụng là sau tháng 5/2026, trước đó sẽ không triển khai
- Phạm vi tích hợp ban đầu được giới hạn ở trình biên dịch Rust, thư viện chuẩn và hệ sinh thái Sequoia
Mục tiêu nâng cao chất lượng mã và độ an toàn
- Mã phân tích tệp
.deb, .ar, .tar và mã xác minh chữ ký HTTP là các mục tiêu chính của việc đưa Rust vào
- Tài liệu nêu rõ các khu vực này sẽ hưởng lợi lớn từ ngôn ngữ an toàn bộ nhớ và hệ thống kiểm thử đơn vị được tăng cường
Yêu cầu đối với người bảo trì port
- Các port không có toolchain Rust phải thiết lập môi trường Rust trong vòng 6 tháng
- Nếu không, port tương ứng có thể bị ngừng hỗ trợ (sunset)
Định hướng của dự án
- Nhấn mạnh rằng dự án Debian cần phát triển bằng cách tận dụng công cụ và công nghệ hiện đại
- Đồng thời nêu rõ không nên để tiến độ phát triển bị chậm lại vì cố gắng chạy theo phần cứng cũ hoặc thiết bị retro computing
Thông tin khác
- Người gửi là nhà phát triển cốt lõi của Debian và Ubuntu, Julian Andres Klode
- Email được đăng trên mailing list dành cho nhà phát triển Debian là debian-devel
- Có đính kèm chữ ký PGP (
signature.asc)
- Không đề cập thêm chi tiết kỹ thuật hay thay đổi lịch trình
1 bình luận
Ý kiến trên Hacker News
Có vẻ cuối cùng cũng đến lúc. Việc vẫn giữ mã phân tích dữ liệu không đáng tin cậy bằng C là một khoản nợ kỹ thuật ngày càng phình to theo thời gian
Rust không hẳn khó viết hơn C quá nhiều, và nếu ngày nay làm lại C dựa trên hiểu biết hiện tại về thiết kế ngôn ngữ và độ an toàn của mã, có lẽ sẽ ra một ngôn ngữ như Rust
Nếu có thể bỏ hỗ trợ x86 32-bit vì lý do thực dụng, thì các kiến trúc này cũng vậy. Nếu thật sự muốn duy trì chúng thì phải tự xây backend toolchain Rust
Go là ngôn ngữ có lẽ gần nhất, nhưng chưa từng được bàn tới ở mức dùng cho hệ thống lõi như systemd. Cũng tò mò không biết trước đây khi thêm C++, Python, Perl vào thì có tranh cãi tương tự không
.deb,.ar,.tarvà mã xác minh chữ ký HTTP sẽ hưởng lợi từ ngôn ngữ an toàn bộ nhớ”, nhưng tôi vẫn nghi ngờ việc phải viết lại bằng ngôn ngữ mới những đoạn mã đã ổn định suốt 30 năm sẽ đem lại lợi ích thực tế nàoLiệu có đáng để bỏ đi mã đã được kiểm chứng thực chiến rồi tạo thêm vấn đề tương thích và lỗi mới không
Xu hướng viết lại hệ thống lõi bằng Rust đang mạnh lên, nhưng tôi vẫn nghi ngờ liệu việc viết lại các công cụ lâu đời có thực sự cải thiện bảo mật hay không
Tôi hiểu việc đưa hệ thống mới vào là khó, nhưng cảm giác như ta vẫn đang tiếp tục chồng thêm các lớp lên trên những quyết định thiết kế từ thời điện báo
Thứ nhất, gần như không có người đóng góp mới nào muốn đụng vào các codebase C/C++ cũ. Chuyển sang Rust sẽ dễ thu hút lập trình viên mới hơn
Thứ hai, độ tin cậy được kiểm chứng qua tần suất sử dụng, còn độ an toàn chỉ được kiểm chứng qua tấn công. Không thể nói mã cũ đã trải qua mọi vector tấn công. Vì vậy có cơ sở để tăng cường bảo mật một cách chủ động
Theo luồng thư Debian, Rust thực ra đã là yêu cầu bắt buộc trên hầu hết các kiến trúc phát hành của Debian
Trong email liên quan, chỉ alpha, hppa, m68k, sh4 được nêu là ngoại lệ. Tôi khá tò mò về số phận sau này của các kiến trúc đó
Rust có mục tiêu Tier 3 cho m68k, nhưng không có cho các kiến trúc khác. Tôi tò mò về các trường hợp sử dụng thực tế
Khá bất ngờ khi chúng vẫn còn trong khi x86 32-bit và MIPS đã bị loại. Cá nhân tôi cũng có chút hoài niệm, nhưng không rõ thực tế chúng còn được dùng vào đâu
Trước đây LLVM từng có backend DEC Alpha, nhưng chuyện đó đã lâu rồi
Tôi muốn cộng đồng Rust thay vì chen vào các dự án sẵn có thì hãy tự xây công nghệ hiện đại mới để chứng minh
Những dự án độc lập như Redox là ví dụ như vậy, nên hơi tiếc vì kiểu thử nghiệm này không được đẩy mạnh hơn
Tất nhiên vẫn có những người quá khích kiểu “hãy viết lại bằng Rust”, nhưng chuyện lần này không giống vậy
Dùng thư viện chuẩn Rust thì không sao, nhưng tôi không muốn kéo theo 500 gói cargo chỉ để build một trình phân tích deb đơn giản
Có lẽ hợp lý hơn nếu chờ tới khi bản port Rust-for-GCC ổn định
Kernel cũng chưa định biến Rust thành bắt buộc cho tới khi có hỗ trợ GCC.
Khi có nhiều triển khai hơn, ngôn ngữ sẽ bớt bất ổn hơn
Tuy vậy, nếu cắt hỗ trợ kiến trúc ngay bây giờ thì sau này khi có toolchain Rust, quy trình quay lại có thể sẽ phức tạp
Thậm chí rustc_codegen_gcc có khả năng ổn định trước
Xin nhắc lại rằng tác giả email trong cuộc thảo luận Rust của Debian là người bảo trì gói keepassxc
Trước đây cũng từng có các luồng thảo luận nói rằng người này có cách hành xử khá thô với lập trình viên upstream và người dùng
Thật thú vị khi thấy quá trình một người thay đổi quan điểm. Liên kết phát biểu trước đây
Tôi nghĩ Rust chỉ là một làn sóng cường điệu. Trong thế giới nhúng, C vẫn là vua.
Thực tế tôi chưa từng thấy ai xung quanh mình dùng hoặc cân nhắc dùng Rust
Vẫn giữ được hiệu năng và hiệu quả bộ nhớ trong khi tốc độ phát triển nhanh.
Nhược điểm duy nhất là kích thước binary. Tôi cho rằng tương lai của Rust đã rất vững chắc
Dù vậy, thứ hấp dẫn không chỉ là an toàn bộ nhớ mà còn là chất lượng tổng thể của ngôn ngữ và toolchain
Tôi nghĩ môi trường đa ngôn ngữ (polyglot) chỉ tạo thêm vấn đề.
Python, Node, Go, Rust... mỗi thứ lại cần toolchain và trình quản lý gói riêng nên rất phức tạp
Loại bỏ được buffer overflow bằng Node thì lại tăng tấn công chuỗi cung ứng.
Thà làm lại từ đầu còn hơn, và nếu muốn dùng Rust trên diện rộng thì nên góp sức cho Redox OS
Việc viết lại mọi thứ bằng một ngôn ngữ là không thực tế, còn dồn sức cho Redox có khi lại càng kém hiệu quả
Rust đã là ngôn ngữ được kiểm chứng đủ nhiều, và với tư cách một ngôn ngữ biên dịch ít tự bắn vào chân hơn C khi sửa đổi, nó có giá trị rõ ràng
Việc bỏ các kiến trúc quá cũ cũng không phải điều quá đáng
Nên loại hay thêm ngôn ngữ nào là việc của các maintainer Debian quyết định