Framework kanggo nulis driver aman kanggo kernel Linux ing Rust

Josh Triplett, sing kerja ing Intel lan dadi panitia sing ngawasi pangembangan Crates.io, ngandika ing Open Source Technology Summit ngenalake grup kerja ngarahke ing nggawa basa Rust kanggo paritas karo basa C ing bidang pemrograman sistem.

Ing grup kerja sing lagi digawe, pangembang Rust, bebarengan karo insinyur saka Intel, bakal nyiapake spesifikasi sing nemtokake fungsi sing kudu ditindakake ing Rust kanggo pemrograman sistem. Pemrograman sistem asring mbutuhake manipulasi tingkat rendah, kayata nglakokake instruksi prosesor sing duwe hak istimewa lan entuk informasi rinci babagan kahanan prosesor. Fitur sing padha wis dikembangake kanggo Rust, dhukungan kanggo struktur sing ora dijenengi, serikat pekerja, sisipan basa perakitan (makro "asm!") lan format angka floating point BFLOAT16.

Josh percaya yen masa depan pemrograman sistem duweke Rust, lan basa C ing kasunyatan modern ngaku panggonan sing ing taun kepungkur dikuwasani dening Majelis. Teyeng
ora mung relieves gawe saka masalah gawan ing basa C sing njedhul amarga karya tingkat kurang karo memori, nanging uga menehi kesempatan kanggo nggunakake ing pangembangan paradigma program modern.

Sajrone diskusi pagelaran
Josh teka kanthi gagasan kanggo nambah kemampuan kanggo ngembangake driver ing kernel Linux ing basa Rust, sing bakal nggawe driver sing luwih aman lan luwih apik kanthi gaweyan minimal, bebas saka masalah kayata akses memori sawise dibebasake, null dereferences pointer lan buffer overruns.

Greg Kroah-Hartman, sing tanggung jawab kanggo njaga cabang stabil saka kernel Linux, nyatakake kesiapan kanggo nambah kerangka kanggo ngembangake driver ing basa Rust menyang kernel yen nduweni kaluwihan nyata tinimbang C, contone, bakal nyedhiyakake aman. bindings liwat Kernel API. Kajaba iku, Greg nganggep kerangka iki mung minangka pilihan, ora aktif kanthi standar, supaya ora kalebu Rust minangka ketergantungan mbangun ing kernel.

Ternyata sawetara tim wis kerja ing arah iki. Contone, pangembang saka perusahaan "Fish in a Barrel" disiapake toolkit kanggo nulis modul loadable kanggo kernel Linux ing basa Rust, nggunakake pesawat saka lapisan abstrak liwat antarmuka lan struktur kernel kanggo nambah keamanan. Lapisan digawe kanthi otomatis adhedhasar file header kernel sing ana nggunakake sarana kasebut bindgen. Clang digunakake kanggo mbangun lapisan. Saliyane interlayer, modul sing dipasang nggunakake paket staticlib.

Paralel berkembang Proyek liyane fokus kanggo ngembangake driver kanggo sistem sing dipasang lan piranti IoT, sing uga nggunakake bindgen kanggo ngasilake lapisan adhedhasar file header kernel. Kerangka kasebut ngidini sampeyan nambah keamanan driver tanpa nggawe owahan ing kernel - tinimbang nggawe tingkat isolasi tambahan kanggo driver ing kernel, diusulake kanggo mblokir masalah ing tahap kompilasi, nggunakake basa Rust sing luwih aman. Dianggep manawa pendekatan kasebut bisa uga dikarepake dening produsen peralatan sing ngembangake driver proprietary kanthi cepet-cepet tanpa nindakake audit sing tepat.

Ora kabeh fungsi dimaksudakΓ© durung dipun ginakaken, nanging framework wis cukup cocok kanggo karya lan digunakake kanggo nulis driver digunakake kanggo LAN9512 USB Ethernet controller diwenehake ing Papan Raspberry Pi 3. Driver smsc95xx ana, ditulis dening ing basa C. Kacathet yen ukuran modul lan nduwur sirah saka komponen runtime nalika ngembangake driver ing Rust ora pati penting, sing ngidini framework bisa digunakake kanggo piranti kanthi sumber daya winates.

Source: opennet.ru

Add a comment