Mer Rust mot C-krangel i Linux-miljøet: «Som kreft!»

En av de som vedlikeholder Linux-kjernen kaller det å blande Rust og C i Linux-kjernen for "kreft", og ber bidragsyterne om å slutte.

Det er stor uenighet innad i Linux-miljøet om hvorvidt man skal tillate kode skrevet i Rust eller ikke. 📸: Lukas / Unsplash
Det er stor uenighet innad i Linux-miljøet om hvorvidt man skal tillate kode skrevet i Rust eller ikke. 📸: Lukas / Unsplash Vis mer

I august i fjor trakk Microsoft-utvikleren Wedson Almeida Filho seg fra Rust for Linux-prosjektet, etter frustrasjon over all kranglingen om hvorvidt man skulle tillate å bruke Rust i Linux eller ikke.

Nå har krangelen om Rust i Linux blusset opp igjen, skriver The Register.

Det skjedde etter at noen sendte inn en patch som ville tillate drivere skrevet i Rust å kalle Linux-kjernens DMA API.

– Ingen Rust-kode i kernel/dma, vær så snill, svarte Christoph Hellwig, som vedlikeholder Linux-kjernen.

Ba om forslag til alternativ løsning

Miguel Ojeda i Rust for Linux-prosjektet spurte Hellwig om han kunne foreslå en alternativ løsning.

Til det svarte Hellwig at utviklere burde slutte å gjøre livet vanskelig for andre, og argumenterte med at grensesnittene mot DMA-API-et bør forbli i lesbar C-kode.

En utvikler i Red Hat som er involvert i Rust for Linux-prosjektet, Danilo Krummrich, utfordret Hellwig på dette, hvorpå Hellwig svarte at han ikke ville bli tvunget av noen til å forholde seg til "dagens skinnende språk".

Ikke alle i Linux-miljøet er glad i Rust. 📸: Linux Core mailing list
Ikke alle i Linux-miljøet er glad i Rust. 📸: Linux Core mailing list Vis mer

– Å vedlikeholde prosjekter med flere språk er et slik jeg ikke har noe interesse av å holde på med. Hvis du vil bruke noe som ikke er C, enten det er assembler eller Rust, får du skrive til C-grensesnittene og selv håndtere mismatchen, skriver Hellwig.

Kaller det kreft

Krummrich prøvde å forklare til Hellwig at de gjennom Rust for Linux-prosjektet lager Rust-kode som abstraherer bort C-API-ene for alle Rust-drivere, og at dette vedlikeholdes av Rust-utviklere.

På den måten vil det i kjernen som er skrevet i C være den samme, og så vil Rust-drivere bruke abstraksjoner mot denne C-koden. Abstraksjonene vil vedlikeholdes av et team som jobber med rust/kernel, slik at drivere ikke må ha egne C-bindinger.

En slik løsning virket imidlertid ikke spesielt interessant for Hellwig:

– Jeg vil ikke ha en ny vedlikeholder. Hvis du vil gjøre Linux umulig å vedlikeholde på grunn av en kodebase med flere språk, gjør det i driveren din slik at det er du som må håndtere det – i stedet for å spre denne kreften til Linux sine "core subsystems", skriver Hellwig.

Han understreker at han ikke mener at det er Rust som er kreft, men det å ha en kodebase bestående av flere språk.