Linus Torvalds granskade patchar som implementerar möjligheten att skapa drivrutiner i Rust-sprÄket för kÀrnan. Linuxoch framförde nÄgra kritiska kommentarer.
De största klagomÄlen orsakades av den potentiella möjligheten till panic() i felsituationer, till exempel i en situation med lÄgt minne, nÀr dynamiska minnesallokeringsoperationer, inklusive inom kÀrnan, kan misslyckas. Torvalds sa att ett sÄdant tillvÀgagÄngssÀtt i kÀrnan Àr fundamentalt oacceptabelt och om denna punkt inte förstÄs kan han fullstÀndigt NAKed alla kod som försöker anvÀnda en sÄdan metod. à andra sidan höll patchutvecklaren med om detta problem och anser att det gÄr att lösa.
Ett annat problem var försök att anvĂ€nda flyttal eller 128-bitarstyper, vilket inte Ă€r acceptabelt för miljöer som kĂ€rnan. LinuxDetta visade sig vara ett allvarligare problem, eftersom Rust-kĂ€rnbiblioteket för nĂ€rvarande Ă€r odelbart och representerar en stor blob â det tillĂ„ter dig inte att bara begĂ€ra vissa funktioner, vilket förhindrar anvĂ€ndningen av viss problematisk funktionalitet. Att lösa detta problem kan krĂ€va Ă€ndringar i Rust-kompilatorn och biblioteken, och teamet har för nĂ€rvarande ingen strategi för att implementera modularitet i sprĂ„kbiblioteken.
Dessutom noterade Torvalds att det medföljande drivrutinsexemplet var vÀrdelöst och rÄdde oss att som exempel anvÀnda nÄgon drivrutin som löser ett av de verkliga problemen.
Uppdatering: Google har meddelat sitt deltagande i initiativet att integrera stöd för Rust i kÀrnan. Linux och skisserade den tekniska genomförbarheten av att implementera Rust för att bekÀmpa problem som uppstÄr pÄ grund av minneshanteringsfel. Google tror att Rust nu Àr redo att ansluta sig till C som sprÄk för att utveckla kÀrnkomponenter. LinuxArtikeln ger ocksÄ exempel pÄ hur man anvÀnder Rust-sprÄket för att utveckla kÀrndrivrutiner, i samband med deras anvÀndning i plattformen. Android (Rust Àr erkÀnt som ett officiellt stödt sprÄk för utveckling) Android).
Det noteras att Google har förberett en första prototyp av en drivrutin skriven i Rust för Binders interprocesskommunikationsmekanism, vilket kommer att möjliggöra en detaljerad jÀmförelse av prestanda och sÀkerhet för Binder-implementationer i C och Rust. I sin nuvarande form Àr arbetet Ànnu inte fÀrdigt, men för nÀstan alla grundlÀggande abstraktioner av kÀrnfunktionaliteten som krÀvs för att Binder ska fungera, har lager förberetts för att anvÀnda dessa abstraktioner i Rust-kod.
KĂ€lla: opennet.ru
