Patch edisi kelima untuk kernel Linux dengan dukungan untuk bahasa Rust

Miguel Ojeda, penulis proyek Rust-for-Linux, telah mengusulkan komponen versi kelima untuk mengembangkan driver perangkat dalam bahasa Rust untuk dipertimbangkan oleh pengembang kernel Linux. 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 dan keempat. Dalam versi baru:

  • Pengujian komponen untuk dukungan Rust telah ditambahkan ke sistem integrasi berkelanjutan berdasarkan bot 0DAY/LKP yang didukung Intel dan publikasi laporan pengujian telah dimulai. Kami sedang bersiap untuk mengintegrasikan dukungan Rust ke dalam sistem pengujian otomatis KernelCI. Pengujian berdasarkan GitHub CI telah dialihkan ke penggunaan container.
  • Modul kernel Rust dibebaskan dari kebutuhan untuk mendefinisikan atribut peti β€œ#![no_std]” dan β€œ#![fitur(…)]”.
  • Menambahkan dukungan untuk target perakitan tunggal (.o, .s, .ll, dan .i).
  • Pedoman kode menentukan aturan untuk memisahkan komentar (β€œ//”) dan mendokumentasikan kode (β€œ///”).
  • Skrip is_rust_module.sh telah dikerjakan ulang.
  • Menambahkan dukungan untuk primitif sinkronisasi statis (variabel bersama global) berdasarkan implementasi "CONFIG_CONSTRUCTORS".
  • Manajemen kunci disederhanakan: Guard dan GuardMut digabungkan dan menjadi satu tipe parameter.
  • Dimungkinkan untuk menentukan parameter tambahan saat mendaftarkan perangkat.
  • Menambahkan abstraksi "RwSemaphore", yang bertindak sebagai pembungkus struktur rw_semaphore C.
  • Untuk menggunakan mmap, modul mm baru dan abstraksi VMA telah ditambahkan (pembungkus struktur vm_area_struct).
  • Driver GPIO PL061 telah dikonversi untuk menggunakan makro β€œdev_*!”.
  • Pembersihan umum kode telah dilakukan.

Sumber: opennet.ru

Tambah komentar