3.3 KiB
3.3 KiB
Changelog
All notable changes to dagx will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
0.1.0 - 2025-10-05
Added
Core Features
- Type-safe async DAG executor with compile-time dependency validation
- Runtime-agnostic design (works with Tokio, async-std, smol, and other runtimes)
- Fluent builder API with type-state pattern for compile-time safety
- Comprehensive error handling with
DagResult<T>andDagErrorenum - Support for up to 8 dependencies per task
- True parallel execution with automatic task spawning
Task Patterns
- Stateless tasks: Pure functions with no self parameter
- Read-only state: Tasks with
&selffor configuration - Mutable state: Tasks with
&mut selffor stateful operations - Sync and async: Both synchronous and asynchronous task execution
- Procedural macro:
#[task]macro for ergonomic task definitions
Error Handling
- Cycle detection with detailed node information
- Type-safe handle validation
- Panic isolation and conversion to errors
- Actionable error messages with recovery suggestions
Testing
- Comprehensive unit tests covering core functionality
- Documentation tests ensuring examples compile and run
- Panic handling and isolation tests
- Type safety verification tests
- Concurrency stress tests
- Integration tests for end-to-end workflows
- Runtime compatibility tests (Tokio, async-std, smol)
- Quirky runtime tests (async-executor, pollster, futures-executor)
- Dependency tuple tests (1-8 dependency support)
- Large DAG scalability tests (10,000+ nodes)
Performance
- Benchmark suite using Criterion
- True parallel execution (tasks spawn to multiple threads)
- Linear scaling verified up to 10,000+ tasks
- ~1-2µs overhead per task
- Efficient memory usage (~200 bytes per task)
- Zero-cost abstractions via generics and monomorphization
Documentation
- Comprehensive API documentation
- Tutorial examples (numbered, beginner-friendly):
01_basic.rs- Getting started02_fan_out.rs- 1→N dependencies03_fan_in.rs- N→1 dependencies04_parallel_computation.rs- Parallel map-reduce
- Reference examples (practical patterns):
complex_dag.rs- Multi-layer workflowsconditional_workflow.rs- Conditional executiondata_pipeline.rs- ETL pipeline patternerror_handling.rs- Error propagation and recoverytimeout.rs- Task timeoutslarge_dag.rs- Scalability demonstrationparallelism_proof.rs- True parallelism proof
- Architecture documentation
- Security policy
- Contributing guidelines
Dependencies
futures = "0.3"(runtime-agnostic async)parking_lot = "0.12"(efficient synchronization)dagx-macros(procedural macros)
Dev Dependencies
tokio = "1"(async runtime)async-std = "1"(async runtime)smol = "2"(async runtime)criterion = "0.7"(benchmarking)async-executor = "1.13"(quirky runtime testing)pollster = "0.4"(quirky runtime testing)futures-executor = "0.3"(quirky runtime testing)
Tested Platforms
- Linux (primary development and CI)
- macOS (compatible)
- Windows (compatible)