През последните месеци Разработчиците на Linux спорят възможността за позволяват използването на езика Rust за да напишете нови драйвери на устройства за ядрото.
Миналата година разработчиците на ядрото на Linux изглежда са постигнали споразумение по въпроса, Поддръжниците на Rust цитират работа, която показва, че приблизително две трети от уязвимостите на ядрото, на които са присвоени CVE в Android и Ubuntu, са свързани с проблеми със сигурността на паметта.
След това изявление Линус Торвалдс, софтуерен инженер, водещ създател и разработчик на ядрото на Linux, каза в интервю, че дискусиите по темата биха били много по-важни от дълга публикация в Google за езика.
Когато го попитаха за предложението да се използва Rust, той посочи, че "Решението тук е просто: просто използвайте C ++ вместо Rust."
След това през март стартира първата поддръжкад, което позволи на драйверите на Rust да бъдат поставени в дървото на Linux-Next за по-нататъшно тестване преди евентуалното им включване в основното ядро.
Точно зад него имаше "заявка за коментар", преиздадена в пощенския списък на ядрото относно перспективата на Rust кода за ядрото на Linux.
Мигел ОхедаРазработчикът на ядрото на Linux стартира предложение за заявка за коментари (RFC) в пощенския списък на ядрото на Linux.
Публикацията в пощенския списък очертава вярванията на разработчиците, участващи в добавянето на Rust код към ядрото, предимства като подобрена сигурност на паметта и други.
„Някои от вас забелязаха през последните няколко седмици и месеци, че се прави сериозен опит за въвеждане на втори език в ядрото. Най-накрая сме там, с RFC, който добавя поддръжка за Rust към ядрото на Linux “, каза Мигел Оджея. „Знаем, че има огромни разходи и рискове, свързани с въвеждането на нов език в ядрото“, добави той.
Екипът на проекта Rust за Linux премина от бета компилатора на Rust към използването на стабилни версии, мигрира всеки път, когато бъде пусната нова версия.
„Бихме искали да благодарим на Rust, че работи с нас по тези опции, така че ядрото да може да ги използва“, каза Мигел.
При актуализиране на компилатора, екипът успя да премахне някои нестабилни функции от списъка: const_fn_transmute, const_panic, const_unreachable_unchecked, core_panic и try_reserve.
В допълнение към това се подчертава, че добавени са някои опции за модулиране повече за разпределяне, за да деактивирате някои ненужни функции: no_rc и no_sync.
Upstream, за да бъде добре поддържан случай на използване на ядрото, или по-точно, "миксът" от опции, от които ядрото се нуждае, ядрото Upstream също е добавило no_fp_fmt_parse.
От друга страна, Rust даде възможност за серия от допълнителни диагностики за компилатора Rust и Clippy. Една разлика от C е, че диагностиката на Rust е малко по-лесна за деактивиране в кода, което е по-строго в общия случай.
също са внедрени абстракции и актуализации на драйвери. Екипът добави абстракции за заключвания на потоци, обратни извиквания за управление на захранването, io памет (readX / writeX), irq чипове и мениджъри на поток от високо ниво, gpio чипове (включително irq чипове), периферни устройства, периферни устройства amba и драйвери.
Подкрепата на контролерът е подобрен с независима от шината инфраструктура, Отменяеми обекти, отменяеми мютекси, ефективни битови итератори, по-добра диагностика на паника и опростени обвивки на показалец. Освен това, той подобри и опрости Ref обекти (съвместими с refcount_t) и замени всички екземпляри на Rust.
И нов драйвер за gpio PL061 устройства е внедрен и изпратен като RFC пач.
Накрая трябва да се отбележи, че Поддръжката на ръжда все още се счита за експериментална. Въпреки това, поддръжката е достатъчно добра, за да започнат разработчиците на ядрото в Rust абстракции за подсистеми и контролери за запис и други модули. Настоящата серия току-що пристигна на Linux-next, така че първото стартиране ще се проведе тази седмица.
Fuente: https://lkml.org/lkml