Antrasis pataisų leidimas Linux branduoliui su Rust kalbos palaikymu

Miguelis Ojeda, projekto „Rust-for-Linux“ autorius, pasiūlė atnaujintą komponentų, skirtų įrenginių tvarkyklių kūrimui Rust kalba, versiją, kad ją apsvarstytų Linux branduolio kūrėjai. Rūdžių palaikymas laikomas eksperimentiniu, bet jau susitarta dėl įtraukimo į linux-next šaką. Naujoji versija pašalina komentarus, pateiktus diskutuojant apie pirmąją pataisų versiją. Linusas Torvaldsas jau prisijungė prie diskusijos ir pasiūlė pakeisti kai kurių bitų operacijų apdorojimo logiką.

Prisiminkite, kad siūlomi pakeitimai leidžia naudoti Rust kaip antrąją kalbą kuriant tvarkykles ir branduolio modulius. Rūdžių palaikymas pateikiamas kaip parinktis, kuri nėra įjungta pagal numatytuosius nustatymus, todėl Rust neįtraukiama kaip būtina branduolio kūrimo priklausomybė. Naudojant Rust tvarkyklės kūrimui, galėsite sukurti saugesnes ir geresnes tvarkykles su minimaliomis pastangomis, be problemų, tokių kaip prieiga po atlaisvinimo, nulinės rodyklės nuorodos ir buferio viršijimas.

Atminties sauga „Rust“ užtikrinama kompiliavimo metu, tikrinant nuorodas, stebint objekto nuosavybę ir objekto eksploatavimo laiką (apimtį), taip pat įvertinant prieigos prie atminties teisingumą vykdant kodą. Rust taip pat suteikia apsaugą nuo sveikųjų skaičių perpildymo, reikalauja privalomo kintamųjų reikšmių inicijavimo prieš naudojimą, geriau tvarko klaidas standartinėje bibliotekoje, pagal numatytuosius nustatymus taiko nekintamų nuorodų ir kintamųjų koncepciją, siūlo tvirtą statinį spausdinimą, kad būtų sumažintos loginės klaidos.

Labiausiai pastebimi naujos pataisų versijos pakeitimai:

  • Atminties paskirstymo kodas atleidžiamas nuo galimo „panikos“ būsenos generavimo, kai atsiranda klaidų, pvz., trūksta atminties. Įtrauktas Rust alloc bibliotekos variantas, kuris perdirba kodą, kad būtų galima valdyti gedimus, tačiau galutinis tikslas yra perkelti visas branduoliui reikalingas funkcijas į pagrindinį alloc leidimą (pakeitimai jau paruošti ir perkelti į standartą Rūdžių biblioteka).
  • Vietoj naktinės versijos dabar galite naudoti beta ir stabilius rustc kompiliatoriaus leidimus, kad sukurtumėte branduolį su Rust palaikymu. Šiuo metu rustc 1.54-beta1 naudojama kaip atskaitos kompiliatorius, tačiau mėnesio pabaigoje išleidus 1.54 versiją, ji bus palaikoma kaip atskaitos kompiliatorius.
  • Pridėtas testų rašymo palaikymas naudojant standartinį „Rust“ atributą „#[testas]“ ir galimybė naudoti doktestus testams dokumentuoti.
  • Be anksčiau palaikomų x32_86 ir ARM64, pridėtas ARM64 ir RISCV architektūrų palaikymas.
  • Patobulintas GCC Rust (GCC frontend, skirtas Rust) ir rustc_codegen_gcc (rustc backend for GCC), kuris dabar išlaiko visus pagrindinius testus, diegimas.
  • Naujas abstrakcijos lygis siūlomas naudoti C kalba parašytų branduolio mechanizmų Rust programose, tokiose kaip raudonai juodi medžiai, nuorodų skaičiuojami objektai, failų deskriptorių kūrimas, užduotys, failai ir I/O vektoriai.
  • Tvarkyklės kūrimo komponentai pagerino modulio file_operations, makrokomandos modulio!, makrokomandų registravimo ir pradinių tvarkyklių palaikymą (tikrinti ir pašalinti).
  • „Binder“ dabar palaiko failų aprašų ir LSM kabliukų perdavimą.
  • Siūlomas funkcionalesnis Rust tvarkyklės pavyzdys – bcm2835-rng Raspberry Pi plokščių aparatiniam atsitiktinių skaičių generatoriui.

Be to, minimi kai kurių įmonių projektai, susiję su Rust naudojimu branduolyje:

  • „Microsoft“ išreiškė susidomėjimą dalyvauti „Rust“ palaikymo integravimo į „Linux“ branduolį darbe ir yra pasirengusi artimiausiais mėnesiais pateikti „Hyper-V on Rust“ tvarkykles.
  • ARM stengiasi pagerinti „Rust“ palaikymą ARM pagrįstoms sistemoms. „Rust“ projektas jau pasiūlė pakeitimus, dėl kurių 64 bitų ARM sistemos taptų 1 pakopos platforma.
  • „Google“ tiesiogiai teikia paramą „Rust for Linux“ projektui, kuria naują „Binder“ tarpprocesinio ryšio mechanizmo diegimą „Rust“ programoje ir svarsto galimybę pertvarkyti įvairias „Rust“ tvarkykles. Per ISRG (Internet Security Research Group) „Google“ finansavo darbą, skirtą „Rust“ palaikymui integruoti į „Linux“ branduolį.
  • IBM įdiegė „Rust for PowerPC“ sistemų branduolio palaikymą.
  • LSE (Systems Research Laboratory) laboratorija sukūrė SPI tvarkyklę Rust mieste.

Šaltinis: opennet.ru

Добавить комментарий