Fjärde upplagan av patchar för Linux-kärnan med stöd för språket Rust

Miguel Ojeda, författare till Rust-for-Linux-projektet, föreslog en fjärde version av komponenter för utveckling av drivrutiner i Rust-språket för övervägande av Linux-kärnutvecklare. Ruststöd anses vara experimentellt, men har redan kommit överens om att inkluderas i linux-next-grenen och är tillräckligt moget för att börja arbeta med att skapa abstraktionslager över kärndelsystem, samt skriva drivrutiner och moduler. Utvecklingen finansieras av Google och ISRG (Internet Security Research Group), som är grundaren av Let's Encrypt-projektet och främjar HTTPS och utvecklingen av tekniker för att förbättra Internetsäkerheten.

Kom ihåg att de föreslagna ändringarna gör det möjligt att använda Rust som ett andra språk för att utveckla drivrutiner och kärnmoduler. Ruststöd presenteras som ett alternativ som inte är aktiverat som standard och resulterar inte i att Rust ingår som ett obligatoriskt byggberoende för kärnan. Genom att använda Rust för drivrutinsutveckling kan du skapa säkrare och bättre drivrutiner med minimal ansträngning, utan problem som minnesåtkomst efter frigöring, nollpekarereferenser och buffertöverskridanden.

Minnessäkerhet tillhandahålls i Rust vid kompileringstillfället genom referenskontroll, hålla reda på objektägande och objektlivslängd (scope), samt genom utvärdering av korrektheten av minnesåtkomst under kodexekvering. Rust ger också skydd mot heltalsspill, kräver obligatorisk initiering av variabelvärden innan användning, hanterar fel bättre i standardbiblioteket, tillämpar konceptet med oföränderliga referenser och variabler som standard, erbjuder stark statisk typning för att minimera logiska fel.

Den nya versionen av patcharna fortsätter att eliminera kommentarerna som gjorts under diskussionen om den första, andra och tredje utgåvan av patcharna. I den nya versionen:

  • Övergången till att använda den stabila versionen av Rust 1.58.0 som referenskompilator har gjorts. Bland de ändringar som är nödvändiga för projektet, som ännu inte är inkluderade i huvudverktygssatsen för Rust, "-Zsymbol-mangling-version=v0"-flaggan (förväntas i Rust 1.59.0) och "maybe_uninit_extra"-läget (förväntas i Rust 1.60.0) .XNUMX) noteras. .
  • Lade till automatiska kontroller för tillgängligheten av lämpliga rostverktyg och utökade möjligheten att testa roststöd i systemet.
  • Nya abstraktioner har föreslagits för åtkomst av enhetsidentifieringstabeller ("IdArray" och "IdTable") från Rustkod.
  • Lade till lager för åtkomst till timerrelaterade funktioner (klockramverk).
  • Plattformsdrivrutiner definieras nu genom egenskapsimplementeringar.
  • Ett nytt makro har lagts till för att förenkla registreringen av plattformsdrivrutiner och en ny generisk drivrutinsmall har föreslagits.
  • Lade till makron för "dev_*"-strukturer.
  • Lade till "{read,write}*_relaxed"-metoder för IoMem-typen .
  • Tog bort egenskapen FileOpener för att förenkla filhanteringen.
  • Parametern “ThisModule” har lagts till i argumenten som skickades när en drivrutin registrerades.
  • En standardmall för att skapa kärnmoduler i språket Rust föreslås.

Källa: opennet.ru

Lägg en kommentar