На проходящей в эти дни конференции Open-Source Summit 2022 в секции ответов на вопросы Линус Торвальдс упомянул о возможности скорой интеграции в ядро Linux компонентов для разработки драйверов устройств на языке Rust. Не исключается, что патчи с поддержкой Rust будут приняты в ближайшем окне приёма изменений, формирующем состав ядра 5.20, намеченного на конец сентября.

Запрос на включение изменений в ядро ещё не был отправлен Торвальдсу, но набор патчей прошёл дополнительное рецензирование, избавлен от основных замечаний, уже достаточно давно тестируется в ветке linux-next и доведён до состояния, пригодного для создания слоёв абстракции над подсистемами ядра, написания драйверов и модулей. Поддержка Rust преподносится как опция, не активная по умолчанию и не приводящая к включению Rust в число обязательных сборочных зависимостей к ядру.

Предложенные изменения дают возможность использовать Rust в качестве второго языка для разработки драйверов и модулей ядра. Использование Rust для разработки драйверов позволит с минимальными усилиями создавать безопасные и более качественные драйверы, избавленные от таких проблем как обращение к области памяти после её освобождения, разыменование нулевых указателей и выход за границы буфера.

Безопасная работа с памятью обеспечивается в Rust во время компиляции через проверку ссылок, отслеживание владения объектами и учёт времени жизни объектов (области видимости), а также через оценку корректности доступа к памяти во время выполнения кода. Rust также предоставляет средства для защиты от целочисленных переполнений, требует обязательной инициализации значений переменных перед использованием, лучше обрабатывает ошибки в стандартной библиотеке, применяет концепцию неизменяемости (immutable) ссылок и переменных по умолчанию, предлагает сильную статическую типизацию для минимизации логических ошибок.

  • l-xoid
    link
    fedilink
    arrow-up
    0
    ·
    4 years ago

    Инопланетный синтаксис не пугает? Некоторые от него прям в обморок падают)

    • cryptOP
      link
      fedilink
      arrow-up
      0
      ·
      4 years ago

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

      • l-xoid
        link
        fedilink
        arrow-up
        0
        ·
        4 years ago

        Да мне всё нравится, я-то не программист)

        • cryptOP
          link
          fedilink
          arrow-up
          0
          ·
          4 years ago

          я тоже. меня куда больше напрягает, то что пишут программисты :)

          в коде сайте, например, типа такого:

          List<PreparedUserEvent> list = (List<PreparedUserEvent>) = blablaClass() { blabla function()... } { sdf }