Teine väljaanne plaastritest Linuxi tuumale, mis toetab Rust keelt

Projekti Rust-for-Linux autor Miguel Ojeda pakkus välja Rust-keeles seadmedraiverite arendamiseks mõeldud komponentide uuendatud versiooni, mida Linuxi kerneli arendajad võiksid kaaluda. Roostetoetust peetakse eksperimentaalseks, kuid selle lisamine linux-next harusse on juba kokku lepitud. Uus versioon välistab plaastrite esimese versiooni arutelu käigus tehtud kommentaarid. Linus Torvalds on juba aruteluga liitunud ja teinud ettepaneku muuta mõne bititoimingu töötlemise loogikat.

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.

Kõige märgatavamad muudatused plaastrite uues versioonis:

  • Mälu eraldamise kood vabastatakse potentsiaalselt "paanika" tekitamisest, kui ilmnevad tõrked, näiteks mälu on otsas. Kaasas on Rust alloc teegi variant, mis muudab koodi tõrgete käsitlemiseks ümber, kuid lõppeesmärk on kanda kõik kerneli jaoks vajalikud funktsioonid alloc põhiväljaande (muudatused on juba ette valmistatud ja üle viidud standardisse Rooste raamatukogu).
  • Igaöiste ehitamiste asemel saate nüüd kasutada Rust-kompilaatori beetaversioone ja stabiilseid väljalaseid, et kompileerida Rust-toega kernel. Praegu kasutatakse viitekompilaatorina rustc 1.54-beta1, kuid pärast 1.54 versiooni avaldamist kuu lõpus toetatakse seda võrdluskompilaatorina.
  • Lisatud on toetus testide kirjutamiseks, kasutades Rusti standardset atribuuti “#[test]”, ja võimalus kasutada testide dokumenteerimiseks dokteste.
  • Lisaks varem toetatud x32_86 ja ARM64 arhitektuuridele on lisatud tugi ARM64 ja RISCV arhitektuuridele.
  • GCC Rusti (GCC frontend Rusti jaoks) ja rustc_codegen_gcc (GCC jaoks rustc taustaprogramm) täiustatud juurutused, mis läbivad nüüd kõik põhitestid.
  • Uut abstraktsioonitaset pakutakse C-keeles kirjutatud tuumamehhanismide Rust-programmides kasutamiseks, näiteks puna-mustad puud, viidetega loendatavad objektid, failideskriptorite loomine, ülesanded, failid ja I/O-vektorid.
  • Draiveri arenduskomponendid on täiustanud mooduli file_operations, makro moodul!, makro registreerimist ja elementaarseid draivereid (proovige ja eemaldage).
  • Binder toetab nüüd failideskriptorite ja LSM-konksude edastamist.
  • Pakutakse välja funktsionaalsem Rust draiveri näide - bcm2835-rng Raspberry Pi plaatide riistvaralise juhuslike arvude generaatori jaoks.

Lisaks mainitakse mõnede ettevõtete projekte, mis on seotud rooste kasutamisega tuumas:

  • Microsoft on avaldanud huvi osaleda töös Rusti toe integreerimiseks Linuxi kernelisse ja on valmis lähikuudel pakkuma Hyper-V jaoks Rusti draiverite juurutusi.
  • ARM töötab selle nimel, et parandada ARM-põhiste süsteemide Rusti tuge. Rusti projekt on juba välja pakkunud muudatusi, mis muudaksid 64-bitised ARM-süsteemid Tier 1 platvormiks.
  • Google pakub otse tuge projektile Rust for Linux, arendab Rustis Binderi protsessidevahelise suhtlusmehhanismi uut teostust ja kaalub võimalust Rustis erinevaid draivereid ümber töötada. Google rahastas ISRG (Internet Security Research Group) kaudu tööd Rusti toe integreerimiseks Linuxi tuuma.
  • IBM on juurutanud PowerPC-süsteemide Rusti tuumatoe.
  • LSE (Systems Research Laboratory) labor on Rustis välja töötanud SPI draiveri.

Allikas: opennet.ru

Lisa kommentaar