ការបោះពុម្ពលើកទី XNUMX នៃបំណះសម្រាប់ខឺណែលលីនុច ជាមួយនឹងការគាំទ្រសម្រាប់ភាសា Rust

Мигель Охеда (Miguel Ojeda), автор проекта Rust-for-Linux, предложил для рассмотрения разработчиками ядра Linux обновлённый вариант компонентов для разработки драйверов устройств на языке Rust. Поддержка Rust рассматривается как экспериментальная, но уже согласована для включения в ветку linux-next. В новом варианте устранены замечания, высказанные в процессе обсуждения первой версии патчей. Линус Торвальдс уже подключился к обсуждению и предложил изменить логику обработки некоторых битовых операций.

សូមចាំថាការផ្លាស់ប្តូរដែលបានស្នើឡើងធ្វើឱ្យវាអាចប្រើ Rust ជាភាសាទីពីរសម្រាប់បង្កើតកម្មវិធីបញ្ជា និងម៉ូឌុលខឺណែល។ ការគាំទ្រច្រែះត្រូវបានបង្ហាញជាជម្រើសដែលមិនត្រូវបានបើកតាមលំនាំដើម ហើយមិនមានលទ្ធផលដែល Rust ត្រូវបានដាក់បញ្ចូលជាការពឹងផ្អែកលើការស្ថាបនាដែលត្រូវការសម្រាប់ខឺណែលនោះទេ។ ការប្រើប្រាស់ Rust សម្រាប់ការអភិវឌ្ឍន៍កម្មវិធីបញ្ជានឹងអនុញ្ញាតឱ្យអ្នកបង្កើតកម្មវិធីបញ្ជាដែលមានសុវត្ថិភាព និងប្រសើរជាងមុន ជាមួយនឹងការខិតខំប្រឹងប្រែងតិចតួចបំផុត ដោយមិនមានបញ្ហាដូចជាការចូលប្រើអង្គចងចាំបន្ទាប់ពីការដោះលែង ការបដិសេធទ្រនិចគ្មានន័យ និងការដំណើរការលើសចំណុះ។

សុវត្ថិភាពនៃអង្គចងចាំត្រូវបានផ្តល់ជូននៅក្នុង Rust នៅពេលចងក្រងតាមរយៈការត្រួតពិនិត្យឯកសារយោង ការរក្សាដាននៃភាពជាម្ចាស់វត្ថុ និងអាយុកាលរបស់វត្ថុ (វិសាលភាព) ក៏ដូចជាតាមរយៈការវាយតម្លៃភាពត្រឹមត្រូវនៃការចូលប្រើអង្គចងចាំអំឡុងពេលដំណើរការកូដ។ ច្រែះក៏ផ្តល់ការការពារប្រឆាំងនឹងចំនួនគត់លើសចំណុះ ទាមទារការចាប់ផ្តើមចាំបាច់នៃតម្លៃអថេរមុនពេលប្រើ ដោះស្រាយកំហុសបានប្រសើរជាងនៅក្នុងបណ្ណាល័យស្តង់ដារ អនុវត្តគោលគំនិតនៃសេចក្តីយោងដែលមិនអាចផ្លាស់ប្តូរបាន និងអថេរតាមលំនាំដើម ផ្តល់នូវការវាយអក្សរឋិតិវន្តខ្លាំង ដើម្បីកាត់បន្ថយកំហុសឡូជីខល។

Наиболее заметные изменения в новой версии патчей:

  • Код для распределения памяти избавлен от возможных генераций состояния «panic» при возникновении ошибок, таких как нехватка памяти. В состав включён вариант Rust-библиотеки alloc, в которой переделан код для обработки сбоев, но конечной целью является перенос в основную редакцию alloc всех возможностей, необходимых для ядра (изменения уже подготовлены и переданы в состав стандартной библиотеки Rust).
  • Вместо ночных сборок для компиляции ядра с поддержкой Rust теперь можно использовать бета выпуски и стабильные релизы компилятора rustc. В настоящий момент в качестве эталонного компилятора используется rustc 1.54-beta1, но после выхода релиза 1.54 в конце месяца, в качестве эталонного будет поддерживаться именно он.
  • Добавлена поддержка написания тестов с использованием штатного для Rust атрибута «#[test]» и возможность применения doctests для документирования тестов.
  • Добавлена поддержка архитектур ARM32 и RISCV в дополнение к ранее поддерживаемым x86_64 и ARM64.
  • Улучшены реализации GCC Rust (GCC-фронтэнда для Rust) и rustc_codegen_gcc (бэкенд rustc для GCC), который теперь проходит все базовые тесты.
  • Преложен новый уровень абстракции для использования в программах на языке Rust механизмов ядра, написанных на языке Си, таких как красно-чёрное дерево, объекты с подсчётом ссылок, создание файловых дескрипторов, задачи, файлы и векторы ввода/вывода.
  • В компонентах для разработки драйверов улучшена поддержка модуля «file_operations», макроса «module!», регистрации макросов и рудиментарных драйверов (probe и remove).
  • В Binder реализована поддержка передачи файловых дескрипторов и LSM-хуков.
  • Предложен более функциональный пример драйвера на Rust — bcm2835-rng для аппаратного генератора случайных чисел плат Raspberry Pi.

Дополнительно упоминаются проекты некоторых компаний, связанные с использованием Rust в ядре:

  • Компания Microsoft выразила интерес к участию в работе по интеграции поддержки Rust в ядро Linux и готова в ближайшие месяцы предоставить реализации драйверов для Hyper-V на Rust.
  • Компания ARM работает над улучшением поддержи Rust для систем на базе процессоров ARM. Проекту Rust уже предложены изменения, переводящие 64-разрядные системы ARM в число платформ первого уровня поддержки (Tier-1).
  • Компания Google напрямую обеспечивает поддержку проекта Rust for Linux, развивает новую реализацию механизма межпроцессного взаимодействия Binder на Rust и рассматривает возможность переработки на Rust различных драйверов. Через ISRG (Internet Security Research Group) компания Google обеспечила финансирование работы по интеграции в ядро Linux поддержки Rust.
  • Компания IBM реализована поддержку Rust в ядре для систем PowerPC.
  • Лаборатория LSE (Systems Research Laboratory) разработала SPI-драйвер на Rust.

ប្រភព: opennet.ru

បន្ថែមមតិយោបល់