Neljas väljaanne paikadest Linuxi tuumale, mis toetab Rust keelt

Projekti Rust-for-Linux autor Miguel Ojeda pakkus välja Rust-keeles seadmedraiverite arendamiseks mõeldud komponentide neljanda versiooni, mida Linuxi kerneli arendajad kaaluksid. Roostetuge peetakse eksperimentaalseks, kuid selle lisamises linux-next harusse on juba kokku lepitud ja see on piisavalt küps, et alustada tööd tuuma alamsüsteemide abstraktsioonikihtide loomisel, samuti draiverite ja moodulite kirjutamisel. Arendust rahastavad Google ja ISRG (Internet Security Research Group), mis on Let's Encrypt projekti asutaja ning propageerib HTTPS-i ja tehnoloogiate arendamist interneti turvalisuse parandamiseks.

Tuletame meelde, et kavandatud muudatused võimaldavad kasutada Rusti draiverite ja tuumamoodulite arendamiseks teise keelena. Rooste tugi esitatakse valikuna, mis ei ole vaikimisi lubatud ja mille tulemuseks ei ole rooste kaasamine kerneli kohustusliku ehitussõltuvusse. Rooste kasutamine draiverite arendamiseks võimaldab teil luua turvalisemaid ja paremaid draivereid minimaalse pingutusega, ilma probleemideta, nagu juurdepääs mälule pärast vabastamist, nullkursori viited ja puhvri ülekoormus.

Mälu turvalisus on Rustis kompileerimise ajal tagatud viidete kontrollimise, objekti omandiõiguse ja objekti eluea (ulatuse) jälgimise, samuti koodi täitmise ajal mälu juurdepääsu õigsuse hindamise kaudu. Rooste pakub ka kaitset täisarvude ületäitumise eest, nõuab muutujate väärtuste kohustuslikku lähtestamist enne kasutamist, käsitleb standardteegi vigu paremini, rakendab vaikimisi muutumatute viidete ja muutujate kontseptsiooni, pakub tugevat staatilist tippimist loogiliste vigade minimeerimiseks.

Plaastrite uus versioon jätkab plaastrite esimese, teise ja kolmanda väljaande arutelul tehtud kommentaaride kõrvaldamist. Uues versioonis:

  • Üleminek Rust 1.58.0 stabiilse väljalaske kasutamisele võrdluskompilaatorina on tehtud. Projekti jaoks vajalike muudatuste hulgas, mis ei ole veel Rusti põhitööriistakomplektis sisalduvad, on lipp “-Zsymbol-mangling-version=v0” (oodatav versioonis Rust 1.59.0) ja režiim “maybe_uninit_extra” (oodatud versioonis Rust 1.60.0). .XNUMX) on märgitud.
  • Lisati automaatsed kontrollid sobivate Rusti tööriistade saadavuse osas ja laiendati süsteemis Rusti toe testimise võimalust.
  • Seadme identifikaatori tabelitele ("IdArray" ja "IdTable") pääsemiseks Rust-koodist on pakutud uusi abstraktsioone.
  • Lisatud kihid taimeriga seotud funktsioonidele juurdepääsuks (kellaraamistik).
  • Platvormi draiverid on nüüd määratletud tunnuste juurutuste kaudu.
  • Platvormidraiverite registreerimise lihtsustamiseks on lisatud uus makro ja pakutud on välja uus üldine draiveri mall.
  • Lisatud makrod "dev_*" struktuuride jaoks.
  • IoMemi tüübi jaoks on lisatud meetodid "{read,write}*_relaxed". .
  • Failitoimingute lihtsustamiseks eemaldati atribuut FileOpener.
  • Draiveri registreerimisel edastatud argumentidele on lisatud parameeter “ThisModule”.
  • Pakutakse välja standardne mall tuumamoodulite loomiseks Rust keeles.

Allikas: opennet.ru

Lisa kommentaar