റസ്റ്റ് ഭാഷയ്ക്കുള്ള പിന്തുണയോടെ ലിനക്സ് കേർണലിനായുള്ള പാച്ചുകളുടെ രണ്ടാം പതിപ്പ്

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

ഡ്രൈവറുകളും കേർണൽ മൊഡ്യൂളുകളും വികസിപ്പിക്കുന്നതിന് രണ്ടാമത്തെ ഭാഷയായി റസ്റ്റ് ഉപയോഗിക്കുന്നത് സാധ്യമാക്കാൻ നിർദ്ദേശിച്ച മാറ്റങ്ങൾ സാധ്യമാക്കുന്നു എന്നത് ഓർക്കുക. സ്ഥിരസ്ഥിതിയായി പ്രവർത്തനക്ഷമമാക്കാത്ത ഒരു ഓപ്‌ഷനായാണ് റസ്റ്റ് സപ്പോർട്ട് അവതരിപ്പിക്കുന്നത്, കൂടാതെ കേർണലിന് ആവശ്യമായ ബിൽഡ് ഡിപൻഡൻസിയായി റസ്റ്റ് ഉൾപ്പെടുത്തിയിട്ടില്ല. ഡ്രൈവർ ഡെവലപ്‌മെന്റിനായി റസ്റ്റ് ഉപയോഗിക്കുന്നത്, ഫ്രീയിംഗിനു ശേഷമുള്ള മെമ്മറി ആക്‌സസ്, നൾ പോയിന്റർ ഡീറഫറൻസുകൾ, ബഫർ ഓവർറൺസ് തുടങ്ങിയ പ്രശ്‌നങ്ങളിൽ നിന്ന് മുക്തമായ, കുറഞ്ഞ പ്രയത്നത്തിൽ സുരക്ഷിതവും മികച്ചതുമായ ഡ്രൈവറുകൾ സൃഷ്ടിക്കാൻ നിങ്ങളെ അനുവദിക്കും.

റഫറൻസ് പരിശോധന, ഒബ്‌ജക്റ്റ് ഉടമസ്ഥത, ഒബ്‌ജക്റ്റ് ലൈഫ് ടൈം (സ്കോപ്പ്) എന്നിവയുടെ ട്രാക്ക് സൂക്ഷിക്കുന്നതിലൂടെയും കോഡ് എക്‌സിക്യൂഷൻ സമയത്ത് മെമ്മറി ആക്‌സസിന്റെ കൃത്യത വിലയിരുത്തുന്നതിലൂടെയും കംപൈൽ സമയത്ത് റസ്റ്റിൽ മെമ്മറി-സേഫ് ഹാൻഡ്‌ലിംഗ് നൽകുന്നു. റസ്റ്റ് പൂർണ്ണസംഖ്യ ഓവർഫ്ലോയ്‌ക്കെതിരെ സംരക്ഷണം നൽകുന്നു, ഉപയോഗിക്കുന്നതിന് മുമ്പ് വേരിയബിൾ മൂല്യങ്ങൾ നിർബന്ധമായും ആരംഭിക്കേണ്ടതുണ്ട്, സ്റ്റാൻഡേർഡ് ലൈബ്രറിയിൽ പിശകുകൾ നന്നായി കൈകാര്യം ചെയ്യുന്നു, സ്ഥിരസ്ഥിതിയായി മാറ്റമില്ലാത്ത റഫറൻസുകളുടെയും വേരിയബിളുകളുടെയും ആശയം പ്രയോഗിക്കുന്നു, ലോജിക്കൽ പിശകുകൾ കുറയ്ക്കുന്നതിന് ശക്തമായ സ്റ്റാറ്റിക് ടൈപ്പിംഗ് വാഗ്ദാനം ചെയ്യുന്നു.

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

  • Код для распределения памяти избавлен от возможных генераций состояния «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

ഒരു അഭിപ്രായം ചേർക്കുക