Den åttende versjonen av oppdateringene for Rust-driverstøtte på Linux kommer

Miguel Ojeda, forfatter av Rust-for-Linux-prosjektet ga ut den åttende utgivelsen å utvikle Linux-kjerneoppdateringer med Rust-språkstøtte for Linux-kjerneutviklere å vurdere.

Dette rangerer som den niende utgivelsen av oppdateringene (med tanke på den første utgitte versjonen uten et versjonsnummer). Ruststøtte regnes som eksperimentell, men den er allerede inkludert i linux-next-grenen, krever integrasjon i høstutgivelsen av 5.20/6.0, og er avansert nok til å begynne å jobbe med å lage abstraksjonslag på toppen av kjerneundersystemene, samt skrive kontrollere og moduler.

Utviklingen er finansiert av Google og ISRG (Internet Security Research Group), som er grunnleggeren av Let's Encrypt-prosjektet og fremmer HTTPS og utvikling av teknologier for å øke Internett-sikkerheten.

De foreslåtte endringene gjør det mulig å bruke Rust som andrespråk for utvikling av drivere og kjernemoduler. Rust-støtte presenteres som et alternativ som ikke er aktivert som standard og resulterer ikke i at Rust inkluderes blant de nødvendige byggeavhengighetene for kjernen. Å bruke Rust til å utvikle drivere vil tillate deg å lage bedre og sikrere drivere med minimal innsats, uten problemer som å få tilgang til et minneområde etter å ha frigjort det, dereferering av null-pekere og bufferoverløp.

Minnesikkerhet er gitt i Rust på kompileringstidspunktet ved å sjekke referanser, spore objekteierskap og objektlevetid (omfang), samt ved å evaluere riktigheten av minnetilgang under utførelse av koden.

Hva er nytt i denne åttende utgivelsen?

I dette nye forslaget som ble sluppet, er det nevnt at alloc bibliotekvarianten, som eliminerte mulig generering av "panikk" tilstand på feil, oppdatert til Rust versjon 1.62. Sammenlignet med forrige versjon har Rust-verktøysettet stabilisert støtte for const_fn_trait_bound-funksjonaliteten som brukes i kjernepatcher.

Foruten det bindingskoden er delt inn i en bunt med "bindings"-bokser separat, noe som gjør det enkelt å gjenoppbygge hvis bare hovedkjernepakken endres.

De implementering av "concat_idents!"-makroen, Omskrevet som en prosedyremakro, ikke knyttet til concat_idents-funksjonaliteten og tillater bruk av lokale variabelreferanser.

I tillegg nevnes det at makroen "static_assert!" har blitt omskrevet for å tillate "core::assert!()" brukes i enhver sammenheng i stedet for konstanter, mens makroen "konstruksjonsfeil!" har blitt tilpasset for å fungere ved innstilling av "RUST_BUILD_ASSERT_{WARN,ALLOW}"-modus for moduler.

fs-modul lagt til som gir lenker for arbeid med filsystemer. Et eksempel på et enkelt filsystem skrevet i Rust er foreslått, samt jobbkømodulen lagt til for å arbeide med systemkøer.

Av de andre endringene som skiller seg ut fra dette nye forslaget:

  • Lagt til en egen konfigurasjonsfil "kernel/configs/rust.config".
  • "*.i"-filene behandlet i makroerstatninger har fått nytt navn til "*.rsi".
  • Fjernet støtte for å bygge Rust-komponenter med andre optimaliseringsnivåer enn de som brukes for C-kode.
  • Utviklingen av kasync-modulen fortsatte med implementering av asynkrone programmeringsmetoder (async).
  • Lagt til et eksempel på en TCP-server på kjernenivå skrevet i Rust og lagt til muligheten til å håndtere avbrudd i Rust.
  • Lagt til en prosedyremakro for å gjøre det enklere å jobbe med funksjonspekertabeller, for eksempel file_operations-strukturen.
  • La til toveis koblet listeimplementering "unsafe_list::List".
  • Lagt til startstøtte for RCU og Guard-typen for å sjekke om en leselås er bundet til gjeldende tråd.
  • Lagt til funksjon Task::spawn() for å automatisk spawne og starte kjernetråder.
  • Task::wake_up()-metoden er også lagt til.
  • Lagt til en forsinkelsesmodul

Endelig hvis du er interessert i å vite mer om det, kan du sjekke detaljene I den følgende lenken.


Legg igjen kommentaren

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *

*

*

  1. Ansvarlig for dataene: AB Internet Networks 2008 SL
  2. Formålet med dataene: Kontroller SPAM, kommentaradministrasjon.
  3. Legitimering: Ditt samtykke
  4. Kommunikasjon av dataene: Dataene vil ikke bli kommunisert til tredjeparter bortsett fra ved juridisk forpliktelse.
  5. Datalagring: Database vert for Occentus Networks (EU)
  6. Rettigheter: Når som helst kan du begrense, gjenopprette og slette informasjonen din.