Линус Торвальдс прегледа патчовете с реализация на възможността за създаване на драйвъри на езика Rust за ядрото на Linux и изрази някои критични забележки.
Най-големите оплаквания предизвика потенциалната възможност за изпадане в panic() в случай на грешки, например в ситуация на недостиг на памет, когато операциите по динамично разпределение на паметта, включително и в ядрото, могат да завършат с грешка. Торвальдс заяви, че подобен подход в ядрото е принципно недопустим и при неразбиране на този момент той може напълно да отхвърли (totally NAKed) всякакъв код, който се опита да използва подобен подход. От друга страна, разработчикът, занимаващ се с патчовете, се съгласи с този проблем и счита, че той е решим.
Още един проблем стана опитът за използване на изчисления с плаваща запетая или 128-битови типове, което не е допустимо за такива среди, като ядрото на Linux. Това се оказа по-сериозен проблем, тъй като в момента основната (core) библиотека на Rust е неделима и представлява един голям blob — в нея няма възможност да се изиска само част от възможностите, предотвратявайки използването на проблемна функционалност. Решението на проблема може да изисква изменения в компилатора на Rust и библиотеката, като в същото време екипът все още няма стратегия как да реализира модулност на библиотеките на езика.
Освен това Торвальдс отбеляза, че предоставеният пример за драйвер е безполезен и препоръча да бъде приложен пример за драйвер, решаващ една от реалните задачи.
Допълнение: Компанията Google обяви участието си в инициативата за насърчаване на поддръжката на Rust в ядрото на Linux и представи техническите аспекти на целесъобразността на внедряването на Rust за борба с проблемите, произтичащи от грешки при работа с паметта. Google смята, че Rust вече е готов да се присъедини към Си като език за разработка на компоненти за ядрото на Linux. В статията също така са приведени примери за използване на езика Rust за разработка на ядрови драйвери, в контекста на тяхната употреба в платформата Android (Rust е признат за официално поддържан език за разработка на Android).
Отбелязва се, че Google е подготвил началния прототип на драйвер, написан на езика Rust, за механизма за междупроцесно взаимодействие Binder, който ще позволи детайлно сравнение на производителността и безопасността на реализациите на Binder на C и Rust. В текущия си вид работата все още не е завършена, но вече са подготвени слоеве за почти всички основни абстракции на функционалността на ядрото, необходими за работата на Binder, за да се използват тези абстракции в код на езика Rust.
Източник: opennet.ru
