Phiên bản thứ năm 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ứ năm 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 đưa vào nhánh linux-next và được phát triển đầy đủ để 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, thứ ba và thứ tư của các bản vá. Trong phiên bản mới:

  • Thử nghiệm thành phần để hỗ trợ Rust đã được thêm vào hệ thống tích hợp liên tục dựa trên bot 0DAY/LKP được Intel hỗ trợ và việc xuất bản các báo cáo thử nghiệm đã bắt đầu. Chúng tôi đang chuẩn bị tích hợp hỗ trợ Rust vào hệ thống kiểm tra tự động KernelCI. Thử nghiệm dựa trên GitHub CI đã được chuyển sang sử dụng vùng chứa.
  • Các mô-đun hạt nhân Rust được giải phóng khỏi nhu cầu xác định các thuộc tính thùng “#![no_std]” và “#![feature(…)]”.
  • Đã thêm hỗ trợ cho các mục tiêu lắp ráp đơn lẻ (.o, .s, .ll và .i).
  • Nguyên tắc mã xác định các quy tắc để phân tách nhận xét (“//”) và mã ghi tài liệu (“///”).
  • Tập lệnh is_rust_module.sh đã được làm lại.
  • Đã thêm hỗ trợ cho các nguyên tắc đồng bộ hóa tĩnh (biến chia sẻ toàn cầu) dựa trên việc triển khai "CONFIG_CONSTRUCTORS".
  • Việc quản lý khóa được đơn giản hóa: Guard và GuardMut được kết hợp và một loại được tham số hóa.
  • Có thể xác định các tham số bổ sung khi đăng ký thiết bị.
  • Đã thêm tính năng trừu tượng hóa "RwSemaphore", hoạt động như một trình bao bọc trên cấu trúc rw_semaphore C.
  • Để sử dụng mmap, một mô-đun mm mới và bản tóm tắt VMA đã được thêm vào (một trình bao bọc trên cấu trúc vm_area_struct).
  • Trình điều khiển GPIO PL061 đã được chuyển sang sử dụng macro “dev_*!”.
  • Việc dọn dẹp chung của mã đã được thực hiện.

Nguồn: opennet.ru

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