Smart Pointer und mehr Rust-Code für den Linux-Kernel 6.14
Das Linux-Rust-Team hat für die Kernel-Version 6.14 neue Funktionen implementiert, die eine stabilere Nutzung von Kernfunktionen versprechen.
(Bild: Bild erstellt mit KI für iX)
Miguel Ojeda, der Chefentwickler von Rust für Linux, hat in einer Mail an Linus Torvalds eine Reihe von Neuerungen für Kernel 6.14 angekündigt. Als "wichtigen Meilenstein auf dem Weg, einen Kernel zu bauen, der nur stabile Rust-Funktionen nutzt", nennt er die Einführung eines Makros für smarte Pointer mit Rust 1.84: derive(CoercePointee).
Mit diesem Makro nutzen Kernel-Funktionen Rust-Bibliotheken wie Arc auf stabile Weise, die vorher nur unsicher zugänglich waren. Als Beispiel nennt Ojeda in der Mail:
fn f(p: &Arc<dyn Display>) {
pr_info!("{p}\n");
}
let a: Arc<dyn Display> = Arc::new(42i32, GFP_KERNEL)?;
let b: Arc<dyn Display> = Arc::new("hello there", GFP_KERNEL)?;
f(&a); // Prints "42".
f(&b); // Prints "hello there".
Als weitere Neuerungen listet er den Wechsel zu benutzerdefinierten Integer-Typen im Foreign Function Interface (FFI) auf und die Zuordnung der Typen long zu isize und char zu u8.
Videos by heise
Mit Blick auf Android hat das Rust-Team die Umgebungsvariable PROCMACROLDFLAGS eingeführt, die es Proc-Makros von Rust erlaubt, andere Flags zu nutzen als die, die beim Linken von Host-Programmen angegeben waren. Und für Kernel-Builds unter macOS hat das Team die Namenskonventionen für dynamische Bibliotheken angepasst (beispielsweise so statt dylib).
Weitere Updates betreffen insbesondere Module des Kernel-Crates, zum Beispiel erhält types eine verbesserte Version von ForeignOwnable::borrow_mut und alloc implementiert Display für Box und richtet die Debug-Implementierung danach aus.
(who)