Мнение Грега Кроа-Хартмана и Кейса Кука о продвижении Rust в ядро Linux
Дата публикации:Thu, 20 Feb 2025 09:38:41 +0300
Грег Кроа-Хартман (Greg Kroah-Hartman), отвечающий за поддержку стабильной ветки ядра Linux, высказался в поддержку разработки новых компонентов ядра на языке Rust. Как человек, через которого последние 15 лет проходит вся информация об ошибках и уязвимостях в ядре Linux, он утверждает, что большинство ошибок в ядре вызваны специфичными для языка Си мелкими краевыми случаями, которые полностью исключены в коде на языке Rust.
При использовании Rust можно будет оставить в прошлом такие проблемы, как обращение к памяти после её освобождения, выход на границу буфера (частично), некорректное освобождение ресурсов при обработке ошибок и забытые проверки возвращаемых кодов ошибок, что позволит мэйнтейнерам сосредоточиться на реальных ошибках, таких как состояния гонки и проблемы с логикой, а не рассеивать при рецензировании внимание по мелочам.
Уже имеющийся старый код на языке Си никуда не денется, а вот для нового кода и новых драйверов внедрение Rust позволит существенно поднять качество. Внедрение Rust также даст возможность структурировать внутренние программные интерфейсы ядра таким образом, что будут практически исключены ошибки использования внутреннего API - в ядре накопилось слишком много сложных и запутанных API, создающих большую нагрузку на мэйнтйнеров в их работе по проверке, что данные API используются правильно. В процессе развития Rust-обвязок у мэйнтейнеров появляется возможность переосмыслить и привести в порядок API, что принесёт пользу для всех, включая использующих язык Си.
Грег не считает Rust "серебряной пулей", которая позволит решить все проблемы в ядре, но данный язык точно поможет в огромном числе ситуаций. Поддержка Rust также удовлетворит потребность разработчиков драйверов, которые надеются получить инструмент, позволяющий писать код для их оборудования, исключая многие типы ошибок. Что касается, смешивания нескольких языков, Грег не видит в этом большой проблемы, по его мнению в прошлом разработчики ядра справлялись и с более серьёзными задачами, и нет повода отказываться от продвижения в ядро новых хороших идей, которые помогут обеспечить успех проекта на следующие 20+ лет.
К обсуждению также присоединился Кейс Кук (Kees Cook), бывший главный системный администратор kernel.org и лидер Ubuntu Security Team. Кейс уточнил, что речь не про переписывание уже имеющегося кода в ядре, а в предоставлении возможности использования Rust для создания новых драйверов и подсистем. Применение Rust для нового кода позволит не только снизить число ошибок при работе с памятью, но и сократить время разработки. Скорость разработки возрастает благодаря снижению трудозатрат на отладку и наличию в языке строгих гарантий, позволяющих выявлять ошибки на ранней стадии написания кода, ещё до начала тестирования продукта.
Эффективность тактики использования Rust для повышения качества нового кода уже продемонстрирована Google в платформе Android. Показано, что основным источником проблем с безопасностью является новый код и повышению его качества следует уделять основное внимание. Для старого кода наблюдается экспоненциальная зависимость безопасности от времени (например, 5-летний код в среднем имеет в 3.4 раза меньшую плотность уязвимостей, чем новый код).
Новость позаимствована с opennet.ru
Ссылка на оригинал: https://www.opennet.ru/opennews/art.shtml?num=62756