The OpenNET Project / Index page

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



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

Исходное сообщение
"Опубликован embedded-hal 1.0, инструментарий для создания др..."
Отправлено Аноним, 16-Янв-24 17:33 
> можно будет взять и на C++ переписать. Без потери гарантий безопасности

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

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

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

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

 

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



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

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