Кристоф Хелвиг (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
