Karol Herbst von Red Hat, der an der Entwicklung von Mesa, dem Nouveau-Treiber und dem offenen OpenCL-Stack mitwirkt, hat rusticl veröffentlicht - eine experimentelle Softwareimplementierung von OpenCL (OpenCL-Frontend) fĂŒr Mesa, geschrieben in Rust. Rusticl dient als Pendant zum bereits in Mesa vorhandenen OpenCL-Frontend Clover und wurde ebenfalls unter Verwendung der von Mesa bereitgestellten Gallium-Schnittstelle entwickelt.
Die Entwicklung wurde am 17. September auf der XDC 2021 (X.Org Developers Conference) vorgestellt. Ziel der Entwicklung war es, Rust zu erkunden, optimale Integrationswege von Rust in Mesa zu finden, die Erstellung von API-Implementierungen in einer anderen Sprache auszuprobieren und die KompatibilitĂ€t von Rust-Komponenten mit dem restlichen C-Code zu ĂŒberprĂŒfen. Die Entwicklung ist noch nicht vollstĂ€ndig abgeschlossen â Tests der CL CTS, die mit dem Kopieren, Lesen und Schreiben von Puffer zusammenhĂ€ngen, werden bereits erfolgreich durchgefĂŒhrt, jedoch gibt es bisher keine Integration des Compilers und keine UnterstĂŒtzung fĂŒr externe Crate-Pakete im Build-System. FĂŒr die Generierung von Bindings fĂŒr Mesa und OpenCL, die es ermöglichen, Rust-Funktionen aus C-Code und umgekehrt aufzurufen, wurde rust-bindgen verwendet.

Erinnern wir uns, dass die Entwickler von Mesa vor einem Jahr bereits die Sinnhaftigkeit der Verwendung der Programmiersprache Rust diskutiert haben. Zu den Vorteilen der Rust-UnterstĂŒtzung wurden die erhöhte Sicherheit und QualitĂ€t der Treiber genannt, da typische Probleme mit dem Speicher vermieden werden können. AuĂerdem besteht die Möglichkeit, externe Entwicklungen wie Kazan (eine Vulkan-Implementierung in Rust) in Mesa zu integrieren. Zu den Nachteilen zĂ€hlen die KomplexitĂ€t des Build-Systems, die mangelnde Bereitschaft, sich an das Paketverwaltungssystem Cargo zu binden, die erweiterten Anforderungen an die Build-Umgebung sowie die Notwendigkeit, den Rust-Compiler in die Build-AbhĂ€ngigkeiten einzubeziehen, die fĂŒr den Aufbau von SchlĂŒsselkomponenten des Desktops in Linux erforderlich sind.
Quelle: opennet.ru
