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

Мигел Охеда (Miguel Ojeda), авторът на проекта Rust-for-Linux, предложи на разработчиците на ядрото на Linux да разгледат версия v10 на компонентите за разработка на драйвери на Rust. Това е единадесетото издание на пачовете, като се взема предвид първата версия, публикувана без номер на версия. Включването на поддръжка за Rust беше одобрено от Линус Торвалдс за включване в ядрото на 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 също така предлага средства за защита от препълване на цели числа, изисква задължителна инициализация на стойностите на променливите преди използване, по-добре обработва грешките в стандартната библиотека, прилага концепцията за неизменяемост (immutable) на референции и променливи по подразбиране и предлага силна статична типизация за минимизиране на логически грешки.

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

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