Ядро Linux прощается с Binder на C: победил Rust

· Linux и open source
В ядре Linux 7.4 намерены удалить старую реализацию Binder на языке C. Единственным вариантом межпроцессного взаимодействия для Android останется версия на Rust.

cover.svg

Драйвер 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

Комментарии

Войдите, чтобы комментировать.

  • Пока нет комментариев.