Kolmas Linuxi tuuma plaastri versioon Rusti keele toega

Miguel Ojeda, Rust-for-Linux projekti autor, pakkus Linuxi tuuma arendajatele välja kolmanda komponentide variandi seadme draiverite arendamiseks Rusti keeles. Rusti toetamine on eksperimenteerimise faasis, kuid see on juba kokku lepitud lisamiseks linux-next haru. Arendust rahastavad Google ja ISRG (Internet Security Research Group), kes on Let’s Encrypt projekti asutaja ning toetab HTTPSi edendamist ja interneti turvalisuse tõstmise tehnoloogiate arendamist.

Tuletame meelde, et ettepanekud muudatused võimaldavad kasutada Rusti teise keele kui draiverite ja tuuma moodulite arendamiseks. Rusti toetus on esitatud valikuna, mis pole vaikimisi aktiveeritud ja ei too kaasa Rusti lisamist tuuma kohustuslikesse koostamise sõltuvustesse. Rusti kasutamine draiverite arendamiseks võimaldab minimaalse vaevaga luua turvalisi ja kvaliteetseid draivereid, vabanedes sellistest probleemidest nagu mäluprobleemide juurde pääsemine pärast nende vabastamist, nullviidete de-referentsimine ja mälupuhvri piiride ületamine.

Rust tagab mäluga ohutu töö kompileerimise ajal viidete kontrollimise, objektide omandi jälgimise ja objektide eluea (nähtavuse) arvestamise kaudu ning hindab koodi käivitamise ajal mälule juurdepääsu õigust. Rust pakub ka vahendeid täisarvude ületäitumise kaitsmiseks, nõuab muutuja väärtuste kohustuslikku algväärtustamist enne kasutamist, käsitleb vigu paremini standardraamatukogus, rakendab muutujaid ja viiteid vaikimisi muutumatuks (immutable) ning pakub tugevat staatilist tüübi määramist loogiliste vigade vähendamiseks.

Uues plaastriversioonis jätkatakse esimese ja teise plaastrate versiooni arutelu käigus esitatud märkuste kõrvaldamist. Silmapaistvamad muudatused:

  • On üleminekut tehtud stabiilse Rust 1.57 versiooni kasutamisele kui viidatud kompilaatorile ja kindlustatud seondumine Rust 2021 stabiliseeritud toimetusega. Varasemad plaastrid olid seotud Rusti beetaversiooniga ja kasutasid keele mõningaid ebastabiilseid võimalusi. Üleminek Rust 2021 spetsifikatsioonile on võimaldanud alustada tööd ebastabiilsete funktsioonide, nagu const_fn_transmute, const_panic, const_unreachable_unchecked ja core_panic ja try_reserve, kõrvaldamiseks plaastritest.
  • Plaastrite hulka kuuluv Rusti raamatukogu alloc arendamine on jätkunud, muutes mälu jaotamise funktsioone vabanemiseks võimalike «panic» olekute genereerimist, mis tuleneb vigadest nagu mälupuudus. Uues versioonis on rakendatud valikud «no_rc» ja «no_sync», et keelata Rusti koodis tuuma jaoks mittekasutatavad funktsionaalsused, muutes raamatukogu modulaarsemaks. Koostööd põhiarendajatega alloc jätkub, eesmärgiga viia tuuma jaoks vajalikud muudatused raamatukogu põhikoosseisu. Rusti tuumaraamatukogusse on kantud valik «no_fp_fmt_parse», mis on vajalik raamatukogu toimimiseks tuumwahel.
  • Koodi on puhastatud, et kõrvaldada võimalikud kompilaatori hoiatusteated tuuma koostamise ajal režiimis CONFIG_WERROR. Rusti koodi koostamisel on sisse lülitatud täiendavad kompilaatori diagnostikarežiimid ja Clippy linteri hoiatusteated.
  • Pakuud on abstraktsioonid, mida saab kasutada Rust keeles, sealhulgas seqlock (järjekorra lukud), callback-kutsed toitehalduseks, I/O mälu (readX/writeX), katkestuste ja lõimede töötlemine, GPIO, seadmete, draiverite ja akrediteeringute juurde pääsemine.
  • Draiverite arendamise vahendid on laienenud, rakendades liikumatute mutekode, bititersioonide, pointerite lihtsustatud majandamise, tõrgete täiendava diagnostika ning andmebusist sõltumatut infrastruktuuri.
  • Viidete töötlemist on parandatud, kasutades lihtsustatud Ref tüüpi, mis põhineb refcount_t taustal, kasutades sama nimega tuuma API-d viidete arvu lugemiseks. Tüüpide Arc ja Rc, mida pakub vaikimisi alloc teek, on eemaldatud ja ei ole saadaval tuuma tasemel koodis (raamatukogule on valmistatud valikud, mis keelavad need tüübid).
  • Patchide hulka on lisatud PL061 GPIO draiveri variant, ümber kirjutatud Rustis. Draiveri eripära on see, et selle rakendus kordab peaaegu rida-realt olemasolevat GPIO draiverit C keeles. Rustiga tutvuda soovivatele arendajatele on valmistatud rida-realt võrdlus, mis aitab mõista, kuidas C keele kood on Rustis ümber kirjutatud.
  • Rust koodibaasi on lisatud rustc_codegen_gcc, rustci tagaosa GCC jaoks, mis rakendab võimalust eelnevalt kompileerida (AOT) libgccjit teegi abil. Kui tagaosa areneb korralikult, võimaldab see koostada tuumas kasutatavat Rust koodi GCC abil.
  • Lisaks ARM, Google'i ja Microsofti ettevõtetele on Red Hat näidanud huvi Rusti kasutamise vastu Linuxi tuumas. Tuletame meelde, et Google toetab otseselt Rust for Linux projekti, arendab uut Rustil põhinevat protsesside vahelise suhtlemise mehhanismi Binderit ning kaalub erinevate draiverite üleviimist Rustile. Microsoft on alustanud Rustil Hyper-V draiverite arendamist. ARM töötab Rusti toe parandamise kallal ARM-põhiste süsteemide jaoks. IBM on rakendanud Rusti toe tuumas PowerPC süsteemide jaoks.

Allikas: opennet.ru

Osta usaldusväärne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster