Выбирай : Покупай : Используй
0

Rust – это яд, а не лекарство. Разработчики Linux: отказ от С и переход на другой язык – путь в бездну

Разработчики ядра Linux продолжают сопротивляться его переводу на язык Rust. Среди них нашлись те, кто сравнил внедрение в ядро кода на Rust с раковой опухолью. Впрочем, процесс отказа от С как от основного языка в Linux и без того сильно замедлилось – ключевой разработчик Rust for Linux оставил проект в сентябре 2024 г.

Польза или вред

Разработчики, пытающиеся добавить код Rust в ядро ??Linux, продолжают сталкиваться с противодействием со стороны специалистов по поддержке Linux, которые считают, что использование нескольких языков в коде ядра, в частности, Rust, является нежелательным и рискованным усложнением. Как пишет The Register, новые аргументы против частичного или полного отказа от С в ядре в пользу Rust привел специалист по поддержке ядра Кристоф Хеллвиг (Christoph Hellwig).

«Не заставляйте меня иметь дело с вашим блестящим языком дня, - заявил он. – Поддержка многоязыковых проектов – это боль, с которой мне неинтересно иметь дело. Если вы хотите использовать что-то, что не на C, будь то ассемблер или Rust, вы пишете на C интерфейсы и разбираетесь с несоответствиями самостоятельно».

Также Хеллвиг написал: «Если вы хотите сделать поддержку Linux невозможной из-за кросс-языковой кодовой базы, делайте это в своих драйверах и не распространяйте эту раковую опухоль на основные подсистемы». Как пишет The Register, под «раковой опухолью» Хеллвиг, вероятно, имел в виду не сам язык Rust, а именно кросс-языковую кодовую базу.

Вместо того, чтобы сообща делать ядро Linux лучше, разработчики тратят время на баталии комментариях

Поддержка кода Rust в ядре Linux появилась 3 октября 2022 г., вскоре после того, как технический директор Microsoft Azure Марк Руссинович (Mark Russinovich) заявил, что новые патчи для ядра следует писать на Rust, а не на C или C++. «В целях безопасности и надежности отрасль должна объявить эти языки устаревшими», – добавил он.

К слову, в 2001 г. Linux с раковой опухолью сравнил сооснователь и бывший гендиректор Microsoft Стив Балмер (Steve Balmer). «Linux – это раковая опухоль, которая в смысле интеллектуальной собственности прикрепляется ко всему, к чему прикасается», заявил Балмер. В чем-то он был прав – спустя годы в Windows появилась встроенная подсистема для запуска Linux – Windows Subsystem for Linux).

Мини-драйвер как триггер для хейтеров

Все приведенные комментарии Хеллвига относятся к небольшому патчу для ядра Linux, который позволяет написанным на Rust драйвера использовать функцию C API DMA dma_alloc_coherent() для выделения и отображения больших областей памяти с целью прямого доступа к памяти со стороны оборудования.

Увидев этот патч, Хеллвиг тут же потребовал, чтобы разработчики «не добавляли код Rust в kernel/dma» (No Rust code in kernel/dma, please). По данным The Register, Хеллвиг ошибся – патч добавил код в раздел rust/kernel исходного дерева Linux, а не в kernel/dma.

Мигель Охеда (Miguel Ojeda) из проекта Rust for Linux попросил Хеллвига предложить альтернативу. Хеллвиг ответил ему: «Сохраняйте оболочки в своем коде, вместо того чтобы усложнять жизнь другим», и продолжил утверждать, что «интерфейсы к API DMA должны оставаться в читаемом коде C, а не в странных привязках, чтобы он оставался пригодным для сопровождения».

К беседе попытался подключиться программист из Red Hat Данило Круммриха (Danilo Krummrich), участвующий в проекте Rust for Linux, но Хеллвиг ясно дал ему понять, что он просто не хочет иметь дело с кодом Rust.

Круммрих попытался объяснить адепту языка С, что усилия проекта Rust for Linux направлены на создание кода Rust, который абстрагирует API C для всех драйверов Rust и поддерживается разработчиками Rust. Однако все его доводы Хеллвига не впечатлили, и он продолжил стоять на своем.

Противоположное мнение

В поддержку кода на Rust в составе ядра Linux выступают очень многие разработчики, и в их числе – Кис Кук (Kees Cook) из Google. Они напирают на то, что Rust – гораздо более безопасный язык в сравнении с С, и это подтверждают многие ИБ-компании.

По мнению Кука, из-за использования С в ядре Linux скопилось слишком много уязвимостей. Желающие переписать хотя бы часть ядра Linux на Rust, как и Кис Кук, тоже стремятся сделать его более безопасным. В этом же направлении работает и проект Rust for Linux, существующий с 2020 г.

Однако в настоящее время само существование проекта находится под угрозой. CNews писал, что в сентябре 2024 г. от него открестился софтверный инженер Microsoft Ведсон Алмейда Фильо (Wedson Almeida Filho), стоявший у истоков Rust for Linux. Он прямо заявил, что устал от «бесполезной нетехнической ерунды» и дискуссий не по теме, преобладающих в сообществе.

Кто-то не следит за словами

Хеллвиг продолжил высказывать сомнения по поводу необходимости перевода ядра Linux на Rust. «Каждый дополнительный бит, который вкрадывается в другой язык, резко снижает поддерживаемость ядра как интегрированного проекта. Единственная причина, по которой Linux удалось выжить так долго, заключается в отсутствии внутренних границ, и добавление другого языка полностью нарушает это. Вам может не понравиться мой ответ, но я сделаю все возможное, чтобы это прекратить. Это не потому, что я ненавижу Rust. Хотя это и не мой любимый язык, это определенно один из лучших новых языков, и я призываю людей использовать его для новых проектов, где он подходит. Я не хочу, чтобы он был где-то рядом с огромной базой кода C, которую мне нужно поддерживать».

В ответ на это Гектор Мартин (Hector Martin), руководитель проекта Ashai Linux, заявил, что замечания Хеллвига представляют собой нарушение Кодекса поведения. При этом он выразил сомнение, что против него будут приняты какие-либо дисциплинарные меры. Журналисты The Register спросили Мартина, намерен ли он подать жалобу на Хеллвига за нарушение Кодекса поведения, но не получили ответа.

Последнее слово за Торвальдсом

Мартин утверждает, что разработчикам Rust for Linux следует проигнорировать опасения Хеллвига и представить свой патч на утверждение создателю Linux Линусу Торвальдсу (Linus Torvalds). «Если Линус примет pull request, то то, что скажет Кристоф, не имеет значения. Если Линус не примет его, то проект Rust for Linux по сути мертв, пока Линус или Кристоф не сделают свой шаг. Все остальное – хождение вокруг да около», – сказал Мартин.

The Register спросил Хеллвига, хочет ли он дать дополнительные комментарии, но тот отказался.

Комментарии