diff --git a/CHANGELOG.md b/CHANGELOG.md index 4ad178f..e9eb94c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,53 @@ 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). +## [0.2.0] - 2025-10-08 + +[View changes](https://github.com/swaits/dagx/compare/v0.1.0...v0.2.0) + +### Changed + +- **BREAKING**: Updated MSRV (Minimum Supported Rust Version) from 1.78.0 to 1.81.0 + - Required by updated dependencies: `criterion@0.7.0`, `half@2.6.0`, `rayon@1.11.0` + - Updated in both `dagx` and `dagx-macros` crates + - Updated all documentation (README.md, CONTRIBUTING.md) + +### Added + +- Comprehensive test coverage improvements (82.61% → 92.94%) + - Added 9 new unit tests for error paths in `ExtractInput` implementations + - Added 3 new type conversion tests in `src/types/tests.rs` + - Added 1 new trait implementation test in `src/task/tests.rs` + - Added 1 new dependency tuple test in `src/deps/tests.rs` + - Added 6 new execution path tests in `tests/execution/basic.rs` + - Added error handling tests for HashMap, Result, Option, Vec, and Arc types + - Added tests for tuple dependency count validation + - Improved concurrent run protection test with better synchronization +- Added `tarpaulin_include` to lint configuration for coverage tooling compatibility + +### Fixed + +- Fixed GitHub Actions `cargo-audit` workflow + - Replaced deprecated `actions-rs/audit-check@v1` with direct `cargo audit` command + - Resolved "Resource not accessible by integration" error +- Fixed clippy warnings in test code + - Removed unnecessary borrows in `.depends_on()` calls + - Added `#[allow(clippy::clone_on_copy)]` for explicit clone test +- Marked timing-sensitive and resource-intensive tests with `#[cfg_attr(tarpaulin, ignore)]` + - `test_arc_parallel_execution` (timing unreliable under instrumentation) + - `test_100000_nodes_stress` (resource intensive) + - `test_10000_level_chain_stress` (resource intensive) + +### Internal + +- Improved test organization following existing patterns in `tests/` directory +- Enhanced error path coverage for all `ExtractInput` trait implementations +- Better separation between unit tests and integration tests +- Refactored `scripts/release_check.sh` to use configurable VERSION variable + - Replaced hardcoded version references throughout script + - Updated instructions to use `jj` commands instead of `git` + - Simplified version bumps for future releases + ## [0.1.0] - 2025-10-05 ### Added @@ -97,4 +144,5 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - macOS (compatible) - Windows (compatible) -[0.1.0]: https://github.com/swaits/dagx/releases/tag/v0.1.0 +[0.2.0]: https://github.com/swaits/dagx/tree/v0.2.0 +[0.1.0]: https://github.com/swaits/dagx/tree/v0.1.0 diff --git a/Cargo.lock b/Cargo.lock index 17ee3ae..b797b15 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -434,7 +434,7 @@ dependencies = [ [[package]] name = "dagx" -version = "0.1.0" +version = "0.2.0" dependencies = [ "async-executor", "async-std", @@ -452,7 +452,7 @@ dependencies = [ [[package]] name = "dagx-macros" -version = "0.1.0" +version = "0.2.0" dependencies = [ "proc-macro2", "quote", diff --git a/Cargo.toml b/Cargo.toml index ea3360a..0509892 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -3,7 +3,7 @@ members = ["dagx-macros"] [package] name = "dagx" -version = "0.1.0" +version = "0.2.0" edition = "2021" rust-version = "1.81" authors = ["Stephen Waits "] @@ -23,7 +23,7 @@ unexpected_cfgs = { level = "warn", check-cfg = ['cfg(tarpaulin)', 'cfg(tarpauli [dependencies] futures = "0.3" parking_lot = "0.12" -dagx-macros = { version = "0.1.0", path = "./dagx-macros" } +dagx-macros = { version = "0.2.0", path = "./dagx-macros" } [dev-dependencies] tokio = { version = "1", features = ["macros", "rt-multi-thread", "time", "sync"] } diff --git a/dagx-macros/Cargo.toml b/dagx-macros/Cargo.toml index fcbb746..344fdfe 100644 --- a/dagx-macros/Cargo.toml +++ b/dagx-macros/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "dagx-macros" -version = "0.1.0" +version = "0.2.0" edition = "2021" rust-version = "1.81" authors = ["Stephen Waits "] diff --git a/scripts/release_check.sh b/scripts/release_check.sh index 0fedb8a..a99d30b 100755 --- a/scripts/release_check.sh +++ b/scripts/release_check.sh @@ -1,12 +1,17 @@ #!/bin/bash -# Release Readiness Checker for dagx v0.1.0 +# Release Readiness Checker for dagx # This script performs EXHAUSTIVE checks before publishing to crates.io set -e -echo "========================================" -echo "dagx v0.1.0 EXHAUSTIVE Release Check" -echo "========================================" +# ============================================================================= +# CONFIGURATION +# ============================================================================= +VERSION="0.2.0" + +echo "==================" +echo "dagx Release Check" +echo "==================" echo "" # Color codes @@ -51,7 +56,7 @@ check_pass "Rust version compatible" echo "" echo "→ Checking for uncommitted changes..." -if ! git diff --quiet || ! git diff --cached --quiet; then +if jj status 2>&1 | grep -q "Working copy changes:"; then check_warn "Uncommitted changes found - you'll need to commit before publishing" else check_pass "No uncommitted changes" @@ -136,8 +141,8 @@ check_pass "README.md looks perfect" echo "" echo "→ Verifying CHANGELOG.md..." [ -f CHANGELOG.md ] || check_fail "CHANGELOG.md missing" -grep -q "0.1.0" CHANGELOG.md || check_fail "CHANGELOG.md doesn't mention v0.1.0" -check_pass "CHANGELOG.md exists and mentions v0.1.0" +grep -q "$VERSION" CHANGELOG.md || check_fail "CHANGELOG.md doesn't mention v$VERSION" +check_pass "CHANGELOG.md exists and mentions v$VERSION" echo "" echo "→ Verifying LICENSE..." @@ -182,7 +187,7 @@ section "CARGO.TOML METADATA" echo "→ Checking dagx Cargo.toml..." grep -q 'name = "dagx"' Cargo.toml || check_fail "Package name incorrect" -grep -q 'version = "0.1.0"' Cargo.toml || check_fail "Version not 0.1.0" +grep -q "version = \"$VERSION\"" Cargo.toml || check_fail "Version not $VERSION" grep -q 'edition = "2021"' Cargo.toml || check_fail "Edition not 2021" grep -q 'license = "MIT"' Cargo.toml || check_fail "License not MIT" grep -q 'description = "A minimal, type-safe' Cargo.toml || check_fail "Description missing" @@ -197,7 +202,7 @@ check_pass "dagx Cargo.toml metadata complete and correct" echo "" echo "→ Checking dagx-macros Cargo.toml..." grep -q 'name = "dagx-macros"' dagx-macros/Cargo.toml || check_fail "dagx-macros name incorrect" -grep -q 'version = "0.1.0"' dagx-macros/Cargo.toml || check_fail "dagx-macros version not 0.1.0" +grep -q "version = \"$VERSION\"" dagx-macros/Cargo.toml || check_fail "dagx-macros version not $VERSION" grep -q 'edition = "2021"' dagx-macros/Cargo.toml || check_fail "dagx-macros edition not 2021" grep -q 'license = "MIT"' dagx-macros/Cargo.toml || check_fail "dagx-macros license not MIT" grep -q 'description = "Procedural macros for dagx"' dagx-macros/Cargo.toml || check_fail "dagx-macros description missing" @@ -230,8 +235,8 @@ check_pass "dagx-macros is ready to publish" echo "" echo "→ Testing dagx package (dry-run with --allow-dirty)..." echo " Note: This will fail until dagx-macros is published to crates.io" -if cargo publish --dry-run --allow-dirty 2>&1 | grep -q "no matching package named \`dagx-macros\`"; then - check_warn "dagx package check shows dependency on unpublished dagx-macros (expected)" +if cargo publish --dry-run --allow-dirty 2>&1 | grep -q "failed to select a version for the requirement.*dagx-macros"; then + check_warn "dagx package check shows dependency on unpublished dagx-macros v$VERSION (expected)" else cargo publish --dry-run --allow-dirty || check_fail "dagx package check failed unexpectedly" check_pass "dagx package is ready (dagx-macros must be published first)" @@ -284,16 +289,15 @@ echo -e "${GREEN}━━━━━━━━━━━━━━━━━━━━━ echo -e "${GREEN}✓ ALL CHECKS PASSED!${NC}" echo -e "${GREEN}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}" echo "" -echo "dagx v0.1.0 is READY FOR RELEASE!" +echo "dagx v$VERSION is READY FOR RELEASE!" echo "" echo -e "${YELLOW}PUBLICATION INSTRUCTIONS:${NC}" echo "" echo "1. Commit any uncommitted changes:" -echo " git add ." -echo " git commit -m 'Release v0.1.0'" +echo " jj commit -m 'chore: release v$VERSION'" echo "" -echo "2. Tag the release:" -echo " git tag -a v0.1.0 -m 'Release v0.1.0'" +echo "2. Create a bookmark for the release:" +echo " jj bookmark create v$VERSION" echo "" echo "3. Publish dagx-macros FIRST:" echo " cd dagx-macros" @@ -303,9 +307,8 @@ echo "4. Then publish dagx:" echo " cd .." echo " cargo publish" echo "" -echo "5. Push changes and tag:" -echo " git push origin main" -echo " git push origin v0.1.0" +echo "5. Push changes and bookmark:" +echo " jj git push" echo "" echo -e "${BLUE}Note: dagx-macros MUST be published before dagx${NC}" echo -e "${BLUE}because dagx depends on dagx-macros from crates.io${NC}"