RUST - альтернатива C/C++ ориентированная на безопасность кода, поддерживается nRF9160 официально
Поставщики: Nordic Semiconductor
Группы товаров: Беспроводные решения
Nordic Semiconductor, видя современные тенденции рынка программирования и разработки устройств интернета вещей, представил поддержку языка Rust для семейства nRF91.
Стоит немного рассказать про появление Rust в общих чертах. Традиционно для разработки встраиваемого ПО использовались, и используются до сих пор, языки С и С++, которые были разработаны достаточно давно и учитывали актуальные на тот момент условия их применения - доступные аппаратные ресурсы (их было мало) и не учитывали вопросы безопасности, как отдельную группу вопросов. Однако, с течением времени ситуация менялась - количество доступных ресурсов росло по мере улучшения тех процессов, появления новых технологий и повышения производительности в целом. Одновременно с этим росло и количество устройств. Всё большее их число получало доступ к сети, а следовательно возможности удалённого взаимодействия с ними. В итоге значительно вырос вопрос обеспечения безопасности. Применение интерпретируемых языков программирования частично решают эти вопросы, однако требуют много ресурсов, что в свою очередь сказывается на производительности и потреблении.
Одной из основных идей является изменение модели работы с памятью для повышения безопасности работы кода при сохранении высокой производительности и малых накладных расходов. Что полностью соответствует современным тенденциям развития интернета вещей и носимой электроники. Дополнительно в язык были добавлены современные инструменты разработки, значительно упрощающие, ускоряющие разработку и повышающие качество кода. Ранее для этого необходимо было использовать сторонние решения.
Про поддержку Rust на продуктах Nordic Semiconductor стало известно 2 года назад. Тогда была реализована работа SoftDevice S132 (скомпилированного стека Bluetooth) и Nordic SDK (HAL в открытых исходных кодах), написанных на C, в привязке к Rust для самого распространённого семейства nRF52. Код доступен в git.
После выхода в серию SIP модулей nRF9160 на базе новых Cortex-M33 , был запущен проект по интеграции Rust c семейством nRF91. Британская компания 42 Technology, специализирующаяся на консалтинге и разработке электронных устройств, впервые представила разработку Rust на nRF9160 ещё в феврале этого года. На прошлой неделе это решение было представлено со стороны Nordic Semiconductor после проведения испытаний. Код для нового семейства интегрирован с доступным ранее nRF52-HAL (git).
Пара цитат:В недавних полевых испытаниях, проведенных в Великобритании, 42 Technology заявляет, что ее приложение Rust создало безопасные зашифрованные соединения с облачными сервисами Amazon через раннюю сеть LTE Cat-M, развернутую сетевым оператором O2. Также заявлено, что приложение поддерживает NB-IoT, который в настоящее время запускается в Великобритании Vodafone и другими операторами.
«Rust - это идеальный язык программирования для работы на очень маленьком и недорогом оборудовании, изначально он был специально разработан с упором на безопасность памяти. Он предоставляет разработчикам современные мощные инструменты, позволяющие им быть высокопроизводительными - без значительных накладных расходов во время выполнения. А благодаря строгой проверке типов и заимствованиям компилятор Rust способен выявлять потенциальные проблемы безопасности на ранних этапах процесса разработки ».
Стоит отметить основные преимущества Rust перед традиционными языками используемыми при разработке встраиваемых приложений.
- Повышенная безопасность работы с памятью относительно C/C++ при сохранении быстродействия ±10%,
- Rust содержит в своём составе полный комплект для современной разработки:
- компилятор,
- менеджер пакетов (он же сборщик проектов, он же отвечает за запуск тестов),
- генератор документации
- отладчик
gdb
- Компилятор строг к тексту программы и имеет встроенный анализатор, в его выводе можно увидеть:
- какой код не используется, какие переменные можно изменить на константный тип,
- предупреждения, связанные со стилем программирования.
- часто для ошибок компиляции приведены варианты ее устранения,
- ошибки при инстанциировании обобщенного кода (шаблонов) лаконичны и понятны
- Все строки имеют кодировку Unicode (UTF-8), отсутствуют проблемы с кодировками.
- Есть поддержка итераторов и лямбда функций). Благодаря этому можно писать однострочные конструкции, которые выполняют множество операций с сложной логикой (то, чем славится
Python
).
Статей сравнивающих Rust с C/C++ в сети достаточно много, в том числе и в российском сегменте. Поэтому проверить результаты и/или изучить вопрос более детально не будет проблемой. Например, при подготовке этой статьи частично использовались материалы с habr.
Особо интересно становится применение Rust на архитектуры ARMv8-M, которая содержит ARM TrustZone и ARM CryptoCell. Так как в этом случае обеспечивает безопасность на всех уровнях, как аппаратных, так и программных.
Это краб Феррис, маскот Rust. Он передаёт Вам привет.