Den fjerde version af patches til Linux-kernen med støtte til Rust-sprog

Miguel Ojeda, forfatteren af projektet Rust-for-Linux, har præsenteret en fjerde variant af komponenterne til udvikling af enhedsdrivere på Rust-sproget til overvejelse for Linux-kerneudviklerne. Rust-understøttelse betragtes som eksperimentel, men er allerede godkendt til integration i linux-next-grenen og er tilstrækkeligt udviklet til at begynde arbejdet med at skabe abstraktionslag over kerneunderafsnit samt til at skrive drivere og moduler. Udviklingen finansieres af Google og organisationen ISRG (Internet Security Research Group), som er grundlæggeren af projektet Let’s Encrypt og fremmer brugen af HTTPS samt udviklingen af teknologier til at øge sikkerheden på internettet.

Det skal bemærkes, at de foreslåede ændringer giver mulighed for at bruge Rust som det andet sprog til udvikling af drivere og kerne-moduler. Rust-understøttelse præsenteres som en mulighed, der ikke er aktiveret som standard og ikke fører til, at Rust bliver en obligatorisk byggeafhængighed for kernen. Brug af Rust til driverudvikling vil gøre det muligt at skabe sikre og af højere kvalitet drivere med minimal indsats, fri for problemer som adgang til hukommelse efter frigivelse, dereferencering af nullpegepinde og buffer-overløb.

Sikker hukommelseshåndtering sikres i Rust under kompileringen gennem referencekontrol, overvågning af ejerskab af objekter og livscyklus (scope) af objekter, samt evaluering af korrekt hukommelsestilgang under kodeudførelse. Rust tilbyder også midler til beskyttelse mod heltalsoverskridelser, kræver obligatorisk initialisering af variabelværdier før brug, håndterer fejl bedre i standardbiblioteket, anvender konceptet med immutability (uændrede) referencer og variabler som standard, og tilbyder stærk statisk typekontrol for at minimere logiske fejl.

I den nye patch-variant fortsættes afhjælpningen af bemærkninger rejst under diskussionen om den første, anden og tredje version af patchene. I den nye version:

  • Der er gennemført skift til brugen af Rust 1.58.0 som referencenkompiler. Af de nødvendige ændringer til projektet, som endnu ikke er inkluderet i Rust-værktøjsættet, kan nævnes flaget "-Zsymbol-mangling-version=v0" (forventes i Rust 1.59.0) og tilstanden "maybe_uninit_extra" (forventes i Rust 1.60.0).
  • Automatiske kontroller for tilgængeligt Rust-værktøjsæt er blevet tilføjet, og mulighederne for at teste Rust-understøttelse i systemet er blevet udvidet.
  • Nye abstraktioner foreslås til adgang fra Rust-koden til enhedsidentifikator-tabellerne ("IdArray" og "IdTable").
  • Lag er blevet tilføjet til at tilgå funktioner relateret til timere (clock framework).
  • Drivere til platforme er nu defineret gennem implementering af træk.
  • En ny makro er blevet tilføjet for at forenkle registreringen af platformdrivere, og en ny skabelon til standarddrivere er også foreslået.
  • Macroer til strukturerne «dev_*» er tilføjet.
  • Metoderne «{read,write}*_relaxed» er tilføjet for typen IoMem.
  • Ejendommen FileOpener er fjernet for at forenkle filoperationer.
  • Parameteren «ThisModule» er tilføjet til antallet af argumenter, der videregives ved registrering af driveren.
  • En skabelon er foreslået til oprettelse af kernelmoduler i Rust.

Kilde: opennet.ru

Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere 🔥 Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere | ProHoster