Usul pikeun ngabahas masalah nambihan alat pangembangan Rust kana kernel Linux

Nick Desagnier (Nick Desaulniers), anu damel di Google pikeun nyayogikeun ngadukung ngawangun kernel Linux Ubuntu ngagunakeun Clang compiler sarta ogé nulungan ngalereskeun bug dina kompiler Rust, anjeunna ditawarkeun tahan dina konferensi Linux Plumbers Conference 2020 sési pikeun ngabahas sangkan bisa ngamekarkeun komponén kernel di Rust. Nick ngatur konferensi mikro dedicated ka LLVM, sarta yakin yén éta bakal hadé ngabahas aspék téknis tina kamungkinan integrasi rojongan Rust kana kernel (anjeunna geus disiapkeun prototipe gawé pikeun KBuild) jeung ngarti naha rojongan misalna kudu. ditambahkeun pisan jeung naon larangan dina pamakéan Rust kudu narima.

Hayu urang émut yén dina diskusi panganyarna dina Open Source Summit sareng konperénsi Linux Embedded, Linus Torvalds teu maréntah kaluar mecenghulna beungkeutan pikeun ngembangkeun subsistem kernel non-inti (contona, drivers) dina basa kayaning Rust. Kamampuhan pikeun ngembangkeun drivers di Rust bakal ngidinan urang pikeun nyieun drivers aman tur hadé kalawan usaha minimal, bébas tina masalah kayaning aksés memori sanggeus freeing, null pointer dereferences, sarta overruns panyangga. Geus aya sababaraha proyék pihak katilu pikeun nerapkeun fitur ieu:

  • Pamekar ti perusahaan "Lauk dina Laras" disiapkeun a toolkit pikeun nulis modul loadable pikeun kernel Linux Ubuntu dina basa Rust, ngagunakeun susunan lapisan abstrak dina interfaces jeung struktur kernel pikeun ngaronjatkeun kaamanan. Lapisan sacara otomatis dihasilkeun dumasar kana file lulugu kernel anu aya nganggo utilitas bindgen. Clang dipaké pikeun ngawangun lapisan. Salian interlayers, modul dirakit ngagunakeun pakét staticlib.
  • Panaliti ti Universitas Cina Hong Kong ngamekarkeun proyék pikeun ngembangkeun drivers pikeun sistem embedded jeung alat Internet of Things di Rust, nu ogé ngagunakeun bindgen pikeun ngahasilkeun lapisan dumasar kana file lulugu kernel. Kerangka ngamungkinkeun anjeun pikeun ningkatkeun kaamanan supir tanpa ngarobih kernel - tinimbang nyiptakeun tingkat isolasi tambahan pikeun supir dina kernel, diusulkeun pikeun meungpeuk masalah dina tahap kompilasi, nganggo basa Rust anu langkung aman. Diperkirakeun yén pendekatan sapertos kitu tiasa dipénta ku produsén alat-alat ngembangkeun supir proprietary buru-buru tanpa ngalaksanakeun audit anu leres.
  • Pamekar kerangka C2 Karat pikeun nyiarkeun kode C ka Rust, laksanakeun percobaan dina ngarobah modul kernel kalawan éditan manual minimal. Salah sahiji masalah anu kacatet nyaéta pamakean dina seueur bagian kernel kode anu nganggo ekstensi GCC anu henteu acan dirojong dina C2Rust. Pikeun ngajawab masalah ieu, C2Rust ngarencanakeun pikeun nambahkeun rojongan pikeun atribut GCC inline, tiis, landian, dipaké sarta bagian, kitu ogé dilegakeun kamampuhan assembler inline tur ngajawab masalah jeung struktur nu duanana Blok jeung dipak (contona, xregs_state). . Masalah signifikan anu merlukeun karya manual kaasup henteu mampuh narjamahkeun non-trivial C macros kana Rust macros sarta kudu ngartikeun ulang jenis, saprak C2Rust narjamahkeun jenis C kana definisi dina pakét libc, tapi pakét ieu teu bisa dipaké dina modul kernel.

sumber: opennet.ru

Tambahkeun komentar