The OpenNET Project / Index page

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



"Опубликован embedded-hal 1.0, инструментарий для создания драйверов на языке Rust"
Версия для распечатки Пред. тема | След. тема
Форум Разговоры, обсуждение новостей
Исходное сообщение [ Отслеживать ]
Есть идеи по улучшению форума и сайта ? Пишите.
. "Опубликован embedded-hal 1.0, инструментарий для создания др..." +/
Сообщение от Аноним (-), 16-Янв-24, 17:33 
> можно будет взять и на C++ переписать. Без потери гарантий безопасности

Это непонимание модели предоставления гарантий растом. Раст проводит _локальный_ анализ, в рамках которого он доверяет декларациям функций и типов, на которые код ссылается. Например, если функция заявляет, что она принимает &T в качестве аргумента, значит аргумент не меняется. Или она принимает &mut T в качестве аргумента, значит раст проверяет, чтобы не было других ссылок, прежде чем передать.

Таким образом, если ты напишешь на расте memcpy, который будет отказываться работать с пересекающимися кусками памяти (в расте иначе не выйдет на самом деле), то раст может проверить в месте вызова функции, что аргументы ссылаются на несвязанные куски памяти. Если же ты напишешь обёртку над этим растовым memcpy или перепишешь его на C++, то C++ уже не сможет этого проверить. И все эти гарантии пошли лесом.

Гарантии и условия, которые необходимо выполнить для этих гарантий, закодированы в декларациях функций и типов. Для этого требуется растовый синтаксис и семантика. Если ты меняешь синтаксис на C++, ты получаешь семантику C++, которая не позволяет говорить вещи, типа "возвращаемый функцией указатель ссылается на память второго аргумента, в неё переданного".

Бессмысленно переписывать, если ты не планируешь потом с кодом массированно работать и вносить изменения или использовать этот код как библиотеку. А если так, то все гарантии идут лесом. Это если не считать тех багов, которые ты привнесёшь переписывая.

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

Оглавление
Опубликован embedded-hal 1.0, инструментарий для создания драйверов на языке Rust, opennews, 14-Янв-24, 11:07  [смотреть все]
Форумы | Темы | Пред. тема | След. тема



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

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