diff --git a/CHANGELOG.md b/CHANGELOG.md index 6fda4c0..46d3272 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,7 +5,9 @@ All notable changes to dagx 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). -## [Unreleased] +## [0.3.0] - 2025-10-08 + +[View changes](https://github.com/swaits/dagx/compare/v0.2.3...v0.3.0) ### Added @@ -13,6 +15,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Comprehensive documentation with `compile_fail` tests proving cycles are impossible - New integration test suite `tests/cycle_prevention.rs` demonstrating type-state pattern - Documents how the type system prevents cycles at compile-time (zero runtime cost) + - Added prominent documentation section in README.md explaining the feature - **New `DagError::ConcurrentExecution` variant** - Replaces misuse of `CycleDetected` for concurrent run protection @@ -23,14 +26,22 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - **Removed `DagError::CycleDetected` error variant** - Cycles are provably impossible via the public API due to type-state pattern - Removed 24 lines of unreachable cycle detection code from `runner.rs` - - Migration: If you were handling `DagError::CycleDetected`, remove that match arm + - **Migration**: If you were handling `DagError::CycleDetected`, remove that match arm - This error could never occur in practice, so no runtime behavior changes ### Changed +- **Documentation improvements** + - Added comprehensive "Compile-Time Cycle Prevention" section to README.md + - Updated lib.rs documentation to highlight cycle prevention as first feature + - Fixed rustdoc links in `src/cycle_prevention.rs` + - Updated all error documentation references (removed cycle detection) + - Added code examples demonstrating type-state pattern + - Updated tagline to emphasize compile-time cycle prevention + - **Test coverage improvements** - Added `#[cfg(not(tarpaulin_include))]` to untestable type alias - - Coverage at ~83% after removing dead code + - Coverage at ~83% after removing dead code (target set to 80%) - Remaining uncovered lines are primarily tracing macros and unreachable error paths - **Enhanced CI configuration** (`.github/workflows/ci.yml`) @@ -39,14 +50,25 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - New cargo check job for all feature combinations - Lint (clippy) now runs on all feature combinations - Doc generation for all feature combinations - - Coverage threshold lowered to 83% (accounts for removal of dead code and tracing macros) + - Coverage threshold set to 80% (accounts for tracing macros and unreachable error paths) - **Release check script improvements** (`scripts/release_check.sh`) - Now reads MSRV from `Cargo.toml` instead of hardcoded version - Uses `cargo msrv verify` for all feature combinations - Tests all feature combinations (no-default, all, default) - Runs clippy, check, and tests on all feature combos - - Includes coverage verification with 83% threshold + - Includes coverage verification with 80% threshold + +### Fixed + +- **Clippy lints in test code** + - Removed unnecessary `.clone()` call on `Copy` type in `tests/cycle_prevention.rs` + - Removed unnecessary borrow in test dependency wiring + +- **Flaky timing test on macOS CI** + - Increased timeout threshold from 140ms to 200ms in `test_arc_parallel_execution` + - macOS CI runners are significantly slower than Linux/Windows + - 200ms threshold still proves parallelism while accounting for CI variability ## [0.2.3] - 2025-10-08 @@ -233,6 +255,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - macOS (compatible) - Windows (compatible) +[0.3.0]: https://github.com/swaits/dagx/tree/v0.3.0 +[0.2.3]: https://github.com/swaits/dagx/tree/v0.2.3 [0.2.2]: https://github.com/swaits/dagx/tree/v0.2.2 [0.2.1]: https://github.com/swaits/dagx/tree/v0.2.1 [0.2.0]: https://github.com/swaits/dagx/tree/v0.2.0 diff --git a/Cargo.lock b/Cargo.lock index 7b59f06..aa0bf6e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -434,7 +434,7 @@ dependencies = [ [[package]] name = "dagx" -version = "0.2.3" +version = "0.3.0" dependencies = [ "async-executor", "async-std", @@ -454,7 +454,7 @@ dependencies = [ [[package]] name = "dagx-macros" -version = "0.2.3" +version = "0.3.0" dependencies = [ "proc-macro2", "quote", diff --git a/Cargo.toml b/Cargo.toml index e88e8e8..cfd2270 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -3,7 +3,7 @@ members = ["dagx-macros"] [package] name = "dagx" -version = "0.2.3" +version = "0.3.0" edition = "2021" rust-version = "1.81" authors = ["Stephen Waits "] @@ -27,7 +27,7 @@ unexpected_cfgs = { level = "warn", check-cfg = ['cfg(tarpaulin)', 'cfg(tarpauli [dependencies] futures = "0.3" parking_lot = "0.12" -dagx-macros = { version = "0.2.3", path = "./dagx-macros" } +dagx-macros = { version = "0.3.0", path = "./dagx-macros" } tracing = { version = "0.1", optional = true } [dev-dependencies] diff --git a/README.md b/README.md index 118a90b..91b57ac 100644 --- a/README.md +++ b/README.md @@ -167,7 +167,7 @@ dagx provides optional observability through the `tracing` crate with **zero run ```toml [dependencies] -dagx = { version = "0.2", features = ["tracing"] } +dagx = { version = "0.3", features = ["tracing"] } tracing-subscriber = "0.3" ``` @@ -335,7 +335,7 @@ Add to your `Cargo.toml`: ```toml [dependencies] -dagx = "0.2" +dagx = "0.3" tokio = { version = "1", features = ["macros", "rt-multi-thread"] } ``` diff --git a/dagx-macros/Cargo.toml b/dagx-macros/Cargo.toml index e622bc1..6821d42 100644 --- a/dagx-macros/Cargo.toml +++ b/dagx-macros/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "dagx-macros" -version = "0.2.3" +version = "0.3.0" edition = "2021" rust-version = "1.81" authors = ["Stephen Waits "] diff --git a/scripts/release_check.sh b/scripts/release_check.sh index 2a7778a..2acbffc 100755 --- a/scripts/release_check.sh +++ b/scripts/release_check.sh @@ -7,7 +7,7 @@ set -e # ============================================================================= # CONFIGURATION # ============================================================================= -VERSION="0.2.3" +VERSION="0.3.0" echo "==================" echo "dagx Release Check"