Кристоф Хелвиг (Christoph Hellwig), мейнтейнер на подсистемите DMA, KVM, Slab Allocator и архитектурата PowerPC в ядрото на Linux, принципиално отказал да приеме Rust обвивки в ядрото за подсистемата DMA, се включи в обсъждането на правилата за поддържане на Rust в ядрото, публикувани от проекта Rust for Linux. Според Кристоф, подобни правила са безполезни, докато не бъдат съгласувани с общността и не бъдат включени в документацията на ядрото.
Кристоф също обърна внимание на това, че в правилата е посочена некоректна информация относно това, че мейнтейнерите могат самостоятелно да вземат решения за включване на код, свързан с Rust, в техните подсистеми. Според Кристоф, в личен разговор, Линус Торвалдс заявил, че е твърдо решил да приеме Rust код в ядрото, независимо от възраженията на мейнтейнерите. Така разработчиците и мейнтейнерите на ядрото сега ще трябва да се справят с Rust, независимо дали го искат или не.
Кристоф също повторно сравни разпространението на Rust обвивки с ракова тъкан, която ще се разпростре на всички подсистеми на ядрото и ще доведе до фрагментация. От едно цяло, ядрото се превръща в проект, написан на няколко езика, без ясно определение кога кой език трябва да бъде използван. Според Кристоф, работата с подобна смесена кодова база стана за него най-лошия кошмар, тъй като в подобни условия постоянно се извършва преписване на кода от един език на друг, а след това обратно.
В същото време Кристоф иска да му бъде обяснена целта на внедряване на Rust в ядрото. Ако целта е решаването на проблеми със сигурността, произтичащи от ниско ниво работа с паметта, то преди всичко е необходимо модернизиране на съществуващия код. С оглед на факта, че поддържащите реагират болезнено дори на тривиални неща, като проверки за целочислено презареждане, остава неясно как може да се преодолее пропастта между една част на ядрото, която не спазва дори простите правила за осигуряване на безопасност, и друга част, която следва стриктни правила. Ако пък целта е опростяване на разработката на драйвъри, то въвеждането на поддръжка на още един език само ще добави нова работа и ще увеличи натоварването на вече натоварените хора, отговорни за поддържането на инфраструктурата на ядрото в работен ред.
Що се отнася до поддръжниците на внедряването на Rust в ядрото, те изтъкват следните цели:
- Писането на нов код на езика Rust ще намали риска от грешки при работа с паметта и условия за състезания, а също така ще изключи някои логически грешки.
- На мейнтейнерите ще им бъде по-лесно да преглеждат промените и да правят рефакторинг на модулите, като се вземат предвид гаранциите, предоставяни от езика Rust.
- Наличието на абстракции, използващи напредналите възможности на езика Rust, ще опрости създаването на нови драйвъри и модули.
- Подкрепата на съвременен език ще привлече нови участници в разработката на ядрото.
- Използването на инструментите на Rust ще опрости изпълнението на изискванията за документация на кода. Например, в проекта Rust for Linux е въведено изискване за задължителна документация на публичните API, изискванията за сигурност, блоковете unsafe и инвариантите на типовете.
Източник: opennet.ru
