De derde versie van de patches voor ondersteuning van Rust-stuurprogramma's in Linux is al vrijgegeven

Zes maanden na de publicatie van de tweede versie, Miguel Ojeda, auteur van het Rust-for-Linux-project, maakte het voorstel van de derde optie bekend voor de ontwikkeling van apparaatstuurprogramma's in Rust-taal in de Linux-kernel.

Rust-ondersteuning wordt als experimenteel beschouwd, maar de opname ervan in de linux-next-tak is al overeengekomen. De ontwikkeling wordt gefinancierd door Google en de organisatie ISRG (Internet Security Research Group), de oprichter van het Let's Encrypt-project en draagt ​​bij aan de promotie van HTTPS en de ontwikkeling van technologieën om de internetbeveiliging te verbeteren.

Er moet aan worden herinnerd dat de voorgestelde wijzigingen het mogelijk maken Rust te gebruiken als een tweede taal om kernelstuurprogramma's en -modules te ontwikkelen.

Rust-stuurprogramma's op Linux
Gerelateerd artikel:
De tweede versie van de patches voor Rust-stuurprogrammaondersteuning op Linux is al verzonden

Rust-ondersteuning wordt geadverteerd als een optie die standaard niet actief is en het leidt er niet toe dat Rust wordt opgenomen in de vereiste basisvereisten voor het bouwen. Door Rust te gebruiken voor de ontwikkeling van stuurprogramma's, kunt u met minimale inspanning betere en veiligere stuurprogramma's maken, zonder het gedoe om toegang te krijgen tot een geheugengebied dat eenmaal is vrijgemaakt, nulaanwijzers te verwijderen en bufferlimieten te overschrijden.

De nieuwe versie van de patches blijft de opmerkingen elimineren die zijn gemaakt tijdens de bespreking van de eerste en tweede versie van de patches en de meest opvallende veranderingen die we kunnen vinden:

Overgestapt naar Rust 1.57 stabiele versie als referentie-compiler en binding met de gestabiliseerde editie van de Rust 2021-taal is veiliggesteld. De overgang naar de Rust 2021 p-specificatietoegestaan ​​om te gaan werken om het gebruik van dergelijke onstabiele functies te vermijden in patches zoals const_fn_transmute, const_panic, const_unreachable_unchecked en core_panic en try_reserve.

Dat valt ook op ontwikkeling van de alloc-versie is voortgezet uit de Rust-bibliotheek, in de nieuwe versie, de "no_rc" en "no_sync" opties zijn geïmplementeerd om de functionaliteit uit te schakelen die niet wordt gebruikt in Rust-code voor de kernel, waardoor de bibliotheek meer modulair wordt. We blijven samenwerken met de belangrijkste toewijzingsontwikkelaars om de noodzakelijke kernelwijzigingen in de hoofdbibliotheek aan te brengen. De optie "no_fp_fmt_parse", die nodig is om de bibliotheek op kernelniveau te laten functioneren, is verplaatst naar de basisbibliotheek (kernel) van Rust.

Code opgeschoond om mogelijke compilerwaarschuwingen te verwijderen bij het compileren van de kernel in CONFIG_WERROR-modus. Wanneer code wordt gemaakt in Rust, worden aanvullende diagnostische compilermodi en Clippy-linterwaarschuwingen opgenomen.

zij stelden voor abstracties om seqlocks te gebruiken (sequentievergrendelingen), callback-oproepen voor energiebeheer, geheugen I/O (readX/writeX), interrupt- en thread-handlers, GPIO, apparaattoegang, stuurprogramma's en inloggegevens in roestcode.

Hulpprogramma's voor het ontwikkelen van stuurprogramma's zijn uitgebreid met het gebruik van verplaatsbare mutexen, bit-iterators, vereenvoudigde bindingen over pointers, verbeterde foutdiagnose en databusonafhankelijke infrastructuur.

Het werken met links is verbeterd met behulp van het Ref-type vereenvoudigd, gebaseerd op de refcount_t backend, die de gelijknamige centrale API gebruikt om referenties te tellen. Ondersteuning voor de Arc- en Rc-typen in de standaard mapping-bibliotheek is verwijderd en is niet beschikbaar in code die op kernelniveau wordt uitgevoerd (voor de bibliotheek zelf zijn opties voorbereid om deze typen uit te schakelen).

Een versie van de PL061 GPIO-driver, herschreven in Rust, is aan de patches toegevoegd. Een kenmerk van de driver is dat de bijna regel voor regel implementatie de bestaande C GPIO-driver herhaalt. Voor ontwikkelaars die kennis willen maken met het bouwen van controllers in Rust, is er een regel-voor-regel vergelijking opgesteld, die helpt te begrijpen wat de bouw in Rust de C-code is geworden.

Rust's belangrijkste codebase gebruikt rustc_codegen_gcc, een rustc-backend voor GCC die AOT-compilatie implementeert met behulp van de libgccjit-bibliotheek. Met de juiste ontwikkeling van de backend, kunt u de Rust-code die bij de kernel betrokken is, verzamelen met behulp van GCC.
Naast ARM, Google en Microsoft heeft Red Hat interesse getoond in het gebruik van Rust in de Linux-kernel.

Tot slot, als u er meer over wilt weten, kunt u de details raadplegen 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.