Dukungan Rust untuk kernel Linux mendapat kritik dari Torvalds

Linus Torvalds meninjau patch yang mengimplementasikan kemampuan untuk membuat driver dalam bahasa Rust untuk kernel Linux, dan memberikan beberapa komentar kritis.

Keluhan terbesar disebabkan oleh potensi kemungkinan panik() dalam situasi kesalahan, misalnya, dalam situasi memori rendah, ketika operasi alokasi memori dinamis, termasuk di dalam kernel, mungkin gagal. Torvalds menyatakan bahwa pendekatan seperti itu di kernel pada dasarnya tidak dapat diterima dan, jika hal ini tidak dipahami, dia dapat sepenuhnya NAK kode apa pun yang mencoba menggunakan pendekatan seperti itu. Di sisi lain, pengembang patch setuju dengan masalah ini dan menganggapnya dapat diselesaikan.

Masalah lainnya adalah upaya menggunakan tipe floating point atau 128-bit, yang tidak dapat diterima untuk lingkungan seperti kernel Linux. Ini ternyata menjadi masalah yang lebih serius, karena saat ini perpustakaan inti Rust tidak dapat dibagi dan mewakili satu gumpalan besar - tidak ada cara untuk meminta hanya beberapa fitur, mencegah penggunaan satu atau beberapa fungsi bermasalah. Pemecahan masalah mungkin memerlukan perubahan pada kompiler dan pustaka karat, meskipun saat ini tim belum memiliki strategi tentang cara mengimplementasikan modularisasi pustaka bahasa.

Selain itu, Torvalds mencatat bahwa contoh driver yang diberikan tidak berguna dan menyarankan kami untuk menggunakan beberapa driver sebagai contoh yang memecahkan salah satu masalah sebenarnya.

Pembaruan: Google telah mengumumkan partisipasinya dalam inisiatif untuk mendorong dukungan Rust ke dalam kernel Linux dan telah memberikan alasan teknis untuk memperkenalkan Rust untuk mengatasi masalah yang timbul dari kesalahan memori. Google yakin Rust siap bergabung dengan C sebagai bahasa untuk mengembangkan komponen kernel Linux. Artikel ini juga memberikan contoh penggunaan bahasa Rust untuk mengembangkan driver kernel, dalam konteks penggunaannya di platform Android (Rust diakui sebagai bahasa yang didukung secara resmi untuk pengembangan Android).

Perlu dicatat bahwa Google telah menyiapkan prototipe awal driver yang ditulis dalam Rust untuk mekanisme komunikasi antarproses Binder, yang memungkinkan perbandingan mendetail antara kinerja dan keamanan implementasi Binder di C dan Rust. Dalam bentuknya saat ini, pekerjaannya belum selesai, tetapi untuk hampir semua abstraksi dasar fungsionalitas kernel yang diperlukan agar Binder dapat berfungsi, lapisan telah disiapkan untuk menggunakan abstraksi ini dalam kode Rust.

Sumber: opennet.ru

Tambah komentar