Linus Torvalds provedl recenzování patchů s implementací možnosti vytváření ovladačů v jazyce Rust pro jádro Linux a vyjádřil některé kritické poznámky.
Největší výtky vzbudila potenciální možnost situací paniky (panic()) v případě chyb, například v situaci nedostatku paměti, kdy operace dynamické alokace paměti, včetně těch uvnitř jádra, mohou selhat. Torvalds prohlásil, že takový přístup je v jádře principiálně nepřijatelný, a pokud si někdo neuvědomuje tento bod, může zcela odmítnout (totally NAKed) jakýkoli kód, který se pokusí použít podobný přístup. Na druhou stranu, vývojář pracující na patche souhlasil s tímto problémem a považuje ho za řešitelný.
Dalším problémem se staly pokusy o použití výpočtů s plovoucí desetinnou čárkou nebo 128bitových typů, což není přípustné pro prostředí, jako je jádro Linux. Toto se ukázalo být vážnějším problémem, protože v současné době je základní knihovna Rust nedělitelná a představuje jeden velký blob – neexistuje možnost požádat pouze o některé funkce a tím předejít použití problematické funkcionality. Řešení problému může vyžadovat úpravy v kompilátoru rust a knihovně, přičemž tým zatím nemá strategii, jak realizovat modularitu knihoven jazyka.
Kromě toho Torvalds poznamenal, že poskytnutý příklad ovladače je zbytečný, a doporučil aplikovat jako příklad nějaký ovladač, který řeší jednu z reálných úloh.
Doplňující informace: Společnost Google oznámila svou účast v iniciativě na podporu Rustu v jádře Linux a uvedla technické aspekty opodstatněnosti zavedení Rustu k boji s problémy vyplývajícími z chyb při práci s pamětí. Google se domnívá, že Rust je již připraven připojit se k C jako jazyk pro vývoj komponent jádra Linux. V článku jsou také uvedeny příklady použití jazyka Rust pro vývoj ovladačů jádra, v kontextu jejich využití na platformě Android (Rust byl oficiálně uznán jako podporovaný jazyk pro vývoj Androidu).
Bylo oznámeno, že Google připravil počáteční prototyp ovladače napsaného v jazyce Rust pro mechanismus meziprocesní komunikace Binder, který umožní podrobné srovnání výkonu a bezpečnosti implementací Binderu v C a Rustu. Práce v současné podobě ještě není dokončena, ale téměř pro všechny základní abstrakce funkčnosti jádra nezbytné pro fungování Binderu byly připraveny vrstvy pro použití těchto abstrakcí v kódu napsaném v jazyce Rust.
Zdroj: opennet.ru
