Het is nog niet zo lang geleden dat er gelachen zou zijn om het idee dat er een andere taal dan C zou worden gebruikt in de Linux-kernel. Dingen zijn veranderd. 

Tegenwoordig is Rust, de systeemtaal op hoog niveau die dichter bij Linux komt, dichterbij dan ooit met de volgende “patchreeks om ondersteuning voor Rust als tweede taal aan de Linux-kernel toe te voegen.”

De grootste verandering in deze nieuwe pakketten is dat de Rust-code die voor de kernel wordt voorgesteld, nu afhankelijk is van de stabiele Rust-compiler in plaats van de bèta-compilers. In de toekomst zal Rust op Linux migreren telkens wanneer een nieuwe stabiele Rust-compiler wordt uitgebracht. Momenteel gebruikt het Rust 1.57.0.

Door dit te doen, zoals Linux-kernel en leider Rust op Linux, zei ontwikkelaar Miguel Ojeda: “Door de compiler te upgraden, hebben we een aantal onstabiele functies die we gebruikten van de lijst kunnen halen.” Dit betekent op zijn beurt dat Rust op Linux stabieler zal zijn.

Vooruitkijkend schreef Ojeda: “We zullen doorgaan met upgraden totdat we niet meer afhankelijk zijn van onstabiele functies; op dat moment willen we misschien beginnen te verklaren dat een minimale Rust-versie wordt ondersteund zoals het is gedaan, bijvoorbeeld GCC en Clang.

Senior Linux-kernelontwikkelaar Greg Kroah-Hartman had me verteld dat hij gelooft dat “stuurprogramma’s waarschijnlijk de eerste plaats zijn voor” Rust die in Linux verschijnt, aangezien “ze de ‘eindblaadjes’ zijn van de boom van afhankelijkheden in de kernelbron. Ze zijn afhankelijk van de kern kernelfunctionaliteit, maar niets hangt ervan af.”

Dit komt er al een aantal jaren. Op de virtuele 2020 Linux Plumbers Conference, waar de beste Linux-kernelontwikkelaars de toekomst van Linux uitpluizen, werd het idee geïntroduceerd om Rust te introduceren als de tweede taal van de kernel.

Hoewel Linus Torvalds zeker is, zal Linux uiteindelijk niet in Rust worden geschreven. Maar dat is dan ook niet het doel. Niemand gaat de 25 miljoen regels C van de kernel in Rust herschrijven.

Onder leiding van Josh Triplett, taalleider Rust, en Nick Desaulniers, een Google-ingenieur, stelden ze voor om de Rust-taal op systeemniveau in de kernel te gebruiken. Waarom? Omdat het veel veiliger is dan C, vooral bij het afhandelen van geheugenfouten.

Zoals Ryan Levick, een voorvechter van Microsoft-cloudontwikkelaars, uitlegde: “Rust is volledig geheugenveilig.” Aangezien ongeveer tweederde van de beveiligingsproblemen terug te voeren zijn op het slecht omgaan met geheugen, is dit een grote verbetering. Bovendien: “Rust voorkomt deze problemen meestal zonder enige runtime-overhead toe te voegen”, zei Levick.

Torvalds ziet de voordelen. Hoewel hij een langzame maar gestage aanpak aanmoedigt om Rust in Linux te introduceren, heeft hij ook gezegd dat het gebruik van Rust-interfaces voor stuurprogramma’s en andere niet-kern-kernelprogramma’s zinvol is: “Ik ben ervan overtuigd dat het gaat gebeuren. Het is misschien niet Rust, maar het zal gebeuren dat we verschillende modellen zullen hebben om dit soort dingen te schrijven, en C zal niet de enige zijn.”

Afgelopen zomer gaf Ojeda aan dat het project nog niet klaar is, en het meeste werk nog voor hen ligt. “We zijn klaar om de mainline te krijgen als de beheerders op hoog niveau de huidige veranderingen accepteren en er de voorkeur aan geven dat we binnen de kernel werken.”

Toch wordt er nu hard gewerkt. Ik verwacht ergens in 2022 de eerste Rust-code in de Linux-kernel te zien.