De achtste versie van de patches voor ondersteuning van Rust-stuurprogramma's op Linux arriveert

Miguel Ojeda, auteur van het Rust-for-Linux-project bracht de achtste release uit van het ontwikkelen van Linux-kernelpatches met Rust-taalondersteuning voor Linux-kernelontwikkelaars om te overwegen.

Dit geldt als de negende release van de patches (rekening houdend met de eerste uitgebrachte versie zonder versienummer). Roestondersteuning wordt als experimenteel beschouwd, maar het is al opgenomen in de linux-next branch, claimt integratie in de herfstuitgave van 5.20/6.0, en is geavanceerd genoeg om te gaan werken aan het creëren van abstractielagen bovenop de kernelsubsystemen, evenals het schrijven van controllers en modules.

De ontwikkeling wordt gefinancierd door Google en de ISRG (Internet Security Research Group), de oprichter van het Let's Encrypt-project en promoot HTTPS en de ontwikkeling van technologieën om de internetbeveiliging te vergroten.

De voorgestelde wijzigingen maken het mogelijk om Rust als tweede taal te gebruiken voor het ontwikkelen van stuurprogramma's en kernelmodules. Rust-ondersteuning wordt gepresenteerd als een optie die niet standaard is ingeschakeld en er niet toe leidt dat Rust wordt opgenomen in de vereiste build-afhankelijkheden voor de kernel. Door Rust te gebruiken om stuurprogramma's te ontwikkelen, kunt u met minimale inspanning betere en veiligere stuurprogramma's maken, zonder problemen zoals toegang tot een geheugengebied nadat het is vrijgemaakt, verwijzing naar null-aanwijzers en bufferoverlopen.

Geheugenbeveiliging wordt in Rust tijdens het compileren geboden door referenties te controleren, objecteigendom en objectlevensduur (scope) te volgen, evenals door de juistheid van geheugentoegang te evalueren tijdens de uitvoering van de code.

Wat is er nieuw in deze achtste release?

In dit nieuwe voorstel dat werd vrijgegeven, wordt vermeld dat: de alloc-bibliotheekvariant, die de mogelijke generatie van "paniek" toestanden op fouten elimineerde, bijgewerkt naar Rust-versie 1.62. In vergelijking met de vorige versie heeft de Rust-toolkit de ondersteuning gestabiliseerd voor de const_fn_trait_bound-functionaliteit die wordt gebruikt in kernel-patches.

buiten dat de bindingscode is opgedeeld in een bundel "bindingen" -vakken afzonderlijk, wat het gemakkelijk maakt om opnieuw op te bouwen als alleen het hoofdkernelpakket wordt gewijzigd.

De implementatie van de "concat_idents!" macro, Herschreven als een procedurele macro, niet gebonden aan de concat_idents-functionaliteit en het gebruik van lokale variabeleverwijzingen mogelijk maakt.

Daarnaast wordt vermeld dat de macro "static_bevestigen!" is herschreven om "core::asset!()" toe te staan wordt in elke context gebruikt in plaats van constanten, terwijl de macro "construction_error!" is aangepast om te werken bij het instellen van de modus "RUST_BUILD_ASSERT_{WARN,ALLOW}" voor modules.

fs-module toegevoegd die links biedt voor het werken met bestandssystemen. Een voorbeeld van een eenvoudig bestandssysteem geschreven in Rust wordt voorgesteld, evenals de taakwachtrijmodule die is toegevoegd om met systeemwachtrijen te werken.

Van de andere veranderingen die zich onderscheiden van dit nieuwe voorstel:

  • Een apart configuratiebestand "kernel/configs/rust.config" toegevoegd.
  • De "*.i"-bestanden die in macrovervangingen zijn verwerkt, zijn hernoemd naar "*.rsi".
  • Ondersteuning verwijderd voor het bouwen van Rust-componenten met andere optimalisatieniveaus dan die worden gebruikt voor C-code.
  • De ontwikkeling van de Kasync-module ging verder met de implementatie van asynchrone programmeermethoden (async).
  • Een voorbeeld toegevoegd van een TCP-server op kernelniveau geschreven in Rust en de mogelijkheid toegevoegd om interrupts in Rust af te handelen.
  • Een proceduremacro toegevoegd om het werken met functieaanwijzertabellen te vergemakkelijken, zoals de structuur file_operations.
  • Implementatie van bidirectionele gekoppelde lijst "unsafe_list::List" toegevoegd.
  • Eerste ondersteuning toegevoegd voor RCU en het Guard-type om te controleren of een leesvergrendeling is gekoppeld aan de huidige thread.
  • Functie Taak::spawn() toegevoegd om automatisch kernelthreads te spawnen en te starten.
  • De Task::wake_up() methode is ook toegevoegd.
  • Een vertragingsmodule toegevoegd

Eindelijk als u er meer over wilt weten, kunt u de details bekijken In de volgende link.


Laat je reactie achter

Uw e-mailadres wordt niet gepubliceerd. Verplichte velden zijn gemarkeerd met *

*

*

  1. Verantwoordelijk voor de gegevens: AB Internet Networks 2008 SL
  2. Doel van de gegevens: Controle SPAM, commentaarbeheer.
  3. Legitimatie: uw toestemming
  4. Mededeling van de gegevens: De gegevens worden niet aan derden meegedeeld, behalve op grond van wettelijke verplichting.
  5. Gegevensopslag: database gehost door Occentus Networks (EU)
  6. Rechten: u kunt uw gegevens op elk moment beperken, herstellen en verwijderen.