Roadmap¶
ucoro is maintenance-only. Bug fixes and platform fixes are accepted; no new features are scheduled.
Released¶
0.1.1¶
- x86-64 context switch on Linux, macOS and Windows returns directly instead of through a mispredicted
ret: unchecked round trip 20 to 6.4 ns on Linux x64 (#12), 30 to 18 ns on Windows under Wine (#15) benchmark_ucorotimes batches instead of single switches- Documentation site at https://pavelguzenfeld.com/ucoro/
0.1.0¶
- Upstream credit corrected to minicoro; licensing aligned on MIT
- README claims corrected to match the benchmark table,
sizeof, and CI coverage - FetchContent pinned to a release tag
0.0.1¶
- C++23 API over minicoro:
std::expected, concepts,[[nodiscard]], strong types (stack_size,storage_size) - Header-only; define
UCORO_IMPLin one translation unit; fmt formatters only when fmt is included first coro::coroutine,coro::coroutine_handle,coro::generator<T>,coro::task_runner- Type-safe LIFO storage (
push/pop/peek) constrained by thestorableconcept *_unchecked()variants for hot paths- Exceptions captured at the context-switch boundary;
has_exception(),exception(),rethrow_if_exception() - Guard pages via
mmap/VirtualAlloc, plus stack-bounds and magic-number checks onyield() - 52 unit tests (280 assertions) and 17 integration tests
- CI: GCC 13 and Clang 18 on Linux x64, Apple Clang on macOS ARM64, MSVC on Windows x64, ASan + UBSan
Not planned¶
Open to a PR with an issue first:
- CI coverage for Linux ARM64 and macOS x64, and a Debug build matrix
- clang-format / clang-tidy with pre-commit
- Symmetric transfer (
coro.transfer(other)) - Coroutine pools
- Cancellation tokens
- Windows ARM64, RISC-V
- vcpkg / Conan packages
Non-goals¶
- Thread safety: a coroutine belongs to one thread; use one
task_runnerper thread - Preemption: scheduling is cooperative
- Interop with C++20 stackless coroutines
- Growable stacks: stacks are fixed size