The OpenNET Project / Index page

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



Индекс форумов
Составление сообщения

Исходное сообщение
"Шестая версия патчей для ядра Linux с поддержкой языка Rust "
Отправлено Аноним, 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...

 

Ваше сообщение
Имя*:
EMail:
Для отправки ответов на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



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

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