Podpora Rust pre linuxové jadro čelí kritike zo strany Torvaldsa

Linus Torvalds skontroloval záplaty, ktoré implementovali možnosť vytvárať ovládače v jazyku Rust pre jadro Linuxu a uviedol niekoľko kritických pripomienok.

Najväčšie sťažnosti boli spôsobené potenciálnou možnosťou paniky() v chybových situáciách, napríklad v situácii nedostatku pamäte, keď operácie dynamickej alokácie pamäte vrátane v jadre môžu zlyhať. Torvalds uviedol, že takýto prístup v jadre je zásadne neprijateľný a ak tento bod nepochopíme, môže úplne NAKed akýkoľvek kód, ktorý sa pokúsi použiť takýto prístup. Na druhej strane, vývojár záplaty s týmto problémom súhlasil a považuje ho za riešiteľný.

Ďalším problémom boli pokusy použiť typy s pohyblivou rádovou čiarkou alebo 128-bitové typy, ktoré nie sú prijateľné pre prostredia, ako je jadro Linuxu. Toto sa ukázalo ako vážnejší problém, keďže v súčasnosti je základná knižnica Rust nedeliteľná a predstavuje jeden veľký blob – neexistuje spôsob, ako požadovať len niektoré funkcie, ktoré by bránili použitiu tej či onej problematickej funkcionality. Riešenie problému si môže vyžadovať zmeny v kompilátore a knižniciach hrdze, hoci v súčasnosti tím ešte nemá stratégiu, ako implementovať modularizáciu jazykových knižníc.

Okrem toho Torvalds poznamenal, že poskytnutý príklad ovládača je zbytočný a odporučil nám použiť ako príklad nejaký ovládač, ktorý rieši jeden zo skutočných problémov.

Aktualizácia: Spoločnosť Google oznámila svoju účasť na iniciatíve presadiť podporu Rustu do jadra Linuxu a poskytla technické dôvody na zavedenie Rustu na boj proti problémom spôsobeným chybami pamäte. Google verí, že Rust je pripravený pripojiť sa k C ako jazyku pre vývoj komponentov jadra Linuxu. Článok tiež uvádza príklady použitia jazyka Rust na vývoj ovládačov jadra v kontexte ich použitia na platforme Android (Rust je uznávaný ako oficiálne podporovaný jazyk pre vývoj Androidu).

Je potrebné poznamenať, že spoločnosť Google pripravila počiatočný prototyp ovládača napísaného v jazyku Rust pre mechanizmus medziprocesovej komunikácie Binder, ktorý umožní podrobné porovnanie výkonu a bezpečnosti implementácií Binder v jazykoch C a Rust. V súčasnej podobe práca ešte nie je dokončená, ale pre takmer všetky základné abstrakcie funkčnosti jadra potrebné na fungovanie Binderu boli pripravené vrstvy na použitie týchto abstrakcií v kóde Rust.

Zdroj: opennet.ru

Pridať komentár