Линус Торвальдс остался недоволен рядом моментов в использовании Rust для Linux

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

В прошлом году разработчики ядра Linux предложили использовать Rust для нового встроенного кода. В марте 2021 года эта идея была частично реализована — в состав ветки linux-next, на которой будет базироваться Linux 5.13, включили начальный набор компонентов для разработки драйверов устройств на Rust.

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

Главной проблемой, по его мнению, является потенциальная возможность “паники ядра” в некоторых ситуациях. Это может быть нехватка памяти, когда операции динамического распределения памяти могут завершаться ошибкой. Торвальдс заявил, что такой подход в ядре принципиально недопустим. Он даже пошел дальше, сообщив, что если разработчики не осознают проблему, то он станет отклонять любой код, который попытается использовать такой подход. Разработчик, который занимается патчами, считает, что проблема существует, но она решаема.

Вторая проблема, по словам Торвальдса — использование вычислений с плавающей запятой или 128-битными типами, что не является допустимым для таких окружений, как ядро Linux. Это даже более критично, чем предыдущий момент, поскольку базовая библиотека Rust представляет собой один большой blob — в ней нельзя запросить лишь избранные возможности, оставив остальные без внимания. Использовать приходится все подряд, так что предотвратить использование той либо иной проблемной функциональности не получится. Решить можно и эту проблему, но лишь путем внесения изменения в компиляторе rust и сопутствующие библиотеки, притом, что у команды нет четкой стратегии по реализации модульности библиотек языка.

Разработчики предоставили пример драйвера, но Линусу он не понравился. Торвальдс заявил, что этот пример бесполезен, добавив совет создать новый драйвер, который решает реальную задачу, а не демонстрирует теоретические возможности.

Как бы там ни было, но Rust-у в Linux явно быть. Так, корпорация Google уже заявила о намерении принять участие в инициативе по продвижению поддержки Rust в ядро Linux. Компания привела примеры целесообразности внедрения Rust для борьбы с проблемами, которые возникают из-за ошибок при работе с памятью. Представители компании также считают, что Rust вполне готов присоединиться к C, став еще одним языком разработки компонентов ядра Linux.

Компания подготовила начальный прототип написанного на Rust драйвера для механизма межпроцессного взаимодействия Binder. Он, по мнению авторов этого проекта, даст возможность провести детальное сравнение производительности и безопасности реализаций Binder на C и Rust. Эта работа еще не завершена, но уже подготовлены прослойки для использования базовых абстракций функциональности ядра, которые нужны для работы Binder.

Ну и еще один шаг со стороны Google — признание Rust в качестве списка языка разработки Android. Его добавили в список языков разработки Android для усиления защищенности последнего, плюс для продвижения приемов безопасного программирования и повышения выявления проблем при работе с памятью в Android. Около 70% из всех опасных уязвимостей, которые выявлены в Android, вызваны ошибками при работе с памятью. Использование Rust дает возможность снизить риск появления уязвимостей, которые вызваны ошибками при работе с памятью, включая обращение к области памяти после ее освобождения и выход за границы буфера.

Источник: https://habr.com/ru/company/selectel/blog/552142/


Интересные статьи

Интересные статьи

Устраивать конкурсы в инстаграме сейчас модно. И удобно. Инстаграм предоставляет достаточно обширный API, который позволяет делать практически всё, что может сделать обычный пользователь ручками.
Периодически мне в разных вариантах задают вопрос, который «в среднем» звучит так: «что лучше: заказать интернет-магазин на бесплатной CMS или купить готовое решение на 1С-Битрикс и сделать магазин на...
История проекта Linux и ее лидера Линуса Торвальдса часто приводят в пример принципа меритократии в разработке программного обеспечения. Тем не менее было бы верхом наивности утверждать, что успе...
Буквально на днях релизнули свежую stable версию ZFSonLinux, проекта, который теперь является центральным в мире разработки OpenZFS. Прощай, OpenSolaris, здравствуй свирепый GPL-CDDL несовместимы...
Всем привет! В данном руководстве хочу рассказать как подружить CUDA C/С++ и Rust. И в качестве примера напишем небольшую программу на Rust для вычисления скалярного произведения векторов, в...