Rust dili desteğiyle Linux çekirdeğine yönelik yamaların dördüncü sürümü

Мигель Охеда (Miguel Ojeda), автор проекта Rust-for-Linux, предложил для рассмотрения разработчиками ядра Linux четвёртый вариант компонентов для разработки драйверов устройств на языке Rust. Поддержка Rust рассматривается как экспериментальная, но уже согласована для включения в ветку linux-next и достаточно развита для начала работы по созданию слоёв абстракции над подсистемами ядра, а также для написания драйверов и модулей. Разработка финансируется компанией Google и организацией ISRG (Internet Security Research Group), которая является учредителем проекта Let’s Encrypt и способствует продвижению HTTPS и развитию технологий для повышения защищённости интернета.

Önerilen değişikliklerin Rust'un sürücü ve çekirdek modüllerini geliştirmek için ikinci bir dil olarak kullanılmasını mümkün kıldığını hatırlayın. Rust desteği, varsayılan olarak etkin olmayan bir seçenek olarak sunulur ve Rust'un çekirdek için gerekli bir yapı bağımlılığı olarak dahil edilmesine yol açmaz. Sürücü geliştirme için Rust'u kullanmak, minimum çabayla, serbest bırakma sonrasında belleğe erişim, boş işaretçi referansları ve arabellek aşımları gibi sorunlardan arınmış, daha güvenli ve daha iyi sürücüler oluşturmanıza olanak tanır.

Rust'ta derleme zamanında referans kontrolü, nesne sahipliği ve nesne ömrünün (kapsam) izlenmesi ve ayrıca kod yürütme sırasında bellek erişiminin doğruluğunun değerlendirilmesi yoluyla güvenli bellek kullanımı sağlanır. Rust ayrıca tamsayı taşmalarına karşı koruma sağlar, kullanımdan önce değişken değerlerinin zorunlu olarak başlatılmasını gerektirir, standart kitaplıkta hataları daha iyi işler, değişmez referanslar ve değişkenler kavramını varsayılan olarak uygular, mantıksal hataları en aza indirmek için güçlü statik yazım sunar.

В новом варианте патчей продолжено устранение замечаний, высказанных в процессе обсуждения первой, второй и третьей редакций патчей. В новой версии:

  • Осуществлён переход на использование в качестве эталонного компилятора стабильного выпуска Rust 1.58.0. Из необходимых для проекта изменений, который пока ещё не включены в основной состав инструментария Rust, отмечаются флаг «-Zsymbol-mangling-version=v0» (ожидается в Rust 1.59.0) и режим «maybe_uninit_extra» (ожидается в Rust 1.60.0).
  • Добавлены автоматические проверки наличия подходящего инструментария Rust и расширены возможности по тестированию поддержки Rust в системе.
  • Предложены новые абстракции для доступа из кода на языке Rust к таблицам идентификаторов устройств («IdArray» и «IdTable»).
  • Добавлены прослойки для обращения к функциям, связанным с таймером (clock framework).
  • Драйверы для платформ теперь определены через реализацию типажей.
  • Добавлен новый макрос для упрощения регистрации драйверов платформ, а также предложен новый шаблон типового драйвера.
  • Добавлены макросы для структур «dev_*».
  • Добавлены методы «{read,write}*_relaxed» для типа IoMem<T>.
  • Удалено свойство FileOpener для упрощения операций с файлами.
  • В число аргументов, передаваемых при регистрации драйвера, добавлен параметр «ThisModule».
  • Предложен типовой шаблон для создания модулей ядра на языке Rust.

Kaynak: opennet.ru

Yorum ekle