Ny version 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 lanseringen av v5-komponenter för utveckling av drivrutiner i Rust-språket för övervägande av Linux-kärnutvecklare. Detta är den sjätte upplagan av patcharna, med hänsyn till den första versionen, publicerad utan versionsnummer. 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, fjärde och femte utgåvan av patcharna. I den nya versionen:

  • Verktygslådan har uppdaterats för att släppa Rust 1.59.0. En variant av alloc-biblioteket är också synkroniserad med den nya versionen av Rust, vilket eliminerar den möjliga genereringen av ett "panik"-tillstånd när fel uppstår, till exempel slut på minne. Möjligheten att använda assembler-inlägg ("feature(global_asm)") har stabiliserats.
  • Tillagt stöd för att skapa värdprogram i Rust som används under kärnkompilering.
  • Istället för att leverera förgenererade målplattformsspecifikationsfiler genereras de dynamiskt baserat på kärnkonfiguration.
  • Lade till HAVE_RUST kärnparameter för att aktivera för arkitekturer som stöder Rust.
  • Abstraktioner föreslås för användning i Rustkod för en hårdvarugenerator för pseudo-slumptal.
  • Tillåtet användning av felkoder utan prefixet "Error::" (till exempel "return Err(EINVAL)") för att approximera hanteringen av felkoder i C.
  • Tillagd "CString"-typ för anpassade C-strängar. Formatter- och bufferttyperna har kombinerats.
  • Lade till Bool och LockInfo-typer.
  • Implementeringen av spinnlås har förenklats.

Källa: opennet.ru

Lägg en kommentar