Ядро Linux прощается с Binder на C: победил Rust
Драйвер Binder — механизм межпроцессного взаимодействия (IPC), лежащий в основе Android, — долгие годы существовал в основной ветке ядра Linux в виде кода на языке C. В грядущем цикле разработки Linux 7.4 эту историческую реализацию планируют упразднить окончательно.
На протяжении последних лет Binder переписывали на Rust — это один из первых «настоящих» драйверов на этом языке в ядре. Rust-версия была принята в основную ветку в Linux 6.18, а теперь, когда она достаточно созрела и доказала свою состоятельность, наступает черёд отправить в отставку старый C-код объёмом около 11 тысяч строк.
«Больно поддерживать»
Патч на удаление подготовил инженер Google Карлос Льямас, и в его сопроводительном письме звучит почти торжественная интонация. «Этот день наконец настал», — пишет он. По словам Льямаса, за более чем 15 лет C-драйвер оброс такой сложностью, что сопровождать его и добавлять новые функции стало мучительно больно: почти каждое изменение грозило новыми уязвимостями. Rust-реализация, по его оценке, снимает большинство этих проблем.
Отдельную благодарность инженер адресовал Элис Рихль, которая пару лет трудилась над Binder на Rust. Ей удалось не только достичь полного паритета по функциональности, но и показать, что новый драйвер способен не уступать прежнему по производительности, а зачастую и превосходить его. Rust-версия уже некоторое время исправно работает на реальных устройствах Android, так что называть её «экспериментом» больше нельзя.
«Пора двигаться дальше, вырвать C-код с корнем и сосредоточить все новые возможности и оптимизации на Rust-драйвере. Да здравствует новый Rust-король Binder!» — завершает своё послание Льямас.
Уже в очереди
Патч на удаление подхватил Грег Кроа-Хартман, отправив его в ветку char-misc-next. Это означает, что изменение будет представлено в окно слияния Linux 7.4. Таким образом, история двойного сосуществования C- и Rust-версий Binder подходит к концу, а сам случай становится наглядным аргументом сторонников постепенного проникновения Rust в ядро: язык не только прижился, но и вытеснил проверенный временем C там, где тот стал обузой.
Источник: Phoronix
Комментарии
Войдите, чтобы комментировать.