Andra 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 uppdaterad version av komponenter för att utveckla enhetsdrivrutiner i Rust-språket för övervägande av Linux-kärnutvecklare. Roststöd anses vara experimentellt, men har redan kommit överens om att inkluderas i linux-next-grenen. Den nya versionen eliminerar kommentarerna som gjordes under diskussionen om den första versionen av patcharna. Linus Torvalds har redan anslutit sig till diskussionen och föreslagit att logiken för att bearbeta vissa bitoperationer ändras.

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.

De mest märkbara förändringarna i den nya versionen av patchar:

  • Minnesallokeringskoden frigörs från att potentiellt generera ett "panik"-tillstånd när fel som t.ex. slut på minne uppstår. En variant av Rust alloc-biblioteket ingår, som omarbetar koden för att hantera fel, men det slutliga målet är att överföra alla funktioner som behövs för kärnan till huvudutgåvan av alloc (ändringarna har redan förberetts och överförts till standarden Rust bibliotek).
  • Istället för nattliga builds kan du nu använda betaversioner och stabila releaser av rustc-kompilatorn för att kompilera en kärna med Rust-stöd. För närvarande används rustc 1.54-beta1 som referenskompilator, men efter att 1.54-versionen har släppts i slutet av månaden kommer den att stödjas som referenskompilator.
  • Lade till stöd för att skriva tester med standardattributet "#[test]" för Rust och möjligheten att använda doctests för att dokumentera tester.
  • Lade till stöd för ARM32- och RISCV-arkitekturer utöver tidigare stödda x86_64 och ARM64.
  • Förbättrade implementeringar av GCC Rust (GCC frontend för Rust) och rustc_codegen_gcc (rustc backend för GCC), som nu klarar alla grundläggande tester.
  • En ny abstraktionsnivå föreslås för användning i Rust-program av kärnmekanismer skrivna i C, såsom röd-svarta träd, referensräknade objekt, skapande av filbeskrivningar, uppgifter, filer och I/O-vektorer.
  • Drivrutinutvecklingskomponenter har förbättrat stöd för modulen file_operations, modulen!-makrot, makroregistrering och rudimentära drivrutiner (söka och ta bort).
  • Binder stöder nu överföring av filbeskrivningar och LSM-krokar.
  • Ett mer funktionellt exempel på en Rust-drivrutin föreslås - bcm2835-rng för hårdvarans slumptalsgenerator för Raspberry Pi-kort.

Dessutom nämns vissa företags projekt relaterade till användningen av Rust i kärnan:

  • Microsoft har uttryckt intresse för att delta i arbetet med att integrera Rust-stöd i Linux-kärnan och är redo att tillhandahålla drivrutinsimplementeringar för Hyper-V on Rust under de kommande månaderna.
  • ARM arbetar för att förbättra Rust-stödet för ARM-baserade system. Rust-projektet har redan föreslagit ändringar som skulle göra 64-bitars ARM-system till en Tier 1-plattform.
  • Google ger direkt support för Rust for Linux-projektet, utvecklar en ny implementering av Binders interprocess-kommunikationsmekanism i Rust och överväger möjligheten att omarbeta olika drivrutiner i Rust. Genom ISRG (Internet Security Research Group) gav Google finansiering till arbetet med att integrera Rust-stöd i Linux-kärnan.
  • IBM har implementerat kärnstöd för Rust för PowerPC-system.
  • Laboratoriet LSE (Systems Research Laboratory) har utvecklat en SPI-drivrutin i Rust.

Källa: opennet.ru

Lägg en kommentar