Rustunderstøttelse af Linux-kernen møder kritik fra Torvalds

Linus Torvalds gennemgik de patches, der implementerede muligheden for at oprette drivere i Rust-sproget til Linux-kernen, og kom med nogle kritiske kommentarer.

De største klager var forårsaget af den potentielle mulighed for panic() i fejlsituationer, for eksempel i en situation med lav hukommelse, hvor operationer med dynamisk hukommelsesallokering, herunder inden for kernen, kan mislykkes. Torvalds udtalte, at en sådan tilgang i kernen er grundlæggende uacceptabel, og hvis dette punkt ikke forstås, kan han fuldstændig NAKed enhver kode, der forsøger at bruge en sådan tilgang. På den anden side var patchudvikleren enig i dette problem og anser det for løseligt.

Et andet problem var forsøg på at bruge flydende komma eller 128-bit typer, som ikke er acceptable for miljøer som Linux-kernen. Dette viste sig at være et mere alvorligt problem, da kernebiblioteket Rust i øjeblikket er udeleligt og repræsenterer en stor klat - der er ingen måde at anmode om kun nogle af funktionerne, hvilket forhindrer brugen af ​​en eller anden problematisk funktionalitet. Løsning af problemet kan kræve ændringer i rust compileren og bibliotekerne, selvom teamet endnu ikke har en strategi for, hvordan man implementerer modularisering af sprogbibliotekerne.

Derudover bemærkede Torvalds, at det medfølgende drivereksempel er ubrugeligt og rådede os til som eksempel at bruge en driver, der løser et af de reelle problemer.

Opdatering: Google har annonceret sin deltagelse i initiativet til at skubbe Rust-understøttelse ind i Linux-kernen og har givet tekniske grunde til at introducere Rust for at bekæmpe problemer, der skyldes hukommelsesfejl. Google mener, at Rust er klar til at slutte sig til C som sproget til udvikling af Linux-kernekomponenter. Artiklen giver også eksempler på brug af Rust-sproget til at udvikle kernedrivere i forbindelse med deres brug i Android-platformen (Rust er anerkendt som et officielt understøttet sprog til Android-udvikling).

Det bemærkes, at Google har udarbejdet en indledende prototype af en driver skrevet i Rust til Binder-interproceskommunikationsmekanismen, som vil give mulighed for en detaljeret sammenligning af ydeevnen og sikkerheden af ​​Binder-implementeringer i C og Rust. I sin nuværende form er arbejdet endnu ikke færdigt, men for næsten alle de grundlæggende abstraktioner af kernefunktionaliteten, der er nødvendige for, at Binder kan fungere, er der forberedt lag til at bruge disse abstraktioner i Rust-kode.

Kilde: opennet.ru

Tilføj en kommentar