mirror of
https://github.com/embassy-rs/embassy.git
synced 2026-03-13 18:08:44 +00:00
6.0 KiB
6.0 KiB
Changelog
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
Unreleased - ReleaseDate
- Added new metadata API for tasks.
- Main task automatically gets a name of
mainwhen themetadata-namefeature is enabled. - Upgraded rtos-trace
- Added optional "highest priority" scheduling
- Added optional "earliest deadline first" EDF scheduling
- Migrate
cortex-artoaarch32-cpu. The feature namearch-cortex-arremains the same and legacy ARM architectures are not supported. - Added
run_untiltoarch-stdvariant ofExecutor. - Added
__try_embassy_time_queue_item_from_waker
0.9.1 - 2025-08-31
- Fixed performance regression on some ESP32 MCUs.
0.9.0 - 2025-08-26
- Added
extern "Rust" fn __embassy_time_queue_item_from_waker - Removed
TaskRef::dangling - Added
embassy-executor-timer-queueas a dependency - Moved the
TimeQueueItemstruct andtimer-item-payload-size-*features (astimer-item-size-X-words) intoembassy-executor-timer-queue
0.8.0 - 2025-07-31
- Added
SpawnToken::id - Task pools are now statically allocated on stable rust. All
task-arena-size-*features have been removed and are no longer necessary. - New trace hooks:
_embassy_trace_poll_start&_embassy_trace_task_end - Added task naming capability to tracing infrastructure
- Added
Executor::id&Spawner::executor_id - Disable
critical-section/stdfor arch-std - Added possibility to select an executor in
#[embassy_executor::main] - Fix AVR executor
- executor: Make state implementations and their conditions match
- Added support for Cortex-A and Cortex-R
- Added support for
-> impl Future<Output = ()>in#[task] - Fixed
Sendunsoundness with-> impl Futuretasks - Marked
Spawner::for_current_executorasunsafe #[task]now properly marks the generated function as unsafe if the task is marked unsafe
0.7.0 - 2025-01-02
- Performance optimizations.
- Remove feature
integrated-timers. Starting withembassy-time-driverv0.2,embassy-timev0.4 the timer queue is now part of the time driver, so it's no longer the executor's responsibility. Therefore,embassy-executorno longer provides anembassy-time-queue-driverimplementation. - Added the possibility for timer driver implementations to store arbitrary data in task headers. This can be used to make a timer queue intrusive list, similar to the previous
integrated-timersfeature. Payload size is controlled by thetimer-item-payload-size-Xfeatures. - Added
TaskRef::executorto obtain a reference to a task's executor
0.6.3 - 2024-11-12
- Building with the
nightlyfeature now works with the Xtensa Rust compiler 1.82. - Compare vtable address instead of contents. Saves 44 bytes of flash on cortex-m.
0.6.2 - 2024-11-06
- The
nightlyfeature no longer requiresnightly-2024-09-06or newer.
0.6.1 - 2024-10-21
- Soundness fix: Deny using
impl Traitin task arguments. This was previously accidentally allowed when not using thenightlyfeature, and could cause out of bounds memory accesses if spawning the same task mulitple times with different underlying types for theimpl Trait. Affected versions are 0.4.x, 0.5.0 and 0.6.0, which have been yanked. - Add an architecture-agnostic executor that spins waiting for tasks to run, enabled with the
arch-spinfeature. - Update for breaking change in the nightly waker_getters API. The
nightlyfeature now requiresnightly-2024-09-06or newer. - Improve macro error messages.
0.6.0 - 2024-08-05
- Add collapse_debuginfo to fmt.rs macros.
- initial support for AVR
- use nightly waker_getters APIs
0.5.1 - 2024-10-21
- Soundness fix: Deny using
impl Traitin task arguments. This was previously accidentally allowed when not using thenightlyfeature, and could cause out of bounds memory accesses if spawning the same task mulitple times with different underlying types for theimpl Trait. Affected versions are 0.4.x, 0.5.0 and 0.6.0, which have been yanked.
0.5.0 - 2024-01-11
- Updated to
embassy-time-driver 0.1,embassy-time-queue-driver 0.1, compatible withembassy-time v0.3and higher.
0.4.0 - 2023-12-05
- Removed
arch-xtensa. Use the executor provided by the HAL crate (esp-hal,esp32s3-hal, etc...) instead. - Added an arena allocator for tasks, allowing using the
mainandtaskmacros on Rust 1.75 stable. (it is only used if thenightlyfeature is not enabled. Whennightlyis enabled,type_alias_impl_traitis used to statically allocate tasks, as before).
0.3.3 - 2023-11-15
- Add
mainmacro reexport for Xtensa arch. - Remove use of
atomic-polyfill. The executor now has multiple implementations of its internal data structures for cases where the target supports atomics or doesn't.
0.3.2 - 2023-11-06
- Use
atomic-polyfillforriscv32 - Removed unused dependencies (static_cell, futures-util)
0.3.1 - 2023-11-01
- Fix spurious "Found waker not created by the Embassy executor" error in recent nightlies.
0.3.0 - 2023-08-25
- Replaced Pender. Implementations now must define an extern function called
__pender. - Made
raw::AvailableTaskpublic - Made
SpawnToken::new_failedpublic - You can now use arbitrary expressions to specify
#[task(pool_size = X)]
0.2.1 - 2023-08-10
- Avoid calling
pend()when waking expired timers - Properly reset finished task state with
integrated-timersenabled - Introduce
InterruptExecutor::spawner() - Fix incorrect critical section in Xtensa executor
0.2.0 - 2023-04-27
- Replace unnecessary atomics in runqueue
- add Pender, rework Cargo features.
- add support for turbo-wakers.
- Allow TaskStorage to auto-implement
Sync - Use AtomicPtr for signal_ctx, removes 1 unsafe.
- Replace unsound critical sections with atomics
0.1.1 - 2022-11-23
- Fix features for documentation
0.1.0 - 2022-11-23
- First release