Phiên bản thứ ba của các bản vá lỗi hỗ trợ trình điều khiển Rust trong Linux đã được phát hành

Sáu tháng sau khi xuất bản phiên bản thứ hai, Miguel Ojeda, tác giả của dự án Rust-for-Linux, đã biết đề xuất của tùy chọn thứ ba để phát triển trình điều khiển thiết bị bằng ngôn ngữ Rust trong Nhân Linux.

Hỗ trợ Rust được coi là thử nghiệm, nhưng việc đưa nó vào nhánh linux-next đã được đồng ý. Sự phát triển được tài trợ bởi Google và tổ chức ISRG (Nhóm Nghiên cứu Bảo mật Internet), vốn là người sáng lập dự án Let's Encrypt và góp phần thúc đẩy HTTPS và phát triển các công nghệ để cải thiện bảo mật Internet.

Cần nhớ rằng các thay đổi được đề xuất cho phép Rust được sử dụng như một ngôn ngữ thứ hai để phát triển các trình điều khiển và mô-đun hạt nhân.

Trình điều khiển gỉ trên Linux
Bài viết liên quan:
Phiên bản thứ hai của các bản vá lỗi hỗ trợ trình điều khiển Rust trên Linux đã được xuất xưởng

Hỗ trợ Rust được quảng cáo là một tùy chọn không hoạt động theo mặc định và nó không dẫn đến việc Rust được đưa vào các phụ thuộc xây dựng cơ bản bắt buộc. 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 tốt hơn và an toàn hơn với nỗ lực tối thiểu mà không gặp rắc rối khi truy cập vào một vùng bộ nhớ sau khi được giải phóng, bỏ tham chiếu đến con trỏ rỗng và vượt quá giới hạn bộ đệm.

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 và thứ hai của các bản vá và những thay đổi đáng chú ý nhất mà chúng tôi có thể tìm thấy:

Đã chuyển sang phiên bản ổn định Rust 1.57 như một trình biên dịch tham chiếu và ràng buộc với phiên bản ổn định của ngôn ngữ Rust 2021 đã được bảo đảm. Quá trình chuyển đổi sang đặc tả Rust 2021 pđược phép bắt đầu hoạt động để tránh sử dụng các tính năng không ổn định như vậy trong các bản vá như const_fn_transmute, const_panic, const_unreachable_unchecked và core_panic và try_reserve.

Nó cũng nổi bật rằng sự phát triển của phiên bản cấp phát đã tiếp tục từ thư viện Rust, trong phiên bản mới, các tùy chọn "no_rc" và "no_sync" được triển khai để tắt chức năng không được sử dụng trong mã Rust cho hạt nhân, làm cho thư viện trở nên mô-đun hơn. Chúng tôi tiếp tục làm việc với các nhà phát triển cấp phát chính để đưa các thay đổi hạt nhân cần thiết vào thư viện chính. Tùy chọn "no_fp_fmt_parse", được yêu cầu để thư viện hoạt động ở cấp độ hạt nhân, đã được chuyển đến thư viện cơ sở của Rust (hạt nhân).

Mã được làm sạch để loại bỏ các cảnh báo có thể có của trình biên dịch khi biên dịch hạt nhân ở chế độ CONFIG_WERROR. Khi mã được tạo trong Rust, các chế độ biên dịch chẩn đoán bổ sung và cảnh báo Clippy linter được bao gồm.

Họ đã đề xuất trừu tượng để sử dụng seqlocks (khóa tuần tự), gọi lại để quản lý nguồn, I / O bộ nhớ (readX / writeX), ngắt và xử lý luồng, GPIO, quyền truy cập thiết bị, trình điều khiển và thông tin đăng nhập bằng mã gỉ.

Các công cụ phát triển trình điều khiển đã được mở rộng với việc sử dụng các mutex có thể thay đổi vị trí, các trình vòng lặp bit, các ràng buộc được đơn giản hóa qua các con trỏ, chẩn đoán lỗi được cải thiện và cơ sở hạ tầng độc lập với bus dữ liệu.

Làm việc với các liên kết đã được cải thiện bằng cách sử dụng loại Tham chiếu được đơn giản hóa, dựa trên chương trình phụ trợ refcount_t, sử dụng API trung tâm cùng tên để đếm các tham chiếu. Hỗ trợ cho các loại Arc và Rc được cung cấp trong thư viện ánh xạ tiêu chuẩn đã bị loại bỏ và không có sẵn trong mã được thực thi ở cấp hạt nhân (đối với chính thư viện, các tùy chọn đã được chuẩn bị để vô hiệu hóa các loại này).

Một phiên bản của trình điều khiển GPIO PL061, được viết lại bằng Rust, đã được thêm vào các bản vá. Một tính năng của trình điều khiển là việc triển khai gần như từng dòng của nó lặp lại trình điều khiển C GPIO hiện có. Đối với các nhà phát triển muốn làm quen với các bộ điều khiển xây dựng trong Rust, một bản so sánh từng dòng đã được chuẩn bị, cung cấp thông tin chi tiết về các bản dựng trong mã C của Rust.

Cơ sở mã chính của Rust sử dụng gỉc_codegen_gcc, một chương trình phụ trợ gỉc cho GCC triển khai biên dịch AOT bằng thư viện libgccjit. Với sự phát triển thích hợp của phần phụ trợ, nó sẽ cho phép bạn thu thập mã Rust liên quan đến hạt nhân bằng cách sử dụng GCC.
Ngoài ARM, Google và Microsoft, Red Hat đã bày tỏ sự quan tâm đến việc sử dụng Rust trong nhân Linux.

Cuối cùng, nếu bạn quan tâm muốn biết thêm về nó, bạn có thể tham khảo chi tiết Trong liên kết sau đây.


Để lại bình luận của bạn

địa chỉ email của bạn sẽ không được công bố. Các trường bắt buộc được đánh dấu bằng *

*

*

  1. Chịu trách nhiệm về dữ liệu: AB Internet Networks 2008 SL
  2. Mục đích của dữ liệu: Kiểm soát SPAM, quản lý bình luận.
  3. Hợp pháp: Sự đồng ý của bạn
  4. Truyền thông dữ liệu: Dữ liệu sẽ không được thông báo cho các bên thứ ba trừ khi có nghĩa vụ pháp lý.
  5. Lưu trữ dữ liệu: Cơ sở dữ liệu do Occentus Networks (EU) lưu trữ
  6. Quyền: Bất cứ lúc nào bạn có thể giới hạn, khôi phục và xóa thông tin của mình.