Miguel Ojeda, författare till projektet Rust-for-Linux, har föreslagit för Linux-kĂ€rnans utvecklare att slĂ€ppa v5-komponenterna för att utveckla enhetsdrivrutiner pĂ„ sprĂ„ket Rust. Detta Ă€r den sjĂ€tte versionen av patcharna och tar hĂ€nsyn till den första utgĂ„van som publicerades utan versionsnummer. Stödet för Rust betraktas som experimentellt men Ă€r redan inkluderat i linux-next-grenen och tillrĂ€ckligt utvecklat för att pĂ„börja arbetet med att skapa abstraheringslager över kĂ€rnunderavsnitt, samt för att skriva drivrutiner och moduler. Utvecklingen finansieras av företaget Google och organisationen ISRG (Internet Security Research Group), som Ă€r grundaren av projektet Letâs Encrypt och frĂ€mjar spridningen av HTTPS och utvecklingen av teknologier för att öka internetets sĂ€kerhet.
Vi pÄminner om att de föreslagna förÀndringarna ger möjlighet att anvÀnda Rust som ett andra sprÄk för utveckling av drivrutiner och moduler för kÀrnan. Stödet för Rust presenteras som ett alternativ, inte aktiverat som standard och inte som en obligatorisk byggberoende för kÀrnan. AnvÀndningen av Rust för utveckling av drivrutiner kommer att möjliggöra skapandet av sÀkrare och högre kvalitetsdrivrutiner med minimala insatser, utan problem som att referera till minnesomrÄden efter att de har frigjorts, dereferera nullpekare och överskridning av buffertgrÀnser.
SÀker minneshantering sÀkerstÀlls i Rust vid kompilering genom kontroll av referenser, spÄrning av Àgande av objekt och beaktande av objektens livstid (synlighet), samt genom utvÀrdering av korrekt tillgÄng till minnet under kodens körning. Rust tillhandahÄller ocksÄ verktyg för skydd mot heltalsöverflöden, krÀver obligatorisk initialisering av variabelvÀrden innan anvÀndning, hanterar fel bÀttre i standardbiblioteket, tillÀmpar konceptet av oförÀnderliga (immutable) referenser och variabler som standard och erbjuder stark statisk typning för att minimera logiska fel.
I den nya versionen av patcharna fortsÀtter arbetet med att ÄtgÀrda kommentarer som gavs under diskussionerna av första, andra, tredje, fjÀrde och femte versionerna av patcharna. I den nya versionen:
- Verktyget har uppdaterats till Rust 1.59.0. Den nya versionen av Rust har ocksÄ synkroniserats med versionen av biblioteket alloc, vilket eliminerar eventuella genereringar av "panic"-tillstÄnd vid fel, som minnesbrist. Möjligheten att anvÀnda assemblerinlÀgg ("feature(global_asm)") har stabiliserats.
- Stöd för att skapa vÀrdprogram pÄ sprÄket Rust som anvÀnds under kompileringen av kÀrnan har lagts till.
- IstÀllet för att leverera förskapade filer med specifikationer för mÄlplattformar möjliggörs deras dynamiska generation baserat pÄ kÀrnkonfigurationen.
- En kÀrnparameter, HAVE_RUST, har lagts till och aktiveras för arkitekturer dÀr Rust stöds.
- Abstraktioner för anvÀndning i Rust-koden av en hÄrdvaru-genererad pseudorandom-generator har föreslagits.
- AnvÀndning av felkoder utan prefixet "Error::" (t.ex. "return Err(EINVAL)") har tillÄtits för att nÀrma sig felhantering i C.
- En typ "CString" för egna C-strÀngar har lagts till. Typerna Formatter och Buffer har slagits samman.
- Typerna Bool och LockInfo har lagts till.
- Implementeringen av spin-lÄs har förenklats.
KĂ€lla: opennet.ru
