Penktasis Linux branduolio pataisų leidimas su Rust kalbos palaikymu

Miguelis Ojeda, projekto „Rust-for-Linux“ autorius, pasiūlė penktąją komponentų, skirtų įrenginių tvarkyklių kūrimui Rust kalba, versiją, kurią apsvarstytų „Linux“ branduolio kūrėjai. Rūdžių palaikymas laikomas eksperimentiniu, tačiau jau įtrauktas į linux-next šaką ir yra pakankamai išvystytas, 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.

Naujojoje pataisų versijoje ir toliau naikinamos pastabos, išsakytos diskutuojant apie pirmą, antrą, trečią ir ketvirtą pataisų leidimus. Naujoje versijoje:

  • Į nuolatinės integracijos sistemą, pagrįstą „Intel“ palaikomu 0DAY/LKP botu, buvo pridėtas „Rust“ palaikymo komponentų testavimas ir pradėtos skelbti testavimo ataskaitos. Ruošiamės integruoti Rust palaikymą į KernelCI automatizuotą testavimo sistemą. „GitHub CI“ pagrįstas bandymas buvo perkeltas į konteinerių naudojimą.
  • Rūdžių branduolio moduliai atleidžiami nuo poreikio apibrėžti dėžės atributus „#![no_std]“ ir „#![feature(…)]“.
  • Pridėtas pavienių surinkimo taikinių (.o, .s, .ll ir .i) palaikymas.
  • Kodo gairės apibrėžia komentarų („//“) ir dokumentavimo kodo („///“) atskyrimo taisykles.
  • Scenarijus is_rust_module.sh buvo perdarytas.
  • Pridėtas statinio (visuotinio bendrinamo kintamojo) sinchronizavimo primityvų palaikymas, pagrįstas „CONFIG_CONSTRUCTORS“ diegimu.
  • Užraktų valdymas yra supaprastintas: Guard ir GuardMut yra sujungti ir vienas parametrizuotas tipas.
  • Registruojant įrenginius galima apibrėžti papildomus parametrus.
  • Pridėta „RwSemaphore“ abstrakcija, kuri veikia kaip rw_semaphore C struktūros įvyniojimas.
  • Norint naudoti mmap, buvo pridėtas naujas mm modulis ir VMA abstrakcija (įvynioklis virš struktūros vm_area_struct).
  • GPIO PL061 tvarkyklė buvo perjungta į „dev_*!“ makrokomandą.
  • Buvo atliktas bendras kodo valymas.

Šaltinis: opennet.ru

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