tgoop.com/BorisBurkov/1221
Last Update:
Битва при dma_alloc_coherent()
В Линуксе сейчас будет приниматься эпохальное решение: включать ли Rust в кодовую базу “ядра ядра" или нет.
“Ядро ядра” линукса написано на чистых C, без плюсов. Драйверы, объем кодовой базы которых на несколько порядков больше по объему, но не по сложности, чаще всего тоже пишутся на C с ассемблерными вставками.
В 2022 Марк Руссинович, глава Microsoft Azure, призвал всех писать драйверы на Rust, поскольку он дает гораздо лучшие гарантии корректности кода, чем устаревшие языки, такие как C++ (тут стоит похвалить Microsoft, который при Сатье Наделле стал во-первых главным контрибьютором драйверов в код Linux, а во-вторых, стал одним из главных адоптеров Rust среди бигтехов).
Однако, зоопарк из разных языков программирования в ядре не нравится многим ключевым разработчикам ядра.
Разработчик из проекта Rust for Linux Мигель Охеда (Miguel Ojeda), пытался внести изменения на Rust в кодовую базу подсистемы прямого доступа к памяти, DMA, части “ядра ядра”.
Кристоф Хелвиг (Christoph Hellwig), отвечающий в ядре за подсистемы прямого доступа к памяти (DMA), виртуализацию KVM, крупноблочное выделение памяти (Slab allocator) и поддержку архитектуры PowerPC, отказался принимать пулл-реквест на Расте, заявив, что не хочет превращать “ядро ядра" в бульон из разных языков программирования. Мол, не имею ничего против Rust, но Linux написан на C, и должен оставаться на C. Мол, так Rust превратится в раковую опухоль, которой прорастет все ядро.
Однако, без внесения кусков растового кода вроде того, что предложил Мигель Охеда, писать полноценные драйверы на Rust, как призывает Руссинович, тоже станет невозможно.
Программисты проекта Rust for Linux Данило Круммрих (Danilo Krummrich) и Гектор Мартин (Hector Martin), попытались поднять вопрос принятия PR’а на уровень Линуса в обход Кристофа Хелвига. Мартин, мейнтейнер архитектур ARM для процессоров от Apple, пригрозил начать кампанию в соцсетях. Линус ответил, что травля в соцсетях - это подход, который его крайне раздражает.
Ведсон Алмейда Фильо (Wedson Almeida Filho), один из основателей проекта Rust for Linux, говорит, что старые мейнтейнеры саботируют внедрение Rust в ядро, и развитие проекта парализовано. Гектор Мартин снял с себя полномочия мейнтейнера ARM для Apple в LInux и заявил, что продолжит поддержку ARM вне кодовой базы ядра.
Имеем клинч, где каждая из сторон конфликта по-своему права. От того, какое решение будет принято сейчас Линусом, будет зависеть, появится ли Rust в ядре, что будет иметь очень далекоидущие последствия, поскольку он постепенно заместит там С.
BY Boris Burkov
Share with your friend now:
tgoop.com/BorisBurkov/1221