3 ms·
It is not designed for, but Rust works well on microcontrollers, such as Arduino. For example, a blink program for Arduino in Rust is less than 300 bytes in siz
by oddmiral 3y ago
It is not designed for, but Rust works well on microcontrollers, such as Arduino. For example, a blink program for Arduino in Rust is less than 300 bytes in size when compiled with "s" optimization level. It's a bit larger than C because of vector of interrupt handlers and error handling.
- steveklabnik 3y ago> It is not designed for, Making sure Rust can work in embedded environments is absolutely a design goal, and choices around this are made explicitly.
- tester756 3y ago>choices around this are made explicitly. e.g?
- steveklabnik 3y agoA few off the top of my head: the core/std split, making the core language never allocate implicitly, the design of async/await.
- worik 3y ago> the design of async/await. I am curious How is "the design of async/await." for embedded programming?
- Vecr 3y agoAsync/await does not require dynamic memory allocation.
- steveklabnik 3y agoThe design of async/await took "using it in embedded" as a constraint. This is why it doesn't allocate, for example. Even C++ coroutines have one allocation, though they say that it can often be optimized away. This means RTOS-like projects can use it for tasks, and it works well. Embassy is an example of such a project. (Yet, I should also point out that you don't have to: at work we keep ours synchronous, for Reasons. Rust lets you do what you want.)