Rust не избежал критики Линуса Торвальдса

Несколько недель назад новости о некоторые реализации, которые были сделаны в ветка linux-next, которая включает начальный набор компонентов разрабатывать драйверы устройств на языке Rust.

Эта документация была опубликована отдельно об использовании Rust в ядре Linux и примере модуля ядра с драйвером символьного устройства на языке Rust. Код был добавлен Стивеном Ротвеллом, сопровождающим ветки.

После этого Линус Торвальдс провел обзор реализации. патч возможностей установки драйверов языка Rust в ядро ​​Linux и высказал некоторую критику.

Наибольшие жалобы были вызваны потенциал побега «Паника сбоя во время выполнения» в неправильных ситуациях, например, в ситуации нехватки памяти, когда операции выделения динамической памяти, включая операции ядра, могут завершиться ошибкой.

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

Другой проблемой были попытки использовать типы с плавающей запятой или 128-битные типы, которые не подходят для таких сред, как ядро ​​Linux.

Вы можете не понимать, когда это может произойти, поэтому, возможно,
меньшая проблема, чем я думаю, но принципиально
Я думаю, что если какое-либо отображение Rust может вызвать панику, это просто
_ принципиально_ неприемлемо.

Отображение сбоев в неосновном контроллере или коде, то есть для
определение, весь новый код Rust, НИКОГДА не может вызвать
паника справедливо. То же самое касается «о, в некоторых случаях я не пробовал использовать
128-битные целые числа или числа с плавающей запятой ».

Итак, если компилятор Rust вызывает скрытые назначения, которые не могут быть
обнаруживать и возвращать как ошибки, то я серьезно верю, что все это
подход должен быть полностью НАК'ед, а инфраструктура Rust,
либо на уровне компилятора, либо в оболочках ядра вам нужно больше
работу.

Это оказалось более серьезной проблемой., так как в этот момент Центральная библиотека Rust неделима и представляет собой большое пятно; нет возможности запросить только некоторые функции, что позволяет избежать использования той или иной проблемной функции.

Решение проблемы может потребовать изменений в компиляторе и библиотеке rust, хотя у команды пока нет стратегии реализации модульности для языковых библиотек.

Кроме того, Торвальдс указал, что предоставленный пример контроллера бесполезен. и посоветовал приложить в качестве примера драйвер, решающий одну из реальных проблем.

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

Google считает, что Rust готов присоединиться к C в качестве языка разработки Компоненты ядра Linux. В статье также приведены примеры использования языка Rust для разработки драйверов ядра в контексте его использования на платформе Android (Rust признан официально поддерживаемым языком для разработки Android).

Обратите внимание, что Google подготовил начальный прототип контроллера, написанного на Rust для механизма межпроцессного взаимодействия Binder, который позволит подробно сравнить производительность и безопасность реализаций Binder на C и Rust.

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

Наконец, если вы хотите узнать об этом больше, вы можете проверить подробности По следующей ссылке.


Содержание статьи соответствует нашим принципам редакционная этика. Чтобы сообщить об ошибке, нажмите здесь.

2 комментариев, оставьте свой

Оставьте свой комментарий

Ваш электронный адрес не будет опубликован.

*

*

  1. Ответственный за данные: AB Internet Networks 2008 SL
  2. Назначение данных: контроль спама, управление комментариями.
  3. Легитимация: ваше согласие
  4. Передача данных: данные не будут переданы третьим лицам, кроме как по закону.
  5. Хранение данных: база данных, размещенная в Occentus Networks (ЕС)
  6. Права: в любое время вы можете ограничить, восстановить и удалить свою информацию.

  1.   Мигель Родригес сказал

    Вся их критика верна, учитывая, что Rust - новый язык, который работает с парадигмой, отличной от парадигмы C, понятно беспокойство по поводу любых деталей в библиотеках или в самом компиляторе, где, хотя код действителен, он будет заставляют ядро ​​ломаться в зависимости от того, как оно реализовано и построено. Вот почему такие предложения, как возможность модульного разбиения библиотеки на вызов и сохранение активными только тех функций, которые необходимы программе (или, в данном случае, любому контроллеру), работают правильно. То, что вы просите, не является необоснованным, что они предлагают вам настоящий прототип контроллера, который хорошо справляется с текущей проблемой (или, по крайней мере, выполняет ту же работу, что и существующий в ядре, и работает без паники).

  2.   Сете сказал

    Время от времени я возвращаюсь к прочтению статей о Linux Addicts, но мне почти не нужно отчаиваться, когда я вижу, что, несмотря на очень хорошее содержание, конечный результат разрушается из-за ужасного написания.
    Неужели орфография и грамматика будут такими сложными?
    Стыд!
    Взбодриться!