edge-executor 0.5.0

Async executor suitable for embedded environments.
Documentation
# Changelog

All notable changes to this project will be documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [0.5.0] - 2026-08-20
* Potential fix for #3 (long running futures eventually stall):
  * Background:
    * Turns out this is likely related to ALL executor queues used by this crate (`crossbeam-queue`, `heapless MPMC`) being incompatible with OSes spawning threads at different priorities (since these queues do not use the OS mutexes, they are amenable to priority inversion issues - https://github.com/crossbeam-rs/crossbeam/issues/675#issuecomment-4003522816)
    * Note that very likely [`async-executor`]https://github.com/smol-rs/async-executor is also affected, as it uses `concurrent-queue`, which has the same issue
    * For more tetails, check https://github.com/esp-rs/esp-idf-svc/issues/630
  * Solution:
    * Use our own queue based on a mutex + `alloc::VeqDeque` (unbounded) or `heapless::Deque` (bounded)
    * Since the queue is now protected by a mutex (via `embassy-sync`) - as long as the mutex is the OS/Platform one - and it is by default - there should be no priority inversion issues anymore
    * Furter, allow the user to plug her own executor queue, via the new `ExecutorQueue` trait

## [0.4.1] - 2023-11-09
* Update to heapless 0.8, and use heapless `MpMcQueue` for targets that do not have atomics, as `crossbeam` does not support such targets yet

## [0.4.0] - 2023-10-17
* Crate goals clarified
* Crate redesigned to follow the API of `async-executor`
* Re-implemented as a completely portable executor which is itself a `Future` (platform/OS is expected to provide a `block_on` or "spawn a `Future` onto an event loop" primitive, but the executor is unaware of it)
* Documentation, examples, tests
* More user-friendly README