Viies väljaanne paikadest Linuxi kernelile, mis toetab Rust keelt

Projekti Rust-for-Linux autor Miguel Ojeda on pakkunud välja viienda versiooni komponentidest, mis on mõeldud seadmedraiverite arendamiseks Rust keeles, et Linuxi kerneli arendajad saaksid seda kaaluda. Roostetuge peetakse eksperimentaalseks, kuid see on juba linux-next harusse kaasatud ja piisavalt arenenud, et alustada tööd abstraktsioonikihtide loomisel kerneli alamsüsteemides, 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, kolmanda ja neljanda väljaande arutelul tehtud kommentaaride kõrvaldamist. Uues versioonis:

  • Inteli toetatud 0DAY/LKP botil põhinevale pideva integratsioonisüsteemile on lisatud Rusti toe komponentide testimine ja alanud on testimisaruannete avaldamine. Valmistame ette Rusti toe integreerimiseks KernelCI automatiseeritud testimissüsteemi. GitHub CI-l põhinev testimine on viidud üle konteinerite kasutamisele.
  • Roostetuuma moodulid on vabastatud vajadusest määratleda kasti atribuute “#![no_std]” ja “#![funktsioon(…)]”.
  • Lisatud tugi üksikutele koostu sihtmärkidele (.o, .s, .ll ja .i).
  • Koodijuhised määratlevad reeglid kommentaaride (“//”) ja dokumenteerimiskoodi (“///”) eraldamiseks.
  • Skript is_rust_module.sh on ümber töödeldud.
  • Lisatud on staatiliste (ülemaailmne jagatud muutuja) sünkroonimisprimitiivide tugi, mis põhineb teostusel "CONFIG_CONSTRUCTORS".
  • Lukuhaldus on lihtsustatud: Guard ja GuardMut on kombineeritud ja üks parameetritega tüüp.
  • Seadmete registreerimisel on võimalik määrata lisaparameetreid.
  • Lisatud "RwSemaphore" abstraktsioon, mis toimib rw_semaphore C struktuuri ümbrisena.
  • Mmapi kasutamiseks on lisatud uus mm-moodul ja VMA abstraktsioon (ümbris vm_area_struct struktuuri kohal).
  • GPIO PL061 draiver on lülitatud makro „dev_*!” kasutamisele.
  • Koodi üldine puhastamine viidi läbi.

Allikas: opennet.ru

Lisa kommentaar