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