This is embedded-threads, an experimental embedded Rust scheduler.
NOTE: This repository has been re-integrated into RIOT-rs. All future development will happen there.
A while ago, I re-wrote the RIOT scheduler in Rust. That was supposed to be API- compatible and run RIOT applications as-is. The result worked and was of comparable performance, but the implementation turned out too C-like.
So this is a try to create a scheduler that is sound, but still allows to implement RIOT's semantics "on top".
I hope to make this scheduler flexible and usable enough to be usable outside RIOT-rs context.
Basic threading is implemented, for Cortex-M3+ (thumbv7m). This is experimental, expect changes and breakage. Feedback welcome!
- basic thread switching
- Cortex-M
- Cortex-M3+
- Cortex-M0+
- floating-point support
- RISCV
- ESP32 (Xtensa)
- Cortex-M
- MPU support / sandboxing
- highest-runnable-first scheduler
- provide basic IPC
- locks/mutexes
- thread flags
- channels
- integrate into RIOT-rs
- make scheduler implementation pluggable
- provide formally verified implementation
- provide best-in-class performance
embedded-threads is licensed under the terms of the Apache license (version 2.0).