The OpenNET Project / Index page

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



"Выпуск Rust 1.96. Оценка пригодности Rust для создания прошивок к микроконтроллерам"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Изначальное сообщение [ Отслеживать ]

"Выпуск Rust 1.96. Оценка пригодности Rust для создания прошивок к микроконтроллерам"  +/
Сообщение от opennews (??), 29-Май-26, 20:23 
Опубликован релиз языка программирования  Rust 1.96, основанного проектом Mozilla, но ныне развиваемого под покровительством независимой некоммерческой организации Rust Foundation. Язык сфокусирован на безопасной работе с памятью и предоставляет средства для достижения высокого параллелизма выполнения заданий, при этом обходясь без использования сборщика мусора и runtime (runtime сводится к базовой инициализации и сопровождению стандартной библиотеки)...

Подробнее: https://www.opennet.me/opennews/art.shtml?num=65574

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

Оглавление

Сообщения [Сортировка по ответам | RSS]

1. Сообщение от Аноним (1), 29-Май-26, 20:23   +/
>для микроконтроллеров STM32U585AI

https://www.st.com/en/microcontrollers-microprocessors/stm32...
Интересный эксперимент.

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

2. Сообщение от Аноним (2), 29-Май-26, 20:33   –3 +/
Лучше производность, быстрее код писать, меньше оперативной памяти нужно и чуть больше места занимает.

Выбор очевиден.

Ответить | Правка | Наверх | Cообщить модератору
Ответы: #4, #6, #15

3. Сообщение от НяшМяш (ok), 29-Май-26, 20:33   +2 +/
Под микроконтроллер в 160 мегагерц можно было хоть на бидоне писать, в чём смысл делать какие-то сравнения под эту лошадь. Сообщество на тот же 16-мегагерцовый nRF51 на embassy фигачит со свистом уже много лет, открыли они Америку.
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #5, #7

4. Сообщение от Аноним (4), 29-Май-26, 20:49   +4 +/
Выбираю SPARK.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #2

5. Сообщение от Аноним (5), 29-Май-26, 20:54   +1 +/
Во, точняк! Раст -- низкоуровневый питон!
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #3 Ответы: #14

6. Сообщение от Аноним (6), 29-Май-26, 21:00   –1 +/
Быстрее код писать, воюя с чекером боровов? Ах да, для микроконтроллеров же - сплошной @unsafe.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #2

7. Сообщение от Аноним (1), 29-Май-26, 21:05   +/
Ну они для себя же делали опыт, что и описано в посте, значит им нужнее.
Да и остальные языки никуда не деваются:
https://opennet.ru/64135-github
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #3

8. Сообщение от Аноним (6), 29-Май-26, 21:05   +3 +/
Что-то мне кажется, что если для микроконтроллеров писать на Algol68 с POSIX-расширениями (ga68), то тоже производительность будет не сильно отличаться.
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #20

9. Сообщение от Аноним (9), 29-Май-26, 21:06   +/
Интересно, во сколько раз при этом будет больше ошибок, чем в uutils?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #1

10. Сообщение от Аноним (15), 29-Май-26, 21:07   +/
В эмбедном байтодрочестве rust равных нет уже за счёт упаковки структур и нишевой оптимизации. А так-то без экспериментов было понятно что как минимум если писать на нём в C/плюсовом стиле, то и результаты будут примерно такими же. Вот было бы гораздо интереснее сравнить rust с C/плюсовым стилем и идиоматический rust с Option, Result, итераторами, монадическими конструкциями, лямбдами и трейтами, а желательно с ещё более высокоуровневыми штуками типа разбора протоколов через serde или хотя бы nom.

Пока мой опыт в портировании сишного кода, правда не для эмбеддовки, но как раз разбор строк и протоколов и прочее битодрочество показывает что получается в 3 раза меньше (исходного) кода и он намного понятнее, и работает это быстрее (и юнит тесты рядом с кодом очень удобная штука), но на размер машинного кода я не смотрел. А давний опыт в эмбеддовке (AVR) показал что на полноценном C++ со всякими `unique_ptr`, `<algorithm>` и повсеместными шаблонами (когда разные реализации таймеров и экранчиков прокидываются как шаблонные аргументы, реализация I2C мокается для тестов и т.д.) получает прошивки компактнее дубового сишного кода, после чего про C в нашеё команде вообще забыли.

Вот на rust такое будет ещё проще и там где в плюсах ещё был возможен какой-то оверхед, то гарантированно без него, но хочется чтобы это красиво показали. Потому что кто-то, как даже в новости написано, до сих пор пишет эмбеддовку на C!

Ответить | Правка | Наверх | Cообщить модератору
Ответы: #12, #18, #28

12. Сообщение от Аноним (12), 29-Май-26, 21:14   +2 +/
Ничего интересного в этом нет. Вопрос применения раста в плоскости практического применения вообще не лежит.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #10 Ответы: #16, #29

14. Сообщение от Аноним (14), 29-Май-26, 21:19   –2 +/
Низкоуровневый питон называется forth. Это низкоуровневый сишарп.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #5

15. Сообщение от Аноним (15), 29-Май-26, 21:24   +3 +/
> Быстрее код писать, воюя с чекером боровов?

