WD sedang membangunkan pemacu NVMe di Rust. Bereksperimen dengan Rust di FreeBSD

Pada persidangan Linux Plumbers 2022 yang berlangsung hari ini, seorang jurutera dari Western Digital memberikan pembentangan mengenai pembangunan pemacu eksperimen untuk pemacu SSD dengan antara muka NVM-Express (NVMe), ditulis dalam bahasa Rust dan berjalan pada kernel Linux tahap. Walaupun projek itu masih di peringkat awal pembangunan, ujian telah menunjukkan bahawa prestasi pemacu NVMe dalam bahasa Rust sepadan dengan pemacu NVMe yang ditulis dalam bahasa C yang tersedia dalam kernel.

WD sedang membangunkan pemacu NVMe di Rust. Bereksperimen dengan Rust di FreeBSD
WD sedang membangunkan pemacu NVMe di Rust. Bereksperimen dengan Rust di FreeBSD

Laporan itu menyatakan bahawa pemacu NVMe semasa dalam C benar-benar memuaskan untuk pembangun, tetapi subsistem NVMe ialah platform yang baik untuk meneroka kemungkinan membangunkan pemacu dalam Rust, kerana ia agak mudah, digunakan secara meluas, mempunyai keperluan prestasi tinggi, dan mempunyai pelaksanaan rujukan yang terbukti untuk perbandingan dan menyokong pelbagai antara muka (dev, pci, dma, blk-mq, gendisk, sysfs).

Adalah diperhatikan bahawa pemacu PCI NVMe untuk Rust sudah menyediakan fungsi yang diperlukan untuk operasi, tetapi belum bersedia untuk kegunaan meluas, kerana ia memerlukan penambahbaikan individu. Rancangan masa hadapan termasuk menyingkirkan kod blok tidak selamat sedia ada, menyokong operasi pemunggahan peranti dan pemacu, menyokong antara muka sysfs, melaksanakan pengamulaan malas, mencipta pemacu untuk blk-mq dan bereksperimen dengan menggunakan model pengaturcaraan tak segerak untuk queue_rq.

Selain itu, kita boleh perhatikan eksperimen yang dijalankan oleh Kumpulan NCC untuk membangunkan pemacu dalam bahasa Rust untuk kernel FreeBSD. Sebagai contoh, kami memeriksa secara terperinci pemacu gema mudah yang mengembalikan data yang ditulis ke fail /dev/rustmodule. Dalam fasa percubaan seterusnya, Kumpulan NCC sedang mempertimbangkan kemungkinan mengolah semula komponen teras kernel dalam bahasa Rust untuk meningkatkan keselamatan operasi rangkaian dan fail.

Walau bagaimanapun, walaupun telah ditunjukkan bahawa adalah mungkin untuk mencipta modul mudah dalam bahasa Rust, penyepaduan Rust yang lebih ketat ke dalam kernel FreeBSD akan memerlukan kerja tambahan. Sebagai contoh, mereka menyebut keperluan untuk mencipta satu set lapisan abstraksi ke atas subsistem dan struktur kernel, serupa dengan alat tambah yang disediakan oleh projek Rust untuk Linux. Pada masa hadapan, kami merancang untuk menjalankan eksperimen serupa dengan kernel Illumos dan mengenal pasti abstraksi biasa dalam Rust yang boleh digunakan dalam pemacu yang ditulis dalam Rust untuk Linux, BSD dan Illumos.

Menurut Microsoft dan Google, kira-kira 70% daripada kelemahan dalam produk perisian mereka disebabkan oleh pengendalian memori yang tidak selamat. Penggunaan bahasa Rust dijangka akan mengurangkan risiko kelemahan yang disebabkan oleh kerja yang tidak selamat dengan ingatan, dan menghapuskan berlakunya ralat seperti mengakses kawasan memori selepas ia dibebaskan dan mengatasi 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.

Sumber: opennet.ru

Tambah komen