Tampalan edisi keempat untuk kernel Linux dengan sokongan untuk bahasa Rust

Miguel Ojeda, pengarang projek Rust-for-Linux, mencadangkan versi keempat komponen untuk membangunkan pemacu peranti dalam bahasa Rust untuk dipertimbangkan oleh pembangun kernel Linux. Sokongan karat dianggap eksperimen, tetapi telah dipersetujui untuk dimasukkan ke dalam cawangan linux-seterusnya dan cukup matang untuk mula bekerja pada 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 dan ketiga. Dalam versi baharu:

  • Peralihan kepada menggunakan keluaran stabil Rust 1.58.0 sebagai pengkompil rujukan telah dibuat. Antara perubahan yang diperlukan untuk projek, yang belum disertakan dalam kit alat Rust utama, bendera "-Zsymbol-mangling-version=v0" (dijangka dalam Rust 1.59.0) dan mod "mungkin_uninit_extra" (dijangka dalam Rust 1.60.0 .XNUMX) dicatatkan.
  • Menambah semakan automatik untuk ketersediaan alat Rust yang sesuai dan mengembangkan keupayaan untuk menguji sokongan Rust dalam sistem.
  • Abstraksi baharu telah dicadangkan untuk mengakses jadual pengecam peranti (β€œIdArray” dan β€œIdTable”) daripada kod Rust.
  • Lapisan tambahan untuk mengakses fungsi berkaitan pemasa (rangka jam).
  • Pemacu platform kini ditakrifkan melalui pelaksanaan ciri.
  • Makro baharu telah ditambah untuk memudahkan pendaftaran pemacu platform, dan templat pemacu generik baharu telah dicadangkan.
  • Menambahkan makro untuk struktur "dev_*".
  • Menambahkan kaedah "{read,write}*_relaxed" untuk jenis IoMem .
  • Mengalih keluar sifat FileOpener untuk memudahkan operasi fail.
  • Parameter "Modul Ini" telah ditambahkan pada hujah yang diluluskan semasa mendaftarkan pemandu.
  • Templat standard untuk mencipta modul kernel dalam bahasa Rust dicadangkan.

Sumber: opennet.ru

Tambah komen