|about 5 years ago||2 days ago|
|MIT License||GNU General Public License v3.0 or later|
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
We haven't tracked posts mentioning Swifton yet.
Tracking mentions began in Dec 2020.
Embassy – Modern embedded framework, using rust and async
1 project | news.ycombinator.com | 2 May 2022
Async Rust vs RTOS showdown! - Spoiler: Rust is faster!
2 projects | reddit.com/r/rust | 2 Feb 2022
Rust embedded and networking
2 projects | reddit.com/r/rust | 24 Jan 2022
I think embassy, embassy-net on top of smoltcp might also be worth a look
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.
What are some alternatives?
Express - Swift Express is a simple, yet unopinionated web application server written in Swift
rusty-clock - An alarm clock with environment stats in pure bare metal embedded rust
rust-mos - Empowering everyone to build reliable and efficient software.
cassette - A simple, single-future, non-blocking executor intended for building state machines. Designed to be no-std and embedded friendly.
nrf-hal - A Rust HAL for the nRF family of devices
Perfect - Server-side Swift. The Perfect core toolset and framework for Swift Developers. (For mobile back-end development, website and API development, and more…)
crates.io - Source code for crates.io
swifter - Tiny http server engine written in Swift programming language.
Vapor - 💧 A server-side Swift HTTP web framework.
bl602-hal - Hardware Abstract Layer for BL602 RISC-V WiFi + BLE SoC in embedded Rust
Embassy - Super lightweight async HTTP server library in pure Swift runs in iOS / MacOS / Linux
Noze.io - Evented I/O streams for Swift