Кристоф Хелвиг (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-блоков и инвариантов типов.