Patch versi baru untuk kernel Linux dengan dukungan untuk bahasa Rust

Miguel Ojeda, penulis proyek Rust-for-Linux, mengusulkan rilis komponen v5 untuk mengembangkan driver perangkat dalam bahasa Rust untuk dipertimbangkan oleh pengembang kernel Linux. Ini adalah tambalan edisi keenam, dengan mempertimbangkan versi pertama, diterbitkan tanpa nomor versi. Dukungan Rust dianggap eksperimental, tetapi sudah termasuk dalam cabang linux-next dan cukup dikembangkan untuk mulai bekerja membuat lapisan abstraksi pada subsistem kernel, serta menulis driver dan modul. Pengembangan ini didanai oleh Google dan ISRG (Internet Security Research Group), yang merupakan pendiri proyek Let's Encrypt dan mempromosikan HTTPS serta pengembangan teknologi untuk meningkatkan keamanan Internet.

Ingatlah bahwa perubahan yang diusulkan memungkinkan penggunaan Rust sebagai bahasa kedua untuk mengembangkan driver dan modul kernel. Dukungan Rust disajikan sebagai opsi yang tidak diaktifkan secara default dan tidak mengakibatkan Rust disertakan sebagai dependensi build yang diperlukan untuk kernel. Menggunakan Rust untuk pengembangan driver akan memungkinkan Anda membuat driver yang lebih aman dan lebih baik dengan sedikit usaha, bebas dari masalah seperti akses memori setelah pembebasan, dereferensi penunjuk nol, dan buffer overruns.

Penanganan aman-memori disediakan di Rust pada waktu kompilasi melalui pemeriksaan referensi, melacak kepemilikan objek dan masa pakai objek (cakupan), serta melalui evaluasi kebenaran akses memori selama eksekusi kode. Rust juga memberikan perlindungan terhadap integer overflow, membutuhkan inisialisasi wajib dari nilai variabel sebelum digunakan, menangani kesalahan dengan lebih baik di perpustakaan standar, menerapkan konsep referensi dan variabel yang tidak dapat diubah secara default, menawarkan pengetikan statis yang kuat untuk meminimalkan kesalahan logis.

Patch versi baru terus menghilangkan komentar yang dibuat selama diskusi patch edisi pertama, kedua, ketiga, keempat dan kelima. Dalam versi baru:

  • Toolkit telah diperbarui untuk merilis Rust 1.59.0. Varian perpustakaan alokasi juga disinkronkan dengan versi baru Rust, menghilangkan kemungkinan terjadinya keadaan β€œpanik” ketika terjadi kesalahan, seperti kehabisan memori. Kemampuan untuk menggunakan sisipan assembler (β€œfitur(global_asm)”) telah distabilkan.
  • Menambahkan dukungan untuk membuat program host di Rust yang digunakan selama kompilasi kernel.
  • Alih-alih mengirimkan file spesifikasi platform target yang dibuat sebelumnya, file tersebut dibuat secara dinamis berdasarkan konfigurasi kernel.
  • Menambahkan parameter kernel HAVE_RUST untuk mengaktifkan arsitektur yang mendukung Rust.
  • Abstraksi diusulkan untuk digunakan dalam kode Rust untuk generator nomor pseudo-acak perangkat keras.
  • Mengizinkan penggunaan kode kesalahan tanpa awalan "Error::" (misalnya, "return Err(EINVAL)") untuk memperkirakan penanganan kode kesalahan di C.
  • Menambahkan tipe "CString" untuk string-C khusus. Tipe Formatter dan Buffer telah digabungkan.
  • Menambahkan tipe Bool dan LockInfo.
  • Penerapan spin lock telah disederhanakan.

Sumber: opennet.ru

Tambah komentar