Поддръжката на Rust за ядрото на Linux срещна критика от Торвалдс.

Линус Торвальдс извърши преглед на патчовете с реализация на възможността за създаване на драйвери на езика Rust за ядрото на Linux и изрази някои критични забележки.

Най-големите претенции бяха свързани с потенциалната възможност за изпадане в panic() при грешни ситуации, например, при недостатъчност на памет, когато операциите за динамично разпределение на паметта, включително и в ядрото, могат да завършат с грешка. Торвальдс заяви, че такъв подход в ядрото е принципно недопустим и при непонимание на този момент, той може напълно да отхвърли (totally NAKed) всякакъв код, който се опита да използва такъв подход. От друга страна, разработчикът, занимаващ се с патчовете, се съгласи с този проблем и го счита за разрешим.

Още един проблем стана опитите за използване на изчисления с плаваща запетая или 128-битни типове, което не е допустимо за среди като ядрото на Linux. Това се оказа по-сериозен проблем, тъй като в момента основната (core) библиотека на Rust е неразделима и представлява един голям blob — в нея няма възможност за заявка на само някои от функциите, предотвратявайки използването на проблемна функционалност. Решаването на проблема може да изисква изменения в компилатора на Rust и в библиотеката, като в момента екипът няма стратегия как да реализира модуларност на библиотеките на езика.

Освен това, Торвальдс отбеляза, че предоставеният пример на драйвер е безполезен и препоръча да се предостави пример на драйвер, решаващ една от реалните задачи.

Допълнение: Компанията Google обяви своето участие в инициативата за популяризиране на поддръжката на Rust в ядрото на Linux и представи техническите аспекти на целесъобразността от внедряването на Rust за справяне с проблемите, възникващи поради грешки при работа с памет. Google смята, че Rust вече е готов да се присъедини към C като език за разработка на компоненти на ядрото на Linux. В статията също са дадени примери за използването на езика Rust за разработка на драйвери за ядрото, в контекста на тяхното използване в платформата Android (Rust е признат за официално поддържан език за разработка на Android).

Отбелязва се, че Google е подготвил начален прототип на драйвер, написан на Rust, за механизма за межпроцесно взаимодействие Binder, който ще позволи детайлно сравнение на производителността и сигурността на реализациите на Binder на C и Rust. В текущия си вид работата все още не е завършена, но почти за всички основни абстракции на функционалността на ядрото, необходима за работа на Binder, са подготвени прослойки за използването им в код на Rust.

Източник: opennet.ru

Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри 🔥 Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри | ProHoster