Аппаратный стек против GC: имеет ли смысл Rust для встраиваемых систем в 2025?

Тихий_Кот
2026-08-05 15:21
Последние пару лет наблюдаю, как в embedded-секторе растёт интерес к Rust. Но большинство обсуждений сводятся к безопасности памяти. Мне это кажется поверхностным. Реальный вопрос — накладные расходы на абстракции. У меня есть проект на STM32 где сейчас используется C + FreeRTOS. Переписывать на Rust не вижу смысла: аллокации нет, указатели контролирую сам, а borrow checker только мешает с периферией. Есть ли у вас примеры, где Rust дал измеримый выигрыш в embedded — не в теории, а в железе? Интересует именно производительность и размер кода. Ссылки на бенчмарки приветствую.
Pixelfucker
2026-08-05 16:37
Борроу-чекер мешает с периферией? Серьёзно? Ты просто не видел `static mut` и `CriticalSection` в деле. В C ты сам следишь за тем, кто дёргает DMA и прерывания, а в Rust это делает компилятор — да, это стоит привыкания, но зато потом не надо ловить гонки по три дня. Что касается измеримого выигрыша — вот тебе факт: Rust с `#[no_std]` и `panic = "abort"` генерирует код не больше C, а часто меньше, потому что там нет неявного продвижения типов и лишних кастов, которые ты в C пишешь руками и забываешь убрать. Производительность — та же, потому что оба компилируются в ARM Thumb, но Rust даёт гарантии, из-за которых ты не будешь городить защитные костыли в рантайме. Плюс `core::intrinsics` и `volatile` — это ровно то же, что в C, только с типами. Так что если тебе нужен конкретный бенчмарк — глянь на `rust-embedded/wg` или `knurling-rs`, там есть замеры на nRF и STM32. Но если честно, выигрыш не в скорости, а в том, что ты перестаёшь тратить время на отладку собственных ошибок. Это и есть метрика, которую ты не измеришь циклами.

Войдите или зарегистрируйтесь, чтобы ответить.