Minimal asynchronous executor for Rust
The pasts asynchronous executor is designed for creating user-space software and embedded software. Pasts is purposely kept small with the entire source directory under 500 lines of Rust code.
Check out the documentation for examples.
- No unsafe (safe and sound)
- No required std (executor requires two allocations at startup, if needed can use a bump allocator with small capacity)
- No macros (fast compile times)
- No dependencies1 (bloat-free)
- No cost (true zero-cost abstractions)
- No pain (API super easy to learn & use)
- No platform-specific API differences (code works everywhere).
Pasts targets all platforms that can run Rust. The executor works on at least the following platforms (may work on others):
- All platforms that support threading (includes all tier 1 and some tier 2, 3)
- Web Assembly In Browser (Tier 2)
- No standard devices (Tiers 2 and 3)
Copyright © 2019-2025 The Pasts Contributors.
Licensed under any of
- Apache License, Version 2.0, (LICENSE_APACHE_2_0.txt or https://www.apache.org/licenses/LICENSE-2.0)
- Boost Software License, Version 1.0, (LICENSE_BOOST_1_0.txt or https://www.boost.org/LICENSE_1_0.txt)
- MIT License, (LICENSE_MIT.txt or https://mit-license.org/)
at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be licensed as described above, without any additional terms or conditions.
If you want help using or contributing to this library, feel free to send me an email at [email protected].
Since pasts is not an all-in-one async runtime solution, here's a list of crates that are designed to work well with pasts:
- Async Main - Proc macro crate to remove boilerplate for the main function
- Whisk - No-std compatible MPMC (multi-producer/multiple-consumer) asynchronous channel
- Smelling Salts - Library for asynchronous device waking using OS APIs
- Lookit - Library for asynchronously connecting to devices using OS APIs
- Event Iterator - Library for lending asynchronous iteration
Footnotes
-
Some features require a platform integration dependency, for instance:
webpulls inwasm-bindgen-futures