Fyfde edysje fan patches foar de Linux-kernel mei stipe foar de Rust-taal

Miguel Ojeda, de skriuwer fan it Rust-for-Linux-projekt, foarstelde in fyfde ferzje fan komponinten foar it ûntwikkeljen fan apparaatbestjoerders yn 'e Rust-taal foar konsideraasje troch Linux kernel-ûntwikkelders. Rust-stipe wurdt as eksperiminteel beskôge, mar is al opnommen yn 'e linux-next branch en is genôch ûntwikkele om te begjinnen mei it meitsjen fan abstraksjelagen oer kernel-subsystemen, lykas it skriuwen fan bestjoerders en modules. De ûntwikkeling wurdt finansierd troch Google en de ISRG (Internet Security Research Group), dy't de oprjochter is fan it projekt Let's Encrypt en befoarderet HTTPS en de ûntwikkeling fan technologyen om ynternetfeiligens te ferbetterjen.

Tink derom dat de foarstelde wizigingen it mooglik meitsje om Rust as twadde taal te brûken foar it ûntwikkeljen fan bestjoerders en kernelmodules. Rust-stipe wurdt presintearre as in opsje dy't net standert ynskeakele is en net resultearret yn Rust wurdt opnommen as in fereaske build-ôfhinklikens foar de kernel. Troch Rust te brûken foar sjauffeurûntwikkeling kinne jo feiliger en bettere sjauffeurs meitsje mei minimale ynspanning, frij fan problemen lykas ûnthâld tagong nei it befrijen, nul oanwizer dereferences, en buffer oerrin.

Unthâld-feilige ôfhanneling wurdt foarsjoen yn Rust op it gearstallen tiid troch referinsje kontrôle, byhâlden fan foarwerp eigendom en foarwerp libben (omfang), likegoed as troch evaluaasje fan 'e korrektheid fan ûnthâld tagong ûnder koade útfiering. Rust leveret ek beskerming tsjin oerstreamingen fan heule getal, fereasket ferplichte inisjalisaasje fan fariabele wearden foar gebrûk, behannelet flaters better yn 'e standertbibleteek, tapast standert it konsept fan ûnferoarlike referinsjes en fariabelen, biedt sterke statyske typen om logyske flaters te minimalisearjen.

De nije ferzje fan 'e patches bliuwt de opmerkings dy't makke binne tidens de diskusje fan' e earste, twadde, tredde en fjirde edysjes fan 'e patches eliminearje. Yn de nije ferzje:

  • Komponinttesten foar Rust-stipe is tafoege oan it trochgeande yntegraasjesysteem basearre op de Intel-stipe 0DAY / LKP-bot en de publikaasje fan testrapporten is begon. Wy meitsje ús foar om Rust-stipe te yntegrearjen yn it KernelCI-automatisearre testsysteem. Testen basearre op GitHub CI is oerdroegen oan it gebrûk fan konteners.
  • Rust kernel modules wurde befrijd fan de needsaak om te definiearjen de krat attributen "#![no_std]" en "#![funksje(...)]".
  • Stipe tafoege foar doelen foar inkele gearstalling (.o, .s, .ll en .i).
  • Koaderjochtlinen definiearje regels foar it skieden fan opmerkings ("//") en dokumintaasjekoade ("///").
  • It is_rust_module.sh-skript is wer bewurke.
  • Stipe tafoege foar statyske (globale dielde fariabele) syngronisaasjeprimitiven basearre op de ymplemintaasje "CONFIG_CONSTRUCTORS".
  • Slot behear wurdt ferienfâldige: Guard en GuardMut wurde kombinearre en ien parameterized type.
  • It is mooglik om ekstra parameters te definiearjen by it registrearjen fan apparaten.
  • De "RwSemaphore" abstraksje tafoege, dy't fungearret as in wrapper oer de rw_semaphore C-struktuer.
  • Om mmap te brûken, binne in nije mm-module en in VMA-abstraksje tafoege (in wrapper oer de vm_area_struct-struktuer).
  • De GPIO PL061-bestjoerder is oerstapt nei it brûken fan de "dev_*!"
  • In algemiene skjinmeitsjen fan de koade waard útfierd.

Boarne: opennet.ru

Add a comment