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)