embassy-rs/embassy

Modern embedded framework, using Rust and async.

View on GitHub ↗Jump to charts ↓

Summary Information

Updated 16 minutes ago
Added to GitGenius on September 6th, 2026
Created on September 22nd, 2020
Open Issues & Pull Requests: 606 (+0)
GitHub issues: Enabled
Number of forks: 1,649
Total Stargazers: 9,799 (+1)
Total Subscribers: 56 (+0)

Charts & Analytics

Fetching additional details & charts...

Issue Activity (beta)

Issue API getrepoissuespagesummary failed: 429 Rate limit exceeded. Please try again later.

Detailed Description

Embassy is an async runtime and embedded framework for Rust that enables writing embedded systems using async/await patterns.

The framework addresses the challenge of managing concurrent tasks and I/O operations in resource-constrained embedded environments. Traditional embedded development often relies on callbacks or complex state machines to handle multiple concurrent operations. Embassy solves this by providing an async executor that runs on bare metal, allowing developers to write sequential-looking code that the compiler transforms into efficient state machines. The framework includes hardware abstraction layers for various microcontroller families, device drivers, and utilities for common embedded tasks.

Embassy suits projects where you need to manage multiple concurrent operations on microcontrollers and want the ergonomics of async Rust rather than callback-based or RTOS-based approaches. It works well for applications ranging from simple sensor reading to complex multi-task embedded systems. The framework is particularly valuable if your team is already comfortable with Rust's async ecosystem, since it applies familiar patterns to embedded targets. Projects with tight memory or power constraints benefit from Embassy's zero-cost abstractions, which avoid the overhead of traditional operating systems.

The project maintains active development with regular updates to executor implementations and hardware support. The codebase shows ongoing refinement of core async primitives and continuous expansion of device driver coverage across different microcontroller families. Development includes systematic work on improving documentation and examples for different use cases. The project demonstrates sustained effort in maintaining compatibility across multiple embedded architectures while evolving the async runtime to handle edge cases and performance requirements specific to embedded systems.