Linus Torvalds har gennemgået patches med implementeringen af muligheden for at skabe drivere i Rust til Linux-kernen og har fremsat nogle kritiske bemærkninger.
De største bekymringer blev rejst omkring den potentielle mulighed for at gå i panic() i fejlsituationer, for eksempel i tilfælde af hukommelsesmangel, hvor operationer med dynamisk hukommelsesallokering, også inde i kernen, kan fejle. Torvalds udtalte, at en sådan tilgang i kernen er principielt uacceptabel, og hvis dette ikke forstås, kan han totalt forkaste (totally NAKed) al kode, der forsøger at benytte en sådan tilgang. Omvendt er udvikleren, der arbejder med patches, enig i problemet og mener, at det er løsbart.
En anden udfordring har været forsøget på at bruge flydende punktberegninger eller 128-bit typer, hvilket ikke er acceptablet for miljøer som Linux-kernen. Dette viste sig at være et mere alvorligt problem, da den nuværende basisbibliotek (core) af Rust er udelukkende og repræsenterer en stor blob — der er ingen mulighed for kun at anmode om nogle af funktionerne, hvilket forhindrer brugen af problematisk funktionalitet. At løse dette problem kan kræve ændringer i Rust-kompilatoren og biblioteket, idet teamet i øjeblikket ikke har en strategi for, hvordan man implementerer modulær struktur i bibliotekerne.
Derudover bemærkede Torvalds, at det leverede driver-eksempel var værdiløst, og han anbefalede at vedlægge et eksempel med en driver, der løser en af de reelle opgaver.
Tillæg: Google har udtalt sit engagement i initiativet til at fremme understøttelse af Rust i Linux-kernen og har fremhævet de tekniske aspekter ved at implementere Rust for at bekæmpe de problemer, der opstår som følge af hukommelsesfejl. Google mener, at Rust allerede er klar til at slutte sig til C som et sprog til udvikling af komponenter til Linux-kernen. Artiklen indeholder også eksempler på brugen af Rust til udvikling af kernedrivere i konteksten af deres anvendelse på Android-platformen (Rust er officielt anerkendt som et understøttet sprog til udvikling af Android).
Det rapporteres, at Google har udarbejdet en indledende prototype af en driver skrevet i Rust til mekanismen for inter-proces kommunikation Binder, som vil muliggøre en grundig sammenligning af ydeevne og sikkerhed mellem implementationer af Binder i C og Rust. Arbejdet er endnu ikke afsluttet, men der er allerede næsten for alle grundlæggende abstraktioner af kernelens funktionalitet, som er nødvendige for at arbejde med Binder, lavet lag til at anvende disse abstraktioner i kode skrevet i Rust.
Kilde: opennet.ru
