Skip to content

Conversation

@unbalancedparentheses
Copy link

Summary

This PR adds a comprehensive roadmap document outlining the development plan for spawned-concurrency.

v0.5 Features (28 tasks across 7 phases)

Phase Focus Key Items
0 Code Quality Refactor receive(), fix todos, consolidate enums, remove deps (~200-300 lines, 2 deps)
1 Testing Infrastructure spawned-test crate, deterministic runtime
2 Structured Concurrency Task, TaskGroup, spawn_detached, cancellation
3 Observability Inspection API, metrics integration
4 Buffer Strategies Fixed/Dropping/Sliding mailboxes
5 Scheduling & Fairness Throughput limits, reentrancy, starvation detection
6 Routers & Pools Router strategies, auto-scaling pools

v1.0+ Features

  • Persistence (event sourcing)
  • Distribution (clustering)
  • Virtual Actors (Orleans-style)

Key Design Decisions

  • Testing infrastructure moved early - enables TDD for all subsequent phases
  • Observability before buffer strategies - needed for debugging buffer behavior
  • Scheduling extracted as its own phase - was buried in a "spanning" section
  • Insights from 12+ frameworks - Erlang, Akka, Orleans, Trio, Loom, Pony, Lunatic, Proto.Actor, Ray, Swift, CAF, Dapr, Go CSP, Clojure core.async

Test plan

  • Review roadmap for completeness
  • Verify task ordering makes sense
  • Check for any missing features

This roadmap outlines the development plan for spawned-concurrency:

## v0.5 Features (28 tasks across 7 phases)
- Phase 0: Code Quality (refactor receive(), fix todos, consolidate enums, remove deps)
- Phase 1: Testing Infrastructure (spawned-test crate, deterministic runtime)
- Phase 2: Structured Concurrency (Task, TaskGroup, spawn_detached)
- Phase 3: Observability (inspection API, metrics)
- Phase 4: Buffer Strategies (Fixed/Dropping/Sliding mailboxes)
- Phase 5: Scheduling & Fairness (throughput limits, reentrancy, starvation detection)
- Phase 6: Routers & Pools

## v1.0+ Features
- Persistence (event sourcing)
- Distribution (clustering)
- Virtual Actors (Orleans-style)

## Key Design Decisions
- Testing infrastructure moved early (enables TDD)
- Observability before buffer strategies (needed for debugging)
- Scheduling extracted as its own phase
- Insights incorporated from 12+ frameworks (Erlang, Akka, Orleans, Trio, Loom, etc.)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant