Rust Embedded async executor and HALs (by embassy-rs)

Embassy Alternatives

Similar projects and alternatives to embassy

NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a better embassy alternative or higher similarity.

Suggest an alternative to embassy

Reviews and mentions

Posts with mentions or reviews of embassy. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2021-11-13.
  • Why asynchronous Rust doesn't work
    3 projects | reddit.com/r/programming | 13 Nov 2021
    Rust’s async design allows for async to be used on a variety of hardware types, like embedded. Green threads/fibers are much more useful for managed languages like Go and Java that don’t typically have to run without an operating system or without a memory allocator. Of course C++ can do this also, with their new coroutines/generators feature but I don’t think it’s very controversial to say that it is much harder to use than Rust’s async.
  • Rust on the MOS 6502: Beyond Fibonacci
    8 projects | news.ycombinator.com | 21 Sep 2021
    I guess when mentioning Rust on Nordic controllers one should also mention these excellent projects


  • Will rust's standard libraries maintain their synchronous interfaces?
    3 projects | reddit.com/r/rust | 9 Sep 2021
    FYI async is actually really exciting for embedded. Check out embassy, which allows you to write async code and run it on a very thin executor on embedded devices. The reason this is exciting is that the executor can automatically put the MCU to sleep when there is no work to do (it will be woken up again when something happens, e.g. a timer going off or some data arriving from a peripheral). Very useful for battery consumption! Async is not appropriate for all embedded though: some devices require precise timing. You wouldn't want your pacemaker going to sleep when it should be pumping your heart! For this case, you organise your work by priority and then use interrupts to suspend low-priority work when there is something more important to do.
    3 projects | reddit.com/r/rust | 9 Sep 2021
    Small microcontrollers can fit async runtimes with statically allocated tasks, embassy (embedded async) is doing real neat things in this space: https://github.com/embassy-rs/embassy
  • Ask HN: Thoughts on Async in Embedded?
    1 project | news.ycombinator.com | 15 Jul 2021
    In the Rust OSS embedded community, Async is a popular approach, most notably with Embassy: https://github.com/embassy-rs/embassy

    In embedded, it's common to use interrupts, DMA, and leverage multiple cores to handle concurrent events without blocking the main program loop. These are traditionally handled with deliberate register writes. Eg send a command to a peripheral to start a task. Continue running the program. When the task is complete, an interrupt fires, and code to handle the completion is immediately run.

    Async/Await functionality is used to abstract over these processes, using Futures. In my own programs, the abstraction doesn't provide enough value over natively handling interrupts, and DMA, to be worth the added complexity and cognitive overhead. Eg, framework code you need to account for, and coloring issues, which I'd argue still apply to Rust.

    I'm deliberately asking here, to get an outside perspective from the Rust community (They love embedded and RTIC), and the more general embedded community (Rust is Foreign, and new patterns are viewed with caution). Of note, RTOS is popular in C embedded, which perhaps handles some of the same abstraction issues handled by Async and RTIC in rust.

  • What is the state of async/await on embedded rust?
    1 project | reddit.com/r/rust | 16 Jun 2021
    It's working just fine, you just need an async runtime that supports your chip. embassy is where most of the current progress and experimentation is happening (it requires nightly Rust, but it is possible to write embedded async runtimes that work on stable too).
  • Where can async not run?
    2 projects | reddit.com/r/rust | 8 Jun 2021
    Async is a zero-cost abstraction, so there is no extra cost in terms of CPU or memory. Async could be less costly than using a traditional real-time OS on an embedded system because you don't need one stack per task and you don't need context switching between tasks. This of course depends on the executor being used. Something like tokio is not what you want running on a microcontroller, but embassy looks promising.
    2 projects | reddit.com/r/rust | 8 Jun 2021
  • Should Rust be used in Embedded Systems already?
    3 projects | reddit.com/r/embedded | 1 Jun 2021
    See embassy-rs
  • From Rust to Spark: Formally Proven Bip-Buffers
    1 project | news.ycombinator.com | 6 May 2021
    For embedded async executors check out Embassy. It works well and is under active development.



Basic embassy repo stats
3 days ago

embassy-rs/embassy is an open source project licensed under GNU General Public License v3.0 or later which is an OSI approved license.

SaaSHub - Software Alternatives and Reviews
SaaSHub helps you find the best software and product alternatives
Find remote jobs at our new job board 99remotejobs.com. There are 32 new remote jobs listed recently.
Are you hiring? Post a new remote job listing for free.