The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



"Шестая версия патчей для ядра Linux с поддержкой языка Rust "
Версия для распечатки Пред. тема | След. тема
Форум Разговоры, обсуждение новостей
Исходное сообщение [ Отслеживать ]
Заметили полезную информацию ? Пожалуйста добавьте в FAQ на WIKI.
. "Шестая версия патчей для ядра Linux с поддержкой языка Rust " +2 +/
Сообщение от Аноним (265), 09-Май-22, 10:10 
А что ты понимаешь под средним уровнем?

Основная причина (как мне видится) по которой его принимают в качестве языка написания модулей ядра -- он обеспечивает безопасность уровня управляемых языков (даже больше, потому что ни один популярный ЯП не защищает от гонок по данным) в сочетании с программированием на голом железе, как в Си. Без потери гарантий в безопасном подмножестве.

Второстепенная причина -- при создании языка уделялось внимание рекомендациям современного защитного программирования: константность по-умолчанию, отсутствие null, исчерпывающий switch (exhaustive pattern matching), требуемая обработка (или проброс дальше) ошибок программистом, базовые типы с явным указанием размерности, требование явного преобразования базовых типов (без возможности UB), отсутствие неявных блоков в циклах/ветвлениях (напр. знаменитая ошибка Apple -- https://embeddedgurus.com/barr-code/2014/03/apples-gotofail-.../ ), вместо наивной подстановки строк - макросы разбирающие дерево токенов, пространства имен для контроля видимости (в которых все по-умолчанию приватно), требование к программисту явно обрабатывать возможную ошибку при сравнении чисел с плавающей запятой, необходимость явно указывать какому полю присваивается значение при определении структуры, обобщенные типы... с поведением по белому списку, единая семантика преобразования сложных типов, времена жизни в определении функции увеличивают читаемость (нет необходимости заглядывать в тело функции, чтобы понять какой параметр окажется в выходе), безопасные и удобные обертки типов (New Type idiom), и пр.

Также и стандартная библиотека усилена, например более продуманными мьютексами ( https://habr.com/ru/post/659547/ ) или тем что HashMap использует более защищенный алгоритм хеширования.

Неявного замедления скорости исполнения почти нет. Достаточно прочитать стандартную книгу по раст где все такие места описаны чтобы ты мог сам решить, стоит ли тебе пользоваться такими языковыми конструкциями или библиотечными объектами.
https://doc.rust-lang.ru/book/ch17-02-trait-objects.html#Типаж-объекты-выполняют-динамическую-диспетчеризацию-связывание
https://doc.rust-lang.ru/async-book/02_execution/02_future.html
https://doc.rust-lang.ru/book/ch03-02-data-types.html#Некорректный-доступ-к-элементу-массива

и библиотека
https://doc.rust-lang.ru/book/ch08-03-hash-maps.html#Функция-хэширования
https://doc.rust-lang.ru/book/ch08-02-strings.html#Байты-скалярные-значения-и-кластеры-графем-Боже-мой

При написании идиоматичного раст кода применяются соответствующие наработанные практики вроде использования итераторов по срезам вместо индексирования, применения assert'ов перед индексацией чтобы убедить LLVM в ограничении длины буфера, использования enum вместо dyn, а также соответствующих паттернов проектирования которые еще даже не до конца сформировались - https://raphlinus.github.io/rust/gui/2022/05/07/ui-architect...

Ответить | Правка | Наверх | Cообщить модератору

Оглавление
Шестая версия патчей для ядра Linux с поддержкой языка Rust , opennews, 08-Май-22, 11:03  [смотреть все]
Форумы | Темы | Пред. тема | След. тема



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру