Propono por diskuti la aferon aldoni Rust-disvolvajn ilojn al la Linukso-kerno

Nick Desagnier (Nick Desaulniers), kiu laboras ĉe Google por provizi subteno konstrui la Linuksan kernon uzante la Clang-kompililon kaj ankaŭ helpante ripari erarojn en la Rust-kompililo, sugestis okazigi en konferenco Linukso-Plumistoj-Konferenco 2020 sesio por diskuti ebligi evoluigi kernkomponentojn en Rust. Nick organizas mikrokonferencon dediĉitan al LLVM, kaj opinias, ke estus bone diskuti la teknikajn aspektojn de la ebla integriĝo de Rust-subteno en la kernon (li jam preparis funkciantan prototipon por KBuild) kaj kompreni ĉu tia subteno devus. entute aldoniĝu kaj kiaj limigoj pri la uzo de Rust estu akceptitaj.

Ni rememoru, ke en lastatempa diskuto ĉe la Open Source Summit kaj Embedded Linux-konferenco, Linus Torvalds ne ekskludis ĝin la apero de ligoj por la disvolviĝo de ne-kernaj subsistemoj (ekzemple ŝoforoj) en lingvoj kiel Rust. La kapablo evoluigi ŝoforojn en Rust permesus al ni krei pli sekurajn kaj pli bonajn ŝoforojn kun minimuma fortostreĉo, liberaj de problemoj kiel memoraliro post liberigo, nulaj montriloj dereferencoj kaj bufro-tropasoj. Jam ekzistas pluraj triapartaj projektoj por efektivigi ĉi tiun funkcion:

  • Programistoj de la kompanio "Fiŝo en Barelo" preparita ilaro por skribi ŝarĝeblajn modulojn por la Linukso-kerno en la Rust-lingvo, uzante aron de abstraktaj tavoloj super la interfacoj kaj kernstrukturoj por pliigi sekurecon. Tavoloj estas aŭtomate generitaj surbaze de la ekzistantaj kernaj kapdosieroj uzante la ilon bindgen. Clang estas uzata por konstrui tavolojn. Aldone al intertavoloj, la kunvenitaj moduloj uzas la staticlib-pakaĵon.
  • Esploristoj de la Ĉina Universitato de Honkongo disvolvi projekto por evoluigado de ŝoforoj por enkonstruitaj sistemoj kaj Interreto de Aĵoj-aparatoj en Rust, kiu ankaŭ uzas bindgen por generi tavolojn bazitajn sur kernaj kapdosieroj. La kadro ebligas al vi plibonigi la sekurecon de ŝoforoj sen fari ŝanĝojn al la kerno - anstataŭ krei pliajn izoligajn nivelojn por ŝoforoj en la kerno, oni proponas bloki problemojn en la kompila stadio, uzante la pli sekuran Rust-lingvon. Oni supozas, ke tia aliro povas esti postulata de ekipaĵproduktantoj evoluantaj proprietajn ŝoforojn en hasto sen fari taŭgan revizion.
  • Kadraj programistoj C2Rusto por dissendado de C-kodo al Rust, elspezi eksperimentoj pri konvertado de kernaj moduloj kun minimumaj manaj redaktoj. Unu el la notitaj problemoj estas la uzo en multaj partoj de la kerno de kodo, kiu uzas GCC-etendojn, kiuj ankoraŭ ne estas subtenataj en C2Rust. Por solvi ĉi tiun problemon, C2Rust planas aldoni subtenon por GCC-atributoj enliniaj, malvarmaj, kaŝnomo, uzataj kaj sekcioj, kaj ankaŭ vastigi la kapablojn de la enlinia asemblero kaj solvi problemojn kun strukturoj kiuj estas ambaŭ vicigitaj kaj pakitaj (ekzemple, xregs_state) . Signifaj problemoj kiuj postulas manlaboron inkluzivas la malkapablon traduki ne-trivialajn C-makroojn en Rust-makroojn kaj la bezonon redifini tipojn, ĉar C2Rust tradukas C-tipojn en difinojn en la libc-pakaĵo, sed ĉi tiu pako ne povas esti uzata en kernaj moduloj.

fonto: opennet.ru

Aldoni komenton