Ruststøtte for Linux-kjernen møter kritikk fra Torvalds

Linus Torvalds gjennomgikk oppdateringene som implementerte muligheten til å lage drivere i Rust-språket for Linux-kjernen, og kom med noen kritiske kommentarer.

De største klagene var forårsaket av den potensielle muligheten for panikk() i feilsituasjoner, for eksempel i en situasjon med lite minne, når operasjoner med dynamisk minneallokering, inkludert i kjernen, kan mislykkes. Torvalds uttalte at en slik tilnærming i kjernen er fundamentalt uakseptabel, og hvis dette punktet ikke blir forstått, kan han fullstendig NAKed enhver kode som prøver å bruke en slik tilnærming. På den annen side var patchutvikleren enig i dette problemet og anser det som løst.

Et annet problem var forsøk på å bruke flytende komma eller 128-bits typer, som ikke er akseptable for miljøer som Linux-kjernen. Dette viste seg å være et mer alvorlig problem, siden kjernebiblioteket i Rust for øyeblikket er udelelig og representerer en stor blob - det er ingen måte å be om bare noen av funksjonene, og forhindrer bruk av en eller annen problematisk funksjonalitet. Å løse problemet kan kreve endringer i rustkompilatoren og bibliotekene, selv om teamet foreløpig ikke har en strategi for hvordan de skal implementere modularisering av språkbibliotekene.

I tillegg bemerket Torvalds at det medfølgende drivereksemplet var ubrukelig og rådet oss til å bruke en driver som løser et av de virkelige problemene som eksempel.

Oppdatering: Google har annonsert sin deltakelse i initiativet for å presse Rust-støtte inn i Linux-kjernen og har gitt tekniske grunner for å introdusere Rust for å bekjempe problemer som oppstår fra minnefeil. Google mener at Rust er klar til å bli med C som språket for utvikling av Linux-kjernekomponenter. Artikkelen gir også eksempler på bruk av Rust-språket for å utvikle kjernedrivere, i sammenheng med deres bruk i Android-plattformen (Rust er anerkjent som et offisielt støttet språk for Android-utvikling).

Det bemerkes at Google har utarbeidet en innledende prototype av en driver skrevet i Rust for Binder-interprosesskommunikasjonsmekanismen, som vil tillate en detaljert sammenligning av ytelsen og sikkerheten til Binder-implementeringer i C og Rust. I sin nåværende form er arbeidet ennå ikke fullført, men for nesten alle de grunnleggende abstraksjonene av kjernefunksjonaliteten som kreves for at Binder skal fungere, er det utarbeidet lag for å bruke disse abstraksjonene i Rust-kode.

Kilde: opennet.ru

Legg til en kommentar