Linux nukleoan Rust garapen tresnak gehitzearen gaia eztabaidatzeko proposamena

Nick Desagnier (Nick Desaulniers), Google-n lan egiten duena laguntza Clang konpilatzailea erabiliz Linux nukleoa eraikitzea eta gainera laguntzen konpondu Rust konpilatzailean akatsak, He eskaini hitzaldi batean egin Linux Plumbers Conference 2020 Rust-en nukleoaren osagaiak garatzea posible dela eztabaidatzeko saioa. Nick LLVM-ri eskainitako mikrokonferentzia bat antolatzen ari da, eta uste du ondo legokeela Rust euskarriaren balizko integrazioaren alderdi teknikoak kernelean eztabaidatzea (dagoeneko prestatu du KBuild-erako lan-prototipo bat) eta laguntza horrek behar duen ala ez ulertzea. gehitu behar dira eta Rust-en erabilerari buruzko zer murrizketa onartu behar dira.

Gogora dezagun Open Source Summit eta Embedded Linux konferentzian egindako azken eztabaida batean, Linus Torvalds ez zuen baztertu Nukleoa ez diren kernel azpisistemak (adibidez, kontrolatzaileak) garatzeko loturak agertzea Rust bezalako hizkuntzetan. Rust-en kontrolatzaileak garatzeko gaitasunak gidari seguruagoak eta hobeak sortzea ahalbidetuko liguke esfortzu minimoarekin, askatu ondoren memoriarako sarbidea bezalako arazorik gabe, erakusle nuluen deserreferentziak eta buffer gainditzeak. Ezaugarri hau ezartzeko hirugarrenen proiektu batzuk daude dagoeneko:

  • "Fish in a Barrel" konpainiako garatzaileak prestatuta Linux nukleorako moduluak Rust hizkuntzan idazteko tresna-kit bat, interfazeen eta nukleoaren egituren gaineko geruza abstraktu multzo bat erabiliz, segurtasuna areagotzeko. Geruzak automatikoki sortzen dira erabilgarritasuna erabiliz dauden nukleoaren goiburuko fitxategietan oinarrituta bindgen. Clang geruzak eraikitzeko erabiltzen da. Intergeruzez gain, muntatutako moduluek staticlib paketea erabiltzen dute.
  • Hong Kongeko Txinako Unibertsitateko ikertzaileak garatu Rust-en txertatutako sistemetarako eta Gauzen Interneterako gailuetarako kontrolatzaileak garatzeko proiektua, bindgen-a ere erabiltzen duena nukleoko goiburuko fitxategietan oinarritutako geruzak sortzeko. Esparruak gidarien segurtasuna hobetzeko aukera ematen du nukleoan aldaketarik egin gabe - nukleoan kontrolatzaileentzako isolamendu maila gehigarriak sortu beharrean, arazoak konpilazio fasean blokeatzea proposatzen da, Rust hizkuntza seguruagoa erabiliz. Suposatzen da ikuspegi hori eska dezaketela ekipo-fabrikatzaileek kontrolatzaile jabedunek presaka garatzen dituzten auditoria egokirik egin gabe.
  • Esparru garatzaileak C2Herdoila Rust-i C kodea igortzeko, jokabide nukleoaren moduluak bihurtzeko esperimentuak eskuzko edizio minimoekin. Adierazitako arazoetako bat C2Rust-en onartzen ez diren GCC luzapenak erabiltzen dituen kode nukleoaren zati askotan erabiltzea da. Arazo hau konpontzeko, C2Rust-ek GCC atributuetarako euskarria gehitzea aurreikusten du linean, cold, alias, used eta section, baita lineako mihiztatzailearen gaitasunak zabaltzea eta lerrokatuta eta bilduta dauden egiturekin arazoak konpontzeko (adibidez, xregs_state) . Eskuzko lana eskatzen duten arazo esanguratsuen artean daude C makro ez-trivialak Rust makroetara itzultzeko ezintasuna eta motak birdefinitu beharra, C2Rust-ek C motak libc paketean definizioetara itzultzen baititu, baina pakete hau ezin da erabili nukleoko moduluetan.

Iturria: opennet.ru

Gehitu iruzkin berria