If you're reading this, mostly everything from previous chapters has been implemented.

Backlog

Leftover half-formed concepts and implementations from the first roadmap. Some of them are just kinda beyond the amount of planning I've done so far or require changes to the core (libparataxis? What am I calling it?). Keeping them here so nothing is lost.

Next roadmap

Now that the core primitives have been given shape, the next frontier involves ergonomics, observability, and scaling out.

Future Combinators & Parallel Map (pmap)

I have Nursery for structured concurrency, Channel->select for CSP races, and Stream for FRP. But for everyday Futures/Promises, you probably want to wait on multiple discrete outcomes easily. Here are my proposals to myself:

Deterministic Testing / "Mock Time"

Modern async frameworks (like Rust's tokio or Python's asyncio test suites) feature a "mock time" scheduler.

Execution Contexts / CPU-bound Pools

Currently, blocking C-level jobs (like await_sleep and socket I/O) are offloaded to the C thread pool. But what if a Perl fiber wants to do heavy, CPU-bound Perl math (like image processing or massive JSON parsing) without stalling other cooperative fibers?

A potential solution is a spawn_blocking or yield_to_thread mechanism, similar to Java's Loom or Node's Worker_Threads, where a heavy task can be seamlessly shipped to a dedicated background Perl interpreter thread if thread-enabled Perl is used (rare these days due to speed), returning the result via a Future.

Observability and Trace Propagation

I have Acme::Parataxis::Local, which is great for fiber-local state.

In modern distributed tracing (OpenTelemetry, DataDog), trace IDs need to automatically inherit from the parent fiber when a child fiber is spawned. We can do this by adding a hook to spawn() that automatically copies or inherits specific Local keys from the parent to the child would allow seamless context propagation.

Graceful Shutdown & Application Lifecycle

You have stop() on Supervisor, and cleanup() at the C level. But robust daemon processes often need a coordinated shutdown sequence: