Phiên bản thứ tư của các bản vá dành cho nhân Linux có hỗ trợ ngôn ngữ Rust

Miguel Ojeda, tác giả của dự án Rust-for-Linux, đã đề xuất phiên bản thứ tư của các thành phần để phát triển trình điều khiển thiết bị bằng ngôn ngữ Rust để các nhà phát triển nhân Linux xem xét. Hỗ trợ Rust được coi là thử nghiệm, nhưng đã được thống nhất để đưa vào nhánh linux-next và đủ trưởng thành để bắt đầu công việc tạo các lớp trừu tượng trên các hệ thống con kernel, cũng như viết trình điều khiển và mô-đun. Sự phát triển này được tài trợ bởi Google và ISRG (Nhóm nghiên cứu bảo mật Internet), nhóm sáng lập dự án Let's Encrypt và thúc đẩy HTTPS cũng như phát triển các công nghệ để cải thiện bảo mật Internet.

Hãy nhớ lại rằng những thay đổi được đề xuất giúp có thể sử dụng Rust làm ngôn ngữ thứ hai để phát triển trình điều khiển và mô-đun hạt nhân. Hỗ trợ Rust được trình bày dưới dạng tùy chọn không được bật theo mặc định và không dẫn đến việc Rust được đưa vào làm phần phụ thuộc xây dựng bắt buộc cho kernel. Sử dụng Rust để phát triển trình điều khiển sẽ cho phép bạn tạo trình điều khiển an toàn hơn và tốt hơn với nỗ lực tối thiểu, không gặp phải các vấn đề như truy cập bộ nhớ sau khi giải phóng, hủy tham chiếu con trỏ null và lỗi tràn bộ đệm.

Xử lý an toàn bộ nhớ được cung cấp trong Rust tại thời điểm biên dịch thông qua kiểm tra tham chiếu, theo dõi quyền sở hữu đối tượng và thời gian tồn tại của đối tượng (phạm vi), cũng như thông qua đánh giá tính chính xác của quyền truy cập bộ nhớ trong quá trình thực thi mã. Rust cũng cung cấp khả năng bảo vệ chống tràn số nguyên, yêu cầu khởi tạo bắt buộc các giá trị biến trước khi sử dụng, xử lý lỗi tốt hơn trong thư viện chuẩn, áp dụng khái niệm tham chiếu và biến bất biến theo mặc định, cung cấp kiểu gõ tĩnh mạnh để giảm thiểu lỗi logic.

Phiên bản mới của các bản vá tiếp tục loại bỏ các nhận xét được đưa ra trong quá trình thảo luận về phiên bản thứ nhất, thứ hai và thứ ba của các bản vá. Trong phiên bản mới:

  • Quá trình chuyển đổi sang sử dụng bản phát hành ổn định của Rust 1.58.0 làm trình biên dịch tham chiếu đã được thực hiện. Trong số những thay đổi cần thiết cho dự án, chưa có trong bộ công cụ chính của Rust, cờ “-Zsymbol-mangling-version=v0” (dự kiến ​​có trong Rust 1.59.0) và chế độ “maybe_uninit_extra” (dự kiến ​​có trong Rust 1.60.0 .XNUMX) được ghi chú. .
  • Đã thêm tính năng kiểm tra tự động về tính khả dụng của các công cụ Rust phù hợp và mở rộng khả năng kiểm tra hỗ trợ Rust trong hệ thống.
  • Các khái niệm trừu tượng mới đã được đề xuất để truy cập các bảng nhận dạng thiết bị (“IdArray” và “IdTable”) từ mã Rust.
  • Đã thêm các lớp để truy cập các chức năng liên quan đến bộ đếm thời gian (khung đồng hồ).
  • Trình điều khiển nền tảng hiện được xác định thông qua việc triển khai đặc điểm.
  • Một macro mới đã được thêm vào để đơn giản hóa việc đăng ký trình điều khiển nền tảng và một mẫu trình điều khiển chung mới đã được đề xuất.
  • Đã thêm macro cho cấu trúc "dev_*".
  • Đã thêm phương thức "{read,write}*_relaxed" cho loại IoMem .
  • Đã xóa thuộc tính FileOpener để đơn giản hóa thao tác với tệp.
  • Tham số “ThisModule” đã được thêm vào các đối số được truyền khi đăng ký trình điều khiển.
  • Một mẫu tiêu chuẩn để tạo các mô-đun hạt nhân bằng ngôn ngữ Rust được đề xuất.

Nguồn: opennet.ru

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