Hỗ trợ Rust cho nhân Linux phải đối mặt với sự chỉ trích từ Torvalds

Linus Torvalds đã xem xét các bản vá triển khai khả năng tạo trình điều khiển bằng ngôn ngữ Rust cho nhân Linux và đưa ra một số nhận xét quan trọng.

Những phàn nàn lớn nhất là do khả năng hoảng loạn() tiềm ẩn trong các tình huống lỗi, ví dụ: trong tình huống bộ nhớ thấp, khi các hoạt động phân bổ bộ nhớ động, bao gồm cả trong kernel, có thể không thành công. Torvalds tuyên bố rằng cách tiếp cận như vậy trong kernel về cơ bản là không thể chấp nhận được và nếu không hiểu điểm này, anh ta có thể NAKED hoàn toàn bất kỳ mã nào cố gắng sử dụng cách tiếp cận như vậy. Mặt khác, nhà phát triển bản vá cũng đồng ý với vấn đề này và cho rằng nó có thể giải quyết được.

Một vấn đề khác là việc cố gắng sử dụng loại dấu phẩy động hoặc loại 128 bit, không được chấp nhận đối với các môi trường như nhân Linux. Điều này hóa ra lại là một vấn đề nghiêm trọng hơn, vì hiện tại, thư viện Rust cốt lõi là không thể phân chia và đại diện cho một đốm màu lớn - không có cách nào để chỉ yêu cầu một số tính năng, ngăn chặn việc sử dụng một hoặc một chức năng có vấn đề khác. Việc giải quyết vấn đề có thể yêu cầu thay đổi trình biên dịch và thư viện rỉ sét, mặc dù hiện tại nhóm chưa có chiến lược về cách triển khai mô-đun hóa các thư viện ngôn ngữ.

Ngoài ra, Torvalds lưu ý rằng ví dụ về trình điều khiển được cung cấp là vô ích và khuyên chúng tôi nên sử dụng một số trình điều khiển giải quyết một trong những vấn đề thực sự làm ví dụ.

Cập nhật: Google đã công bố tham gia vào sáng kiến ​​đẩy mạnh hỗ trợ Rust vào nhân Linux và đã đưa ra các lý do kỹ thuật để giới thiệu Rust nhằm giải quyết các vấn đề phát sinh từ lỗi bộ nhớ. Google tin rằng Rust sẵn sàng tham gia C làm ngôn ngữ để phát triển các thành phần nhân Linux. Bài viết cũng cung cấp các ví dụ về việc sử dụng ngôn ngữ Rust để phát triển trình điều khiển kernel, trong bối cảnh sử dụng chúng trên nền tảng Android (Rust được công nhận là ngôn ngữ được hỗ trợ chính thức để phát triển Android).

Cần lưu ý rằng Google đã chuẩn bị nguyên mẫu ban đầu của trình điều khiển được viết bằng Rust cho cơ chế giao tiếp liên tiến trình Binder, điều này sẽ cho phép so sánh chi tiết về hiệu suất và tính bảo mật của việc triển khai Binder trong C và Rust. Ở dạng hiện tại, công việc vẫn chưa hoàn thành, nhưng đối với hầu hết tất cả các phần trừu tượng cơ bản của chức năng kernel cần thiết để Binder hoạt động, các lớp đã được chuẩn bị để sử dụng các phần trừu tượng này trong mã Rust.

Nguồn: opennet.ru

Thêm một lời nhận xét