Ny version af patches til Linux-kernen med understøttelse af Rust-sproget

Miguel Ojeda, forfatteren af ​​Rust-for-Linux-projektet, foreslog udgivelsen af ​​v5-komponenter til udvikling af enhedsdrivere i Rust-sproget til overvejelse af Linux-kerneudviklere. Dette er den sjette udgave af patches, der tager hensyn til den første version, udgivet uden et versionsnummer. Rustunderstøttelse betragtes som eksperimentel, men er allerede inkluderet i linux-next-grenen og er tilstrækkeligt udviklet til at begynde arbejdet med at skabe abstraktionslag over kerneundersystemer, samt skrive drivere og moduler. Udviklingen er finansieret af Google og ISRG (Internet Security Research Group), som er grundlæggeren af ​​Let's Encrypt-projektet og promoverer HTTPS og udviklingen af ​​teknologier til at forbedre internetsikkerheden.

Husk at de foreslåede ændringer gør det muligt at bruge Rust som et andet sprog til udvikling af drivere og kernemoduler. Rust-understøttelse præsenteres som en mulighed, der ikke er aktiveret som standard og resulterer ikke i, at Rust inkluderes som en påkrævet build-afhængighed for kernen. Brug af Rust til driverudvikling vil give dig mulighed for at skabe sikrere og bedre drivere med minimal indsats, fri for problemer såsom hukommelsesadgang efter frigørelse, nul pointer-dereferencer og bufferoverskridelser.

Hukommelsessikker håndtering leveres i Rust på kompileringstidspunktet gennem referencekontrol, holde styr på objektejerskab og objektlevetid (scope), samt gennem evaluering af korrektheden af ​​hukommelsesadgang under kodeudførelse. Rust giver også beskyttelse mod heltalsoverløb, kræver obligatorisk initialisering af variabelværdier før brug, håndterer fejl bedre i standardbiblioteket, anvender konceptet med uforanderlige referencer og variabler som standard, tilbyder stærk statisk skrivning for at minimere logiske fejl.

Den nye version af patcherne fortsætter med at eliminere kommentarerne under diskussionen af ​​den første, anden, tredje, fjerde og femte udgave af patches. I den nye version:

  • Værktøjssættet er blevet opdateret til at frigive Rust 1.59.0. En variant af alloc-biblioteket er også synkroniseret med den nye version af Rust, hvilket eliminerer den mulige generering af en "panik"-tilstand, når der opstår fejl, såsom manglende hukommelse. Evnen til at bruge assembler-indsatser ("feature(global_asm)") er blevet stabiliseret.
  • Tilføjet understøttelse til oprettelse af værtsprogrammer i Rust, der bruges under kernekompilering.
  • I stedet for at levere forudgenererede målplatformspecifikationsfiler, genereres de dynamisk baseret på kernekonfiguration.
  • Tilføjet HAVE_RUST-kerneparameter for at aktivere arkitekturer, der understøtter Rust.
  • Abstraktioner foreslås til brug i Rust-kode for en hardware-pseudo-tilfældig talgenerator.
  • Tillad brug af fejlkoder uden "Error::"-præfikset (f.eks. "return Err(EINVAL)") for at tilnærme håndteringen af ​​fejlkoder i C.
  • Tilføjet "CString"-type til brugerdefinerede C-strenge. Formatter- og buffertyperne er blevet kombineret.
  • Tilføjet Bool og LockInfo typer.
  • Implementeringen af ​​spin-låse er blevet forenklet.

Kilde: opennet.ru

Tilføj en kommentar