Femte 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, har föreslagit en femte version av komponenter för att utveckla enhetsdrivrutiner i Rust-språket för övervägande av Linux-kärnutvecklare. Ruststöd anses vara experimentellt, men ingår redan i linux-next-grenen och är tillräckligt utvecklat 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 grundare 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, tredje och fjärde utgåvan av patcharna. I den nya versionen:

  • Komponenttestning för Rust-stöd har lagts till det kontinuerliga integrationssystemet baserat på den Intel-stödda 0DAY/LKP-boten och publiceringen av testrapporter har börjat. Vi förbereder för att integrera Rust-stöd i KernelCIs automatiserade testsystem. Testning baserad på GitHub CI har överförts till användning av behållare.
  • Rustkärnmoduler är befriade från behovet av att definiera lådans attribut "#![no_std]" och "#![feature(...)]".
  • Tillagt stöd för mål för enstaka sammansättningar (.o, .s, .ll och .i).
  • Kodriktlinjer definierar regler för separering av kommentarer (“//”) och dokumentation av kod (“///”).
  • Skriptet is_rust_module.sh har omarbetats.
  • Lade till stöd för statiska (globala delade variabler) synkroniseringsprimitiver baserat på "CONFIG_CONSTRUCTORS"-implementeringen.
  • Låshanteringen är förenklad: Guard och GuardMut är kombinerade och en parametrerad typ.
  • Det är möjligt att definiera ytterligare parametrar vid registrering av enheter.
  • Lade till "RwSemaphore"-abstraktionen, som fungerar som ett omslag över rw_semaphore C-strukturen.
  • För att använda mmap har en ny mm-modul och en VMA-abstraktion lagts till (ett omslag över strukturen vm_area_struct).
  • GPIO PL061-drivrutinen har bytts till att använda makrot "dev_*!".
  • En allmän sanering av koden genomfördes.

Källa: opennet.ru

Lägg en kommentar