Có vẻ như năm nay sẽ không phải là năm của Linux, vì mặc dù vào quý cuối cùng của năm ngoái, mọi thứ có vẻ như Linux và máy tính để bàn sẽ phát triển mạnh mẽ vào năm 2025, nhưng thực tế không phải lúc nào cũng như vậy.
Và chỉ vài ngày trước, Christoph Hellwig, một nhân vật nổi bật trong việc bảo trì các hệ thống con quan trọng như DMA, KVM, Slab Allocator và PowerPC trong nhân Linux , đã tuyên bố rõ ràng rằng ông phản đối việc hỗ trợ các bản vá tạo điều kiện thuận lợi cho việc phát triển trình điều khiển bằng Rust.
Christoph Hellwig đề cập rằng các bản vá được đề xuất bao gồm các lớp bao bọc xung quanh các chức năng của hệ thống con DMA để cho phép các trình điều khiển được viết bằng Rust sử dụng nó. Tuy nhiên, ông lập luận rằng chiến lược này làm phức tạp việc bảo trì mã và cần phải giữ nguyên tính rõ ràng của giao diện C , tránh việc mở rộng các lớp trừu tượng có thể cản trở việc tích hợp với phần còn lại của nhân hệ điều hành.
Các vấn đề về trộn ngôn ngữ trong một dự án
Theo Hellwig, vấn đề chính nằm ở chỗ việc tích hợp mã Rust tạo ra các phụ thuộc buộc các nhà phát triển hệ thống con C phải xem xét tác động của các sửa đổi của họ lên mã liên kết Rust. Điều này có nghĩa là bất kỳ điều chỉnh nào đối với các cấu trúc hoặc chức năng nội bộ của C đều có thể yêu cầu những thay đổi song song đối với mã Rust, tạo ra một tình huống khó duy trì về lâu dài.
Để tránh tình huống này, Hellwig khuyến nghị rằng các trình điều khiển trong Rust nên truy cập trực tiếp vào API DMA gốc trong C, thay vì sử dụng các lớp bao bọc bổ sung mà theo ông, sẽ làm ảnh hưởng đến khả năng bảo trì của nhân hệ điều hành.
Các nhà phát triển đề xuất các bản vá lỗi lập luận rằng họ sẽ duy trì mã Rust và, vì mục đích đó, đã sắp xếp các liên kết trong một thư mục con cụ thể (rust/kernel/dma.rs). Tuy nhiên, Hellwig đã phủ quyết các đề xuất này, cảnh báo rằng ông không cần phải chịu trách nhiệm tích hợp mã từ các ngôn ngữ khác vào các hệ thống con cốt lõi.
Ngoài ra, ông còn bình luận mạnh mẽ rằng nếu bạn muốn biến hạt nhân thành một tập hợp nhiều ngôn ngữ, bạn nên bắt đầu với trình điều khiển Rust thay vì áp đặt sự phức tạp này vào các lĩnh vực cơ bản.
Cuộc tranh cãi càng gay gắt khi những nhân vật như Jason Gunthorpe, người bảo trì TPM, VFIO và Infiniband tại NVIDIA, chia sẻ các ví dụ về việc thay đổi hệ thống con bộ nhớ, dù đúng đắn từ góc độ mã C, lại gây ra sự cố khi cố gắng biên dịch nhân hệ điều hành với hỗ trợ Rust. Những sự cố này cho thấy mối liên hệ giữa C và Rust có thể tạo ra các phụ thuộc bổ sung, cản trở quá trình phát triển phối hợp.
Điều đáng nói là cuộc thảo luận không chỉ giới hạn ở các khía cạnh kỹ thuật. Héctor Martín đề xuất rằng giải pháp có thể là áp dụng trực tiếp liên kết thông qua Linus Torvalds, bỏ qua người bảo trì hệ thống con DMA. Tuy nhiên, cách tiếp cận này có thể phá vỡ cấu trúc phân cấp truyền thống trong quá trình phát triển nhân hệ điều hành.
Hector cũng chỉ ra những hành vi mà ông cho là độc hại, thậm chí còn đề cập đến việc những lời chỉ trích của Hellwig, trong đó ông so sánh Rust với một "khối u ung thư", đã góp phần gây ra sự thất vọng của ông và cuối cùng dẫn đến quyết định từ chức người bảo trì nền tảng ARM/Apple trong nhân kernel chính. Mặc dù ông đã từ chức, nền tảng này vẫn sẽ tiếp tục được hỗ trợ bởi Sven Peter, người đã cam kết tiếp tục bảo trì nó.
Linus Torvalds đã tham gia cuộc thảo luận , nhấn mạnh rằng quá trình phát triển nhân kernel , dù chưa hoàn hảo, vẫn đang hoạt động và các cuộc thảo luận kỹ thuật nên tập trung vào các bản vá lỗi , không bị ảnh hưởng bởi áp lực bên ngoài hoặc sự quấy rối trên mạng xã hội. Đối với Torvalds , trọng tâm nên hoàn toàn là kỹ thuật, gạt bỏ các tranh chấp cá nhân sang một bên.
Việc Christoph Hellwig từ chối đưa các wrapper Rust vào hệ thống con DMA làm nổi bật sự căng thẳng giữa các nhà phát triển hạt nhân Linux. Trong khi một số người coi Rust là công cụ mạnh mẽ để tạo các dự án mới, những người khác lại lo ngại rằng việc tích hợp nhiều ngôn ngữ có thể cản trở khả năng bảo trì và tính nhất quán của cơ sở mã.
Tình hình này vẫn đang là chủ đề tranh luận và có thể có những tác động đáng kể đến tương lai của việc hỗ trợ Rust trong nhân Linux. Dù sao đi nữa, điều rõ ràng là cộng đồng phát triển Linux tiếp tục đối mặt với những thách thức phức tạp, trong đó các quyết định kỹ thuật cần được cân nhắc kỹ lưỡng để đảm bảo tính bền vững lâu dài của dự án.