Десетата версия на корекции за ядрото на Linux с поддръжка на език Rust

Мигел Охеда, авторът на проекта Rust-for-Linux, предложи пускането на v10 компоненти за разработване на драйвери на устройства на езика Rust за разглеждане от разработчиците на ядрото на Linux. Това е единадесетото издание на пачовете, като се вземе предвид първата версия, публикувана без номер на версията. Включването на поддръжка на Rust е одобрено от Linusum Torvalds за включване в ядрото на Linux 6.1, с изключение на непредвидени проблеми. Разработката е финансирана от Google и ISRG (Internet Security Research Group), която е основател на проекта Let's Encrypt и насърчава HTTPS и развитието на технологии за подобряване на интернет сигурността.

Подобно на предишната версия на пачовете, изданието v10 е съкратено до минимума, достатъчен за изграждане на прост модул на ядрото, написан на езика Rust. Разликите от предишната версия се свеждат до незначителни редакции, замяна на sizeof с ARRAY_SIZE в kallsyms.c и адаптиране на пачове към ядрото v6.0-rc7. Очаква се минималният пач, чийто размер е намален от 40 на 13 хиляди реда код, да опрости приемането на поддръжката на Rust в основното ядро. След осигуряване на минимална поддръжка се планира постепенно увеличаване на съществуващата функционалност, прехвърляне на други промени от клона Rust-for-Linux.

Предложените промени правят възможно използването на Rust като втори език за разработване на драйвери и модули на ядрото. Поддръжката на Rust е представена като опция, която не е активирана по подразбиране и не води до включването на Rust като задължителна зависимост за компилация за ядрото. Използването на Rust за разработка на драйвери ще ви позволи да създавате по-безопасни и по-добри драйвери с минимални усилия, без проблеми като достъп до паметта след освобождаване, дерефериране на нулев указател и препълване на буфер.

Безопасното боравене с паметта е осигурено в Rust по време на компилиране чрез проверка на референции, проследяване на собствеността върху обекта и продължителността на живот (обхват) на обекта, както и чрез оценка на коректността на достъпа до паметта по време на изпълнение на кода. Rust също осигурява защита срещу препълване на цели числа, изисква задължителна инициализация на стойностите на променливите преди употреба, обработва грешките по-добре в стандартната библиотека, прилага концепцията за неизменни препратки и променливи по подразбиране, предлага силно статично въвеждане за минимизиране на логическите грешки.

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

Добавяне на нов коментар