Projek Chromium akan menyokong penggunaan perpustakaan Rust

Kromium

, projek Chromium akan menyokong penggunaan pustaka C++ Rust pihak ketiga dalam Chromium

Google baru-baru ini mengumumkan bahawa pasukan di sebalik projek Chromium sedang berusaha untuk menambah rantaian alat Rust pengeluaran pada sistem binaannya.

Bagi mereka yang masih tidak mengetahui tentang Rust, mereka harus mengingatinya dengan baik kerana bahasa pengaturcaraan ini, yang dibangunkan oleh Mozilla khusus untuk digunakan dalam menulis pelayar, telah mula meresap masuk dan diterima dalam banyak projek penting, salah satunya adalah Inti Karat. Linux.

Ini akan membolehkan kami memasukkan kod Rust dalam binari Chrome sepanjang tahun hadapan. Matlamatnya adalah untuk bermula dari kecil dan menetapkan jangkaan yang jelas untuk perpustakaan yang akan dipertimbangkan apabila ia sudah bersedia.

Oleh itu, adalah logik bahawa Chromium akhirnya mula membangunkan teknologi ini juga. Bagi Google, pengenalan Rust dalam Chromium akan memenuhi matlamat untuk menyediakan cara yang lebih mudah dan selamat untuk mencapai "peraturan dua", yang terdiri daripada mempercepatkan pembangunan dan meningkatkan keselamatan Chrome. Tambahan pula, ia meningkatkan keselamatan dengan menghapuskan ralat memori dan mengurangkan kepadatan pepijat dalam kod.

Kami tahu bahawa C++ dan Rust boleh berfungsi dengan baik bersama-sama, terima kasih kepada alatan seperti cxx, autocxx bindgen, cbindgen, diplomat dan crubit (eksperimen). Walau bagaimanapun, terdapat juga batasan. Kita boleh menjangkakan bentuk pengehadan ini berubah dari semasa ke semasa dengan alat baharu atau dipertingkatkan, tetapi keputusan dan penerangan di sini adalah berdasarkan keadaan teknologi semasa.

Keputusan itu dibuat sebagai sebahagian daripada inisiatif untuk mencegah ralat memori daripada muncul dalam pangkalan kod Chrome. Menurut statistik yang diberikan dua tahun lalu, 70% isu keselamatan kritikal dan berbahaya dalam Chromium adalah disebabkan oleh ralat memori.

Menggunakan bahasa Rust, yang menumpukan pada pengurusan memori yang selamat dan menyediakan pengurusan memori automatik, akan mengurangkan risiko kerentanan yang disebabkan oleh masalah seperti mengakses kawasan memori selepas ia dibebaskan dan limpahan penimbal.

Matlamat membawa Rust ke Chromium adalah untuk menyediakan cara yang lebih mudah (tiada IPC) dan lebih selamat (kurang kompleks C++ secara umum, tiada pepijat keselamatan memori kotak pasir) untuk memenuhi peraturan dua, untuk mempercepatkan pembangunan (kurang kod untuk ditulis , lebih sedikit dokumen reka bentuk, lebih sedikit tampung keselamatan) dan untuk meningkatkan keselamatan (lebih banyak baris kod tanpa pepijat keselamatan dalam ingatan, ketumpatan pepijat kod yang lebih rendah) Chrome. Selain itu, syarikat yakin bahawa kami boleh menggunakan perpustakaan Rust pihak ketiga untuk mencapai matlamat ini.

Pada awal tahun 2022, pasukan Chromium telah pun bereksperimen dengan Rust dan, selepas beberapa bulan, menyimpulkan bahawa bahasa tersebut pada mulanya tidak sesuai sebagai pengganti C++ untuk tugas kompleks dengan kod tak segerak yang perlu berfungsi bersama kod sedia ada.

Oleh itu, penggunaan Rust yang dirancang dalam Chromium jelas terhad pada mulanya . Di satu pihak, kebolehkendalian hanya akan pergi ke satu arah: dari C++ ke Rust. Sebaliknya, pada mulanya hanya penggunaan pustaka pihak ketiga dibenarkan. Ini berfungsi sebagai komponen kendiri dan bebas daripada komponen dalaman Chromium. Pustaka mesti mempunyai API mudah untuk tugas khusus mereka. Pasukan Chromium kemudiannya akan menyemak pustaka tersebut.

Akhir sekali, perlu dinyatakan bahawa penambahan sokongan dalam Chromium akan membolehkan kod Rust dipindahkan ke binari Chrome bermula tahun hadapan. Keputusan ini terutamanya didorong oleh kebimbangan keselamatan: Rust menawarkan keselamatan yang lebih tinggi semasa menulis ke memori berbanding C++ dan melarang tingkah laku yang berpotensi berbahaya seperti membaca pembolehubah yang tidak bertulis, mengakses nilai melebihi had yang ditetapkan oleh tatasusunan, menyahrujuk penunjuk null atau tidak sah dan menggunakan iterator yang tidak sah.

Jika anda berminat untuk mengetahui lebih lanjut, anda boleh mendapatkan butiran lanjut di pautan berikut.


Tambahkan sebagai sumber pilihan dalam Google