Конец эпохи C-драйвера Binder
Google объявил о начале процесса удаления унаследованного драйвера Binder, написанного на языке C, из основного дерева ядра Linux. Эта архитектура служила механизмом межпроцессного взаимодействия (IPC) для Android на протяжении более 15 лет. Однако из-за накопившейся сложности и уязвимостей, с которыми приходилось бороться разработчикам, поддержка кода стала «болезненной» задачей.
На смену старой реализации приходит версия на Rust, которая уже была интегрирована в основную ветку ядра в версии 6.18. Теперь, когда новая реализация доказала свою надежность, Google планирует окончательно удалить 11 000 строк старого C-кода в рамках цикла разработки ядра Linux 7.4.
Почему Rust вытесняет C?
Инженер Google Карлос Лламас (Carlos Llamas), автор патча на удаление, отметил, что C-версия драйвера стала слишком сложной для поддержки. Добавление новых функций часто приводило к непредвиденным уязвимостям. Rust-реализация, разработанная Алис Райл (Alice Ryhl), решает эти проблемы за счет гарантий безопасности памяти, предоставляемых языком.
Ключевым аргументом в пользу перехода стала не только безопасность, но и производительность. Тесты показали, что Rust-версия не только соответствует, но и часто превосходит оригинальный C-драйвер по скорости работы, что опровергает стереотипы о том, что новые языки всегда медленнее.
Сравнение характеристик драйверов
| Характеристика | Legacy Binder (C) | New Binder (Rust) |
|---|---|---|
| Статус в ядре | Удаляется (Linux 7.4) | Основной (с Linux 6.18) |
| Объем кода | ~11 000 строк | Оптимизированный, компактный |
| Безопасность | Высокий риск уязвимостей | Гарантии безопасности памяти |
| Производительность | Базовая | На уровне или выше C |
Путь в мейнстрим
Патч на удаление старого кода уже принят Грэгом Кроа-Хартманом (Greg Kroah-Hartman) в ветку char-misc-next. Ожидается, что изменения будут включены в окно слияния ядра Linux 7.4. Это знаменует собой важный этап в эволюции экосистемы Android и ядра Linux, где Rust окончательно переходит из категории экспериментальных технологий в статус промышленного стандарта для системного программирования.
Источник: Phoronix ↗
