26 февраля 2025

🦀 🐧 «Это выигрыш для всех»: почему ключевой разработчик Linux больше не хочет писать на C

Пишу об IT и на Python. kungurov.net
В продолжающейся дискуссии о внедрении языка Rust в ядро Linux Грег Кроа-Хартман, один из ключевых разработчиков и сопровождающих ядра, высказал свою позицию, которая однозначно поддерживает этот шаг. И его мнение особенно ценно, учитывая, что он видел практически каждый баг-фикс и проблему безопасности в ядре за последние 15+ лет.
🦀 🐧 «Это выигрыш для всех»: почему ключевой разработчик Linux больше не хочет писать на C
Статья основана на письме «rust-for-linux».

Почему Rust нужен ядру?

По словам Грега, большинство багов в ядре (по количеству, а не по серьезности) связаны с «глупыми незначительными крайними случаями в C», которые полностью отсутствуют в Rust. Речь идет о таких вещах, как переполнение буфера (хотя Rust, конечно, не может предотвратить все подобные случаи), пропуск проверки кодов возврата и ошибки типа use-after-free. Именно поэтому я хочу видеть Rust в ядре – эти типы проблем просто исчезнут, позволяя разработчикам и мейнтейнерам больше времени уделять НАСТОЯЩИМ багам (то есть логическим ошибкам, состояниям гонки и т. д.).

🦀 🐧 «Это выигрыш для всех»: почему ключевой разработчик Linux больше не хочет писать на C

C++ не решение

В ответ на предложения использовать C++ вместо Rust, Грег отмечает, что C++ не даст нам аналогичных преимуществ «ни в каком обозримом будущем», а проблемы с комитетом по стандартизации C++ указывают на то, что «всем лучше отказаться от этого языка как можно скорее, если они хотят иметь кодовую базу, которую можно поддерживать в течение длительного времени».

Преимущества для API ядра

Rust также дает возможность определять внутриядерные API таким образом, что их практически невозможно использовать неправильно:

«У нас слишком много сложных/хитрых API, требующих слишком много проверок от сопровождающих только для того, чтобы «убедиться, что вы все сделали правильно... »

Не серебряная пуля, но большой шаг вперед

Грег признает, что Rust – «не серебряная пуля», которая решит все проблемы, но он определенно поможет во многих случаях. Особенно для нового кода и драйверов, написание их на Rust, где определенные типы ошибок просто не могут возникнуть, – это выигрыш для всех.

Ответ на опасения сообщества

Отвечая на опасения по поводу смешанной кодовой базы и нагрузки на и без того перегруженных сопровождающих, Грег напоминает:

«Да, смешанные языковые кодовые базы сложны и трудны в сопровождении, но, черт возьми, мы же разработчики ядра! Мы поддерживали и укрепляли Linux дольше, чем кто-либо когда-либо считал возможным. Мы превратили нашу модель разработки в хорошо отлаженное инженерное чудо, создав то, чего никому другому никогда не удавалось достичь.»

И заключает свое письмо призывом:

«Мы должны продолжать двигаться вперед, принимая новые хорошие идеи и людей, предлагающих присоединиться к нам в реальной работе, чтобы помочь обеспечить наш общий успех.»
***

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

➕➕ Библиотека C/C++ разработчика
Больше полезных материалов вы найдете на нашем телеграм-канале «Библиотека C/C++ разработчика»

Как вы считаете, действительно ли Rust сможет решить большинство проблем безопасности в ядре Linux, или Грег К-Х слишком оптимистичен? Поделитесь своим опытом работы с обоими языками!

ВАКАНСИИ

Добавить вакансию
Hotel Search Team Lead (Golang)
по итогам собеседования
Golang-разработчик
Пермь, по итогам собеседования

ЛУЧШИЕ СТАТЬИ ПО ТЕМЕ