WD sedang mengembangkan driver NVMe di Rust. Bereksperimen dengan Rust di FreeBSD

Pada konferensi Linux Plumbers 2022 yang sedang berlangsung hari ini, seorang insinyur dari Western Digital membuat presentasi tentang pengembangan driver eksperimental untuk SSD NVM-Express (NVMe) yang ditulis dalam Rust dan berjalan pada level kernel Linux. Meskipun proyek ini masih dalam tahap awal pengembangan, pengujian yang dilakukan menunjukkan bahwa kinerja driver Rust NVMe sesuai dengan driver NVMe yang ditulis dalam C di kernel.

WD sedang mengembangkan driver NVMe di Rust. Bereksperimen dengan Rust di FreeBSD
WD sedang mengembangkan driver NVMe di Rust. Bereksperimen dengan Rust di FreeBSD

Laporan tersebut mengatakan bahwa driver NVMe saat ini di C benar-benar memuaskan bagi pengembang, tetapi subsistem NVMe adalah platform yang baik untuk mengeksplorasi kelayakan pengembangan driver di Rust, karena cukup sederhana, banyak digunakan, memiliki persyaratan kinerja tinggi, dan memiliki implementasi referensi yang terbukti untuk perbandingan dan mendukung berbagai antarmuka (dev, pci, DMA, blk-mq, gendisk, sysfs).

Perlu dicatat bahwa driver Rust PCI NVMe sudah menyediakan fungsionalitas yang diperlukan untuk pengoperasian, tetapi belum siap untuk digunakan secara luas, karena memerlukan perbaikan terpisah. Rencana masa depan termasuk menghilangkan blok tidak aman yang ada, dukungan untuk melepas perangkat dan membongkar driver, mendukung antarmuka sysfs, menerapkan inisialisasi lambat, membuat driver untuk blk-mq, dan bereksperimen dengan model pemrograman asinkron untuk queue_rq.

Selain itu, kita dapat mencatat eksperimen yang dilakukan oleh NCC Group untuk mengembangkan driver dalam bahasa Rust untuk kernel FreeBSD. Sebagai contoh, driver echo sederhana yang mengembalikan data yang ditulis ke file /dev/rustmodule dianalisis secara detail. Pada fase eksperimen berikutnya, NCC Group sedang mempertimbangkan pengerjaan ulang komponen inti di Rust untuk meningkatkan keamanan operasi jaringan dan file.

Meskipun demikian, meskipun telah terbukti bahwa membuat modul sederhana di Rust dapat dilakukan, integrasi Rust yang lebih erat ke dalam kernel FreeBSD akan memerlukan pekerjaan tambahan. Misalnya, disebutkan perlunya membuat sekumpulan lapisan abstraksi pada subsistem dan struktur kernel, mirip dengan add-on yang disiapkan oleh proyek Rust untuk Linux. Di masa depan, direncanakan untuk melakukan eksperimen serupa dengan inti Illumos dan menyoroti abstraksi umum di Rust yang dapat digunakan pada driver yang ditulis Rust untuk Linux, BSD dan Illumos.

Menurut Microsoft dan Google, sekitar 70% kerentanan pada produk perangkat lunak mereka disebabkan oleh manajemen memori yang tidak aman. Penggunaan bahasa Rust diasumsikan akan mengurangi risiko kerentanan yang disebabkan oleh penanganan memori yang tidak aman, dan menghilangkan terjadinya kesalahan seperti mengakses area memori setelah dibebaskan 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.

Sumber: opennet.ru

Tambah komentar