Kaheksas versioon Linuxi tuumapatchidest, mis toetavad Rusti keelt

Miguel Ojeda, Rust for Linux projekti autor, pakkus Linuxi tuuma arendajatele kaalumiseks vĂ€lja v8 komponente seadme draiverite arendamiseks Rust keeles. See on toimetamise redaktsioon parandustest, arvestades esimest versiooni, mis avaldati numbrita. Rusti tugi on experimentalne, kuid juba on see lisatud linux-next haru, pĂŒĂŒdes integreeruda sĂŒgisese 5.20/6.0 vĂ€ljaandega ja on piisavalt arenenud, et alustada abstraktsioonikihtide loomist tuuma alam sĂŒsteemide ĂŒle, samuti draiverite ja moodulite kirjutamist. Arendust rahastavad Google ja ISRG (Internet Security Research Group), kes on Let's Encrypt projekti asutaja ja aitab edendada HTTPS-i ning arendada tehnoloogiaid interneti turvalisuse parandamiseks.

Uues versioonis:

  • Tööriistakomplekt ja alloc teegi variant, mis on vabastatud vĂ”imalikest „panic“ seisundite genereerimise probleemidest vigade tekkimisel, on uuendatud Rust 1.62 vĂ€ljaandeni. VĂ”rreldes varem kasutatud versiooniga on Rusti tööriistakomplektis stabiliseeritud toimetamine const_fn_trait_bound funktsionaalsuse toetamiseks, mida kasutatakse tuuma patchides.
  • Sidumiskood on eraldatud eraldi crate-paketti „bindings“, mis lihtsustab uuesti kompileerimist, kui muudatused tehakse ainult peamises pakendis „kernel“.
  • Makro „concat_idents!“ on ĂŒmber kirjutatud protseduurilise makrona, mis ei ole seotud concat_idents funktsionaalsusega ja vĂ”imaldab kohalike muutuja viidete kasutamist.
  • Makro „static_assert!“ on ĂŒmber kirjutatud, mis vĂ”imaldab kasutada „core::assert!()“ igas kontekstis, mitte ainult konstantide puhul.
  • Makro „build_error!“ on kohandatud töö tegemiseks, kui moodulitele on seatud reĆŸiim „RUST_BUILD_ASSERT_{WARN,ALLOW}“.
  • Lisatud on eraldi fail konfiguratsioonide jaoks „kernel/configs/rust.config“.
  • Makropookide failid „*.i“ on ĂŒmber nimetatud „*.rsi“.
  • Rusti komponentide kompileerimise tugi on lĂ”petatud, kui optimiseerimise tasemed erinevad C keeles kirjutatud koodiga kasutatavatest.
  • Lisatud on fs moodul, mis pakub side pakette failisĂŒsteemidega töötamiseks. Pakutud on nĂ€ide lihtsast failisĂŒsteemist, mis on kirjutatud Rust keeles.
  • Lisatud on workqueue moodul, mis tegeleb sĂŒsteemsete jĂ€rjekordadega (pakub ĂŒmbersidumise tuuma struktuuride work_struct ja workqueue_struct ĂŒle).
  • Kasynci mooduli arendamine jĂ€tkub, rakendades asĂŒnkroonse programmeerimise (async) meetodeid. Lisatud on töötav TCP-serveri nĂ€ide, kirjutatud Rustis, mis töötab tuumatasemel.
  • Lisatud on Rusti kaudu katkestuste töötlemise vĂ”imalus, kasutades [Threaded]Handler tĂŒĂŒpe ja [Threaded]Registration` tĂŒĂŒpe.
  • Lisatud on protseduuriline makro «#[vtable]», mis lihtsustab funktsioonide nĂ€idikutega tabelitega, nagu file_operations struktuuriga, töötamist.
  • Lisatud on kahesuunaliste sidusate loendite «unsafe_list::List» rakendus.
  • Lisatud on algne tugi RCU (Read-copy-update) ja Guard tĂŒĂŒp, et kontrollida lugemiseks lukustuse sidumist praeguse lĂ”imega.
  • Lisatud on funktsioon Task::spawn() tuumade lĂ”ime loomise ja automaatse kĂ€ivitamise jaoks. Samuti on lisatud meetod Task::wake_up().
  • Lisatud on delay moodul, mis vĂ”imaldab viivituste kasutamist (msleep() ĂŒmbrik).

Ettepanekud muudatused vĂ”imaldavad kasutada Rusti teise keelena draiverite ja tuumamoodulite arendamiseks. Rusti toetus esitatakse kui valik, mis ei ole vaikimisi aktiveeritud ja ei too endaga kaasa Rusti lisamist tuuma kohustuslike kogumis sĂ”ltuvuste hulka. Rusti kasutamine draiverite arendamiseks vĂ”imaldab minimaalse vaevaga luua turvalisi ja kvaliteetsemaid draivereid, vabastades neid sellistest probleemidest nagu mĂ€lu tajumine pĂ€rast vabastamist, nullviidete mĂ”istmine ja mĂ€lupuhvri piire ĂŒ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.

Allikas: opennet.ru

Osta usaldusvÀÀrne veebimajutus DDoS-kaitsega veebisaitidele, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne veebimajutus DDoS-kaitsega veebisaitidele, VPS VDS serverid - ProHoster