
In der Linux-Kernel-Entwicklergemeinschaft gibt es Uneinigkeiten ĂŒber die Integration der Programmiersprache Rust. Christoph Hellwig, der Maintainer der DMA-, KVM-, Slab Allocator- und PowerPC-Subsysteme im Linux-Kernel, der frĂŒher im technischen Leitungsausschuss der Linux Foundation tĂ€tig war und KlĂ€ger in einem damit verbundenen Gerichtsverfahren gegen VMware war, weigerte sich, die mit der UnterstĂŒtzung von Treiberentwicklungen in Rust verbundenen Patches zu bestĂ€tigen.
Die vorgeschlagenen Patches, die Wrapper fĂŒr Funktionen des DMA-Subsystems hinzufĂŒgen, erweckten Bedenken hinsichtlich der KomplexitĂ€t der Codewartung und möglicher QualitĂ€tsminderungen der Software. Einige Entwickler ziehen es vor, Programmierschnittstellen in C zu belassen, um zusĂ€tzliche Schwierigkeiten zu vermeiden.
Als Grund fĂŒr die Ablehnung wurde die KomplexitĂ€t der Wartung des Codes bei Vorhandensein von Wrappern in anderen Sprachen angefĂŒhrt und das Bestreben, die Programmierschnittstellen zu DMA in lesbarer Form in C zu belassen, ohne sie mit unverstĂ€ndlichen Wrappers zu ĂŒberladen. Christoph schlug vor, direkt auf die ursprĂŒngliche C-API von DMA in jedem Treiber in Rust zuzugreifen, um zusĂ€tzliche Abstraktionen zu vermeiden, von denen die Kernelpflege abhĂ€ngt.
Trotz der Absicht der Entwickler des Projekts Rust for Linux, die gesamte Rust-Codebasis eigenstÀndig zu warten, wurde ein Veto gegen die Annahme von Patches verhÀngt.
Christoph bemerkte, dass Entwickler, wenn sie die Unmöglichkeit der Wartung von Linux aufgrund der Vermischung verschiedener Programmiersprachen in einem Code-Basis erreichen wollen, dies in ihrem eigenen Treiber tun sollten und nicht diesen "Krebs" im Hauptkernel verbreiten sollten.
Das Kernproblem mit der Wartung ist, dass Rust-Bindungen die Wartenden von dem Code in Rust abhĂ€ngig machen. Auf den ersten Blick sieht es so aus, als ob die Bindungen nur Erweiterungen der C-Strukturen und -Funktionen sind, die keinen Einfluss auf die Entwicklung und Wartung von C-Code haben. Das ist jedoch nicht der Fall. Bei Vorhandensein solcher Bindungen mĂŒssen die Entwickler von Subsystemen, die in C geschrieben sind, die Auswirkungen ihrer Ănderungen auf die FunktionsfĂ€higkeit der Bindungen berĂŒcksichtigen. Jede Ănderung an Datenstrukturen oder internen Funktionen in C kann die Notwendigkeit zur Anpassung des Bindungscodes zur Folge haben. Daher mĂŒssen die Ănderungen im C-Code, die die Bindungen beeinflussen, verfolgt und mit dem Rust-Code synchronisiert werden. Viele Wartende sind nicht bereit, die zusĂ€tzliche Verantwortung fĂŒr die Behebung von Problemen im Rust-Code zu ĂŒbernehmen und möchten ihre Zeit nicht mit der Ăberwachung des Zustands der Rust-Bindungen verbringen.
Quelle: linux.org.ru
