Ketvirtasis Linux branduolio pataisų leidimas su Rust kalbos palaikymu

Miguelis Ojeda, projekto „Rust-for-Linux“ autorius, pasiūlė ketvirtąją komponentų, skirtų įrenginių tvarkyklėms kurti Rust kalba, versiją, kurią galėtų apsvarstyti „Linux“ branduolio kūrėjai. Rūdžių palaikymas laikomas eksperimentiniu, bet jau susitarta dėl įtraukimo į linux-next šaką ir yra pakankamai subrendęs, kad būtų galima pradėti kurti abstrakcijos sluoksnius per branduolio posistemes, taip pat rašyti tvarkykles ir modulius. Kūrimą finansuoja Google ir ISRG (Internet Security Research Group), kuri yra projekto Let's Encrypt įkūrėja ir skatina HTTPS bei interneto saugą gerinančių technologijų kūrimą.

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.

Naujoji pataisų versija ir toliau pašalina komentarus, pateiktus aptariant pirmąjį, antrąjį ir trečiąjį pataisų leidimus. Naujoje versijoje:

  • Pereita prie stabilios Rust 1.58.0 leidimo kaip atskaitos kompiliatoriaus naudojimo. Tarp projektui būtinų pakeitimų, kurie dar neįtraukti į pagrindinį Rust įrankių rinkinį, vėliavėlė „-Zsymbol-mangling-version=v0“ (tikimasi „Rust 1.59.0“) ir režimas „maybe_uninit_extra“ (tikimasi „Rust 1.60.0“). .XNUMX) pažymimi .
  • Pridėta automatinė tinkamų Rust įrankių prieinamumo patikra ir išplėsta galimybė išbandyti Rust palaikymą sistemoje.
  • Buvo pasiūlytos naujos abstrakcijos, leidžiančios pasiekti įrenginio identifikatorių lenteles („IdArray“ ir „IdTable“) iš „Rust“ kodo.
  • Pridėta sluoksnių, leidžiančių pasiekti su laikmačiu susijusias funkcijas (laikrodžio sistemą).
  • Platformos tvarkyklės dabar apibrėžiamos diegiant bruožus.
  • Pridėta nauja makrokomanda, skirta supaprastinti platformos tvarkyklių registraciją, ir pasiūlytas naujas bendras tvarkyklės šablonas.
  • Pridėtos makrokomandos „dev_*“ struktūroms.
  • „IoMem“ tipui pridėti metodai „{read,write}*_relaxed“. .
  • Pašalinta „FileOpener“ ypatybė, kad būtų supaprastintos failų operacijos.
  • Parametras „ThisModule“ buvo pridėtas prie argumentų, perduodamų registruojant tvarkyklę.
  • Siūlomas standartinis šablonas branduolio moduliams kurti Rust kalba.

Šaltinis: opennet.ru

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