Tampalan edisi kelima untuk kernel Linux dengan sokongan untuk bahasa Rust

Miguel Ojeda, pengarang projek Rust-for-Linux, telah mencadangkan versi kelima komponen untuk membangunkan pemacu peranti dalam bahasa Rust untuk dipertimbangkan oleh pembangun kernel Linux. Sokongan karat dianggap eksperimen, tetapi sudah dimasukkan ke dalam cawangan linux-seterusnya dan dibangunkan secukupnya untuk memulakan kerja mencipta lapisan abstraksi ke atas subsistem kernel, serta menulis pemacu dan modul. Pembangunan ini dibiayai oleh Google dan ISRG (Kumpulan Penyelidikan Keselamatan Internet), yang merupakan pengasas projek Let's Encrypt dan mempromosikan HTTPS dan pembangunan teknologi untuk meningkatkan keselamatan Internet.

Ingat bahawa perubahan yang dicadangkan memungkinkan untuk menggunakan Rust sebagai bahasa kedua untuk membangunkan modul pemacu dan kernel. Sokongan Rust dibentangkan sebagai pilihan yang tidak didayakan secara lalai dan tidak menyebabkan Rust disertakan sebagai pergantungan binaan yang diperlukan untuk kernel. Menggunakan Rust untuk pembangunan pemandu akan membolehkan anda mencipta pemandu yang lebih selamat dan lebih baik dengan usaha yang minimum, bebas daripada masalah seperti akses memori selepas dibebaskan, penolakan penunjuk nol dan overrun penimbal.

Keselamatan memori disediakan dalam Rust pada masa penyusunan melalui semakan rujukan, menjejaki pemilikan objek dan jangka hayat objek (skop), serta melalui penilaian ketepatan akses memori semasa pelaksanaan kod. Rust juga menyediakan perlindungan terhadap limpahan integer, memerlukan permulaan mandatori nilai pembolehubah sebelum digunakan, mengendalikan ralat dengan lebih baik dalam perpustakaan standard, menggunakan konsep rujukan tidak berubah dan pembolehubah secara lalai, menawarkan penaipan statik yang kuat untuk meminimumkan ralat logik.

Versi baharu tampalan terus menghapuskan komen yang dibuat semasa perbincangan tampung edisi pertama, kedua, ketiga dan keempat. Dalam versi baharu:

  • Ujian komponen untuk sokongan Rust telah ditambahkan pada sistem penyepaduan berterusan berdasarkan bot 0DAY/LKP yang disokong Intel dan penerbitan laporan ujian telah bermula. Kami sedang bersedia untuk menyepadukan sokongan Rust ke dalam sistem ujian automatik KernelCI. Ujian berdasarkan GitHub CI telah dipindahkan kepada penggunaan bekas.
  • Modul kernel karat dibebaskan daripada keperluan untuk mentakrifkan atribut peti β€œ#![no_std]” dan β€œ#![feature(…)]”.
  • Sokongan tambahan untuk sasaran pemasangan tunggal (.o, .s, .ll dan .i).
  • Garis panduan kod mentakrifkan peraturan untuk memisahkan komen (β€œ//”) dan kod dokumentasi (β€œ///”).
  • Skrip is_rust_module.sh telah diolah semula.
  • Menambah sokongan untuk primitif penyegerakan statik (pembolehubah dikongsi global) berdasarkan pelaksanaan "CONFIG_CONSTRUCTORS".
  • Pengurusan kunci dipermudahkan: Guard dan GuardMut digabungkan dan satu jenis parameter.
  • Adalah mungkin untuk menentukan parameter tambahan semasa mendaftarkan peranti.
  • Menambah abstraksi "RwSemaphore", yang bertindak sebagai pembalut pada struktur rw_semaphore C.
  • Untuk menggunakan mmap, modul mm baharu dan abstraksi VMA telah ditambah (pembungkus di atas struktur vm_area_struct).
  • Pemacu GPIO PL061 telah ditukar kepada menggunakan makro β€œdev_*!”.
  • Pembersihan umum kod telah dijalankan.

Sumber: opennet.ru

Tambah komen