Edisi kedua tampalan untuk kernel Linux dengan sokongan untuk bahasa Rust

Miguel Ojeda, pengarang projek Rust-for-Linux, mencadangkan versi komponen yang dikemas kini 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. Versi baharu menghapuskan komen yang dibuat semasa perbincangan versi pertama tampung. Linus Torvalds telah pun menyertai perbincangan dan mencadangkan menukar logik untuk memproses beberapa operasi bit.

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.

Perubahan yang paling ketara dalam versi baru patch:

  • Kod peruntukan memori dibebaskan daripada berpotensi menjana keadaan "panik" apabila ralat seperti kehabisan memori berlaku. Varian pustaka Rust alloc disertakan, yang mengolah semula kod untuk menangani kegagalan, tetapi matlamat utama adalah untuk memindahkan semua ciri yang diperlukan untuk kernel ke edisi utama alloc (perubahan telah disediakan dan dipindahkan ke standard Perpustakaan karat).
  • Daripada binaan setiap malam, anda kini boleh menggunakan keluaran beta dan keluaran stabil pengkompil rustc untuk menyusun kernel dengan sokongan Rust. Pada masa ini, rustc 1.54-beta1 digunakan sebagai pengkompil rujukan, tetapi selepas keluaran 1.54 dikeluarkan pada akhir bulan, ia akan disokong sebagai pengkompil rujukan.
  • Menambahkan sokongan untuk menulis ujian menggunakan atribut "#[test]" standard untuk Rust dan keupayaan untuk menggunakan doctests untuk mendokumentasikan ujian.
  • Menambah sokongan untuk seni bina ARM32 dan RISCV selain daripada x86_64 dan ARM64 yang disokong sebelum ini.
  • Perlaksanaan GCC Rust (bahagian hadapan GCC untuk Rust) dan rustc_codegen_gcc (bahagian belakang rustc untuk GCC) dipertingkatkan, yang kini melepasi semua ujian asas.
  • Tahap abstraksi baharu dicadangkan untuk digunakan dalam program Rust bagi mekanisme kernel yang ditulis dalam C, seperti pokok merah-hitam, objek dikira rujukan, penciptaan deskriptor fail, tugas, fail dan vektor I/O.
  • Komponen pembangunan pemacu telah menambah baik sokongan untuk modul operasi_fail, makro modul!, pendaftaran makro dan pemacu asas (siasat dan alih keluar).
  • Binder kini menyokong deskriptor fail lulus dan cangkuk LSM.
  • Contoh yang lebih berfungsi bagi pemacu Rust dicadangkan - bcm2835-rng untuk penjana nombor rawak perkakasan papan Raspberry Pi.

Selain itu, beberapa projek syarikat yang berkaitan dengan penggunaan Rust dalam kernel disebutkan:

  • Microsoft telah menyatakan minat untuk mengambil bahagian dalam kerja untuk mengintegrasikan sokongan Rust ke dalam kernel Linux dan bersedia untuk menyediakan pelaksanaan pemacu untuk Hyper-V pada Rust dalam beberapa bulan akan datang.
  • ARM sedang berusaha untuk menambah baik sokongan Rust untuk sistem berasaskan ARM. Projek Rust telah mencadangkan perubahan yang akan menjadikan sistem ARM 64-bit sebagai platform Tahap 1.
  • Google secara langsung menyediakan sokongan untuk projek Rust untuk Linux, sedang membangunkan pelaksanaan baharu mekanisme komunikasi antara proses Binder dalam Rust, dan sedang mempertimbangkan kemungkinan mengolah semula pelbagai pemacu dalam Rust. Melalui ISRG (Kumpulan Penyelidikan Keselamatan Internet), Google menyediakan pembiayaan untuk kerja untuk menyepadukan sokongan Rust ke dalam kernel Linux.
  • IBM telah melaksanakan sokongan kernel untuk Rust untuk sistem PowerPC.
  • Makmal LSE (Systems Research Laboratory) telah membangunkan pemandu SPI di Rust.

Sumber: opennet.ru

Tambah komen