Tweede uitgawe van pleisters vir die Linux-kern met ondersteuning vir die Rust-taal

Miguel Ojeda, skrywer van die Rust-for-Linux-projek, het 'n opgedateerde weergawe van komponente voorgestel vir die ontwikkeling van toestelbestuurders in die Rust-taal vir oorweging deur Linux-kernontwikkelaars. Roesondersteuning word as eksperimenteel beskou, maar daar is reeds ooreengekom vir insluiting in die linux-next-tak. Die nuwe weergawe skakel die opmerkings wat gemaak is tydens die bespreking van die eerste weergawe van die pleisters uit. Linus Torvalds het reeds by die bespreking aangesluit en voorgestel om die logika vir die verwerking van sommige bis-bewerkings te verander.

Onthou dat die voorgestelde veranderings dit moontlik maak om Rust as 'n tweede taal te gebruik vir die ontwikkeling van drywers en kernmodules. Roes-ondersteuning word aangebied as 'n opsie wat nie by verstek geaktiveer is nie en lei nie tot die insluiting van Rust onder die vereiste bouafhanklikhede vir die kern nie. Deur Rust te gebruik om drywers te ontwikkel, sal jy veiliger en beter bestuurders met minimale inspanning kan skep, vry van probleme soos toegang tot 'n geheue-area nadat dit vrygestel is, die verwysing van nulwysers en bufferoorskryding.

Geheueveiligheid word tydens samestellingstyd in Rust verskaf deur verwysingskontrolering, hou van objekeienaarskap en objekleeftyd (omvang), asook deur evaluering van die korrektheid van geheuetoegang tydens kode-uitvoering. Roes bied ook beskerming teen heelgetal-oorvloei, vereis dat veranderlikes geïnisialiseer word voor gebruik, hanteer foute beter in die standaardbiblioteek, pas die konsep van onveranderlike verwysings en veranderlikes by verstek toe, en bied sterk statiese tik om logiese foute te minimaliseer.

Die mees opvallende veranderinge in die nuwe weergawe van die pleisters:

  • Die geheuetoewysingskode word bevry van moontlike generering van 'n "paniek"-toestand wanneer foute soos 'n gebrek aan geheue voorkom. 'n Variant van die Rust alloc-biblioteek is ingesluit, wat die kode herwerk om mislukkings te hanteer, maar die uiteindelike doel is om al die kenmerke wat nodig is vir die kern oor te dra na die hoofuitgawe van alloc (die veranderinge is reeds voorberei en na die standaard oorgedra Rust-biblioteek).
  • In plaas van nagtelike bouwerk, kan jy nou beta-vrystellings en stabiele vrystellings van die rustc-samesteller gebruik om 'n kern met Rust-ondersteuning saam te stel. Tans word rustc 1.54-beta1 as die verwysingsamesteller gebruik, maar nadat die 1.54-vrystelling aan die einde van die maand vrygestel is, sal dit as die verwysingsamesteller ondersteun word.
  • Bygevoeg ondersteuning vir die skryf van toetse met behulp van die standaard "#[toets]" kenmerk vir Rust en die vermoë om doktoetse te gebruik om toetse te dokumenteer.
  • Bygevoeg ondersteuning vir ARM32 en RISCV argitekture bykomend tot voorheen ondersteun x86_64 en ARM64.
  • Verbeterde implementering van GCC Rust (GCC frontend vir Rust) en rustc_codegen_gcc (rustc backend vir GCC), wat nou alle basiese toetse slaag.
  • 'n Nuwe vlak van abstraksie word voorgestel vir gebruik in Rust-programme van kernmeganismes wat in C geskryf is, soos rooi-swart bome, verwysing-getelde voorwerpe, lêerbeskrywingskepping, take, lêers en I/O-vektore.
  • Bestuurderontwikkelingskomponente het verbeterde ondersteuning vir die file_operations-module, die module!-makro, makroregistrasie en rudimentêre drywers (ondersoek en verwyder).
  • Binder ondersteun nou verbygaande lêerbeskrywings en LSM-hakies.
  • 'n Meer funksionele voorbeeld van 'n Rust-bestuurder word voorgestel - bcm2835-rng vir die hardeware ewekansige getalgenerator van Raspberry Pi-borde.

Daarbenewens word sommige maatskappye se projekte wat verband hou met die gebruik van Rust in die kern genoem:

  • Microsoft het belangstelling uitgespreek om deel te neem aan die werk om Rust-ondersteuning in die Linux-kern te integreer en is gereed om bestuurderimplementasies vir Hyper-V on Rust in die komende maande te verskaf.
  • ARM werk daaraan om Roes-ondersteuning vir ARM-gebaseerde stelsels te verbeter. Die Rust-projek het reeds veranderinge voorgestel wat 64-bis ARM-stelsels 'n vlak 1-platform sal maak.
  • Google verskaf direk ondersteuning vir die Rust for Linux-projek, ontwikkel 'n nuwe implementering van die Binder-tussenproseskommunikasiemeganisme in Rust, en oorweeg die moontlikheid om verskeie drywers in Rust te herwerk. Deur ISRG (Internet Security Research Group) het Google befondsing verskaf vir werk om Rust-ondersteuning in die Linux-kern te integreer.
  • IBM het kernondersteuning vir Rust for PowerPC-stelsels geïmplementeer.
  • Die LSE (Systems Research Laboratory) laboratorium het 'n SPI-bestuurder in Rust ontwikkel.

Bron: opennet.ru

Voeg 'n opmerking