Podpora Rust pro linuxové jádro čelí kritice od Torvaldse

Linus Torvalds zkontroloval záplaty, které implementovaly možnost vytvářet ovladače v jazyce Rust pro jádro Linuxu, a uvedl několik kritických poznámek.

Největší stížnosti byly způsobeny potenciální možností panic() v chybových situacích, například v situaci nedostatku paměti, kdy mohou selhat operace dynamické alokace paměti, a to i v rámci jádra. Torvalds prohlásil, že takový přístup v jádře je zásadně nepřijatelný, a pokud tento bod nepochopí, může zcela NAKovat jakýkoli kód, který se pokusí takový přístup použít. Na druhou stranu vývojář patche s tímto problémem souhlasil a považuje ho za řešitelný.

Dalším problémem byly pokusy o použití typů s pohyblivou řádovou čárkou nebo 128bitových typů, které nejsou přijatelné pro prostředí, jako je jádro Linuxu. To se ukázalo jako vážnější problém, protože v tuto chvíli je základní knihovna Rust nedělitelná a představuje jeden velký blob – neexistuje způsob, jak požadovat jen některé funkce, které by bránily použití té či oné problematické funkcionality. Řešení problému může vyžadovat změny v kompilátoru a knihovnách rust, ačkoli v tuto chvíli tým ještě nemá strategii, jak implementovat modularizaci jazykových knihoven.

Kromě toho Torvalds poznamenal, že poskytnutý příklad ovladače je k ničemu a poradil nám, abychom jako příklad použili nějaký ovladač, který řeší jeden ze skutečných problémů.

Aktualizace: Google oznámil svou účast v iniciativě prosadit podporu Rust do linuxového jádra a poskytl technické důvody pro zavedení Rustu v boji proti problémům způsobeným chybami paměti. Google věří, že Rust je připraven připojit se k C jako jazyku pro vývoj komponent linuxového jádra. Článek také uvádí příklady použití jazyka Rust k vývoji ovladačů jádra v kontextu jejich použití na platformě Android (Rust je uznáván jako oficiálně podporovaný jazyk pro vývoj Androidu).

Je třeba poznamenat, že Google připravil počáteční prototyp ovladače napsaného v Rustu pro mechanismus meziprocesové komunikace Binder, který umožní podrobné srovnání výkonu a bezpečnosti implementací Binder v C a Rustu. V současné podobě práce ještě není dokončena, ale pro téměř 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 Rust.

Zdroj: opennet.ru

Přidat komentář