Завязывайте позориться. Если у вас проблемы с БЧ при написании кода, значит вы не понимаете сколько у вас живут объекты и плодите UB, на сях с такой квалификацией вы будете вместо "войны с БЧ" который вас тыкает в проблему ещё до того как вы даже код собрали, сидеть неделями в отладчике.

> Ах да, для микроконтроллеров же - сплошной @unsafe

Ни на йоту не больше чем в программировании под большие машины - там у вас в unsafe обёрнуты обращения к системным вызовам, а тут к портам. В остальном разницы нет, поверх этого можете писать только safe логику, можете пользоваться штуками использующими unsafe под капотом для эффективности, но эти штуки опциональны и одинаковы на любых платформах.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #2 Ответы: #31

16. Сообщение от Аноним (15), 29-Май-26, 21:25   –1 +/
Какой интересный тейк. Даже интересно в какой плоскости лежит вопрос применения если не в плоскости применения.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #12 Ответы: #19

18. Сообщение от Сладкая булочка (?), 29-Май-26, 21:32   +1 +/
> (и юнит тесты рядом с кодом очень удобная штука)

В си никто не мешает положить тесты рядом с кодом.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #10 Ответы: #22

19. Сообщение от анонимс (?), 29-Май-26, 21:36   +/
Идеологическом. Rust компилируется LLVM написанным на C++ бэкэндом rustc так что машинный код совершенно одинаков
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #16 Ответы: #21

20. Сообщение от Аноним (15), 29-Май-26, 21:44   +/
Это скорее правда. Под железо без изысков (типа всяких SIMD) компилировать чистую математику (а что ещё в эмбеддовке может быть CPU-bound) компиляторы давно уже научились, и язык тут можно вообще любой взять. Если у него конечно бэкенд gcc/llvm, а не самодельное музейное гoвнo из прошлого века.

Сейчас скорее интересно другое, а именно возможность написать взрослый асинхронный код типа

```rust
task::spawn(async ||
    loop {
        button.await;
        i2c.send(0x12, b"button pressed").await.unwrap();
    }
);
```

и чтобы он скомпилился в те же 276 байт которые я напишу на ассемблере с ручным диспатчем прерываний и конечным автоматом для состояний. Хотя даже тут интерес уже даже не практический, а фановый, поскольку нет давно железа где было бы принципиально скомпилится это в 276 или 27600 байт.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #8 Ответы: #27

21. Сообщение от Аноним (15), 29-Май-26, 21:48   +/
Машинный код одинаков только если писать на общем подмножестве двух языков, на нахрена это кому-то нужно? На rust можно писать на порядок выразительнее, и ответ на вопрос будет ли полученный код компактнее и быстрее не для всех очевиден, а даже без учёта этого, вопросы компайл-тайм проверок и более качественного тулинга - сугубо практические.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #19

22. Сообщение от Аноним (15), 29-Май-26, 21:53   +/
Тесты рядом с кодом это, если что так и ни строчкой больше, даже если это первый тест в проекте:

```
fn inc(a: u32) -> u32 {
     a + 1
}

+#[test]
+fn test_inc() {
+    assert_eq!(inc(1), 2);
+}
```

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #18 Ответы: #26

23. Сообщение от Аноним (15), 29-Май-26, 21:57   +/
Жаль про размер исходников ничего не сказано.
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #25

25. Сообщение от Аноним (25), 29-Май-26, 22:07   +/
А может и сказано...
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #23

26. Сообщение от Аноним (9), 29-Май-26, 22:34   +/
И что тут такого особенного, чего не было нигде в других языках?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #22

27. Сообщение от Аноним (9), 29-Май-26, 22:38   +/
> скомпилится это в 276 или 27600 байт

Вся суть растерманов.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #20 Ответы: #32

28. Сообщение от Аноним83 (?), 29-Май-26, 22:44   +/
> писать на нём в C/плюсовом стиле, то и результаты будут примерно такими же. Вот было бы гораздо интереснее сравнить rust с C/плюсовым стилем и идиоматический rust с Option, Result, итераторами, монадическими конструкциями, лямбдами и трейтами, а желательно с ещё более высокоуровневыми штуками типа разбора протоколов через serde или хотя бы nom.

Столько буков и ни слова о конечном результате, только какие то бесполезные языковые абстракции.


> А давний опыт в эмбеддовке (AVR) показал что на полноценном C++ со всякими `unique_ptr`, `<algorithm>` и повсеместными шаблонами (когда разные реализации таймеров и экранчиков прокидываются как шаблонные аргументы, реализация I2C мокается для тестов и т.д.) получает прошивки компактнее дубового сишного кода, после чего про C в нашеё команде вообще забыли.

Потому что видимо на С не пробовали даже делать плагины и абстракции, как оно сделано в том же линухе/бсд в дровах для всего того же самого.

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

29. Сообщение от Аноним (1), 29-Май-26, 23:10   +/
>практического применения

https://github.com/discord

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

31. Сообщение от Аноним (31), 29-Май-26, 23:18    Скрыто ботом-модератором+1 +/
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #15

32. Сообщение от Аноним (31), 29-Май-26, 23:20   +/
А в чем суть? Или пока сам не понял?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #27

33. Сообщение от Аноним (33), 29-Май-26, 23:22   +/
Нашел! Я нашел! https://github.com/FluxSysLang/Flux
Ответить | Правка | Наверх | Cообщить модератору


Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




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

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