From a4f8003c45e912f4dcdc4631ba9b5e0c770d0ced Mon Sep 17 00:00:00 2001 From: Matt Tanous Date: Sun, 11 Oct 2026 20:28:24 -0400 Subject: [PATCH] chore(release): 3.0.0 Co-Authored-By: Claude Opus 5.5 --- CHANGELOG.md | 18 ++++++++++++++++++ Cargo.lock | 10 +++++----- Cargo.toml | 4 ++-- README.md | 14 +++++++------- docs/monitoring.md | 8 ++++---- docs/quick-start.md | 8 ++++---- docs/testing.md | 2 +- docs/tracing.md | 2 +- hammerwork-web/README.md | 4 ++-- 9 files changed, 44 insertions(+), 26 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7cf59ca..ff54835 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,24 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +## [3.0.0] - 2026-10-11 + +A major release. Read [Upgrading from 2.x to 3.0](docs/upgrading-to-3.0.md) before +upgrading; it starts with the order to do things in. In short: + +- **Dependencies:** sqlx 0.9 (your own sqlx must move too) and Rust 1.94.0. +- **Features:** no default features (add the ones you use, or `full`); `azure-kv` is + `azure-kms` and `test` is `test-queue`. +- **API:** `DatabaseQueue` and `MigrationRunner` are sealed; one `dequeue(&DequeueOptions)` + replaces the five claim methods; configuration, statistics and growing enums are + `#[non_exhaustive]` with builders; zero rates and other invalid settings are rejected + by fallible constructors; `cargo-hammerwork` is binary-only and `hammerwork-web` exposes + only the dashboard types. +- **Database:** migration 021 moves MySQL to `DATETIME(6)` (no year-2038 limit; MySQL + 8.0.13+), rewriting every table. Stop 1.x workers first: the stale-job reaper now + relies on leases alone (`cargo hammerwork maintenance check --fix` repairs rows 1.x + left behind). + ### Breaking changes See [Upgrading from 2.x to 3.0](docs/upgrading-to-3.0.md) for what to change. diff --git a/Cargo.lock b/Cargo.lock index 5240c9f..fc3b051 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -908,7 +908,7 @@ dependencies = [ [[package]] name = "cargo-hammerwork" -version = "2.5.0" +version = "3.0.0" dependencies = [ "anyhow", "base64 0.22.1", @@ -1973,7 +1973,7 @@ dependencies = [ [[package]] name = "hammerwork" -version = "2.5.0" +version = "3.0.0" dependencies = [ "aes-gcm", "apache-avro", @@ -2035,7 +2035,7 @@ dependencies = [ [[package]] name = "hammerwork-web" -version = "2.5.0" +version = "3.0.0" dependencies = [ "anyhow", "base64 0.22.1", @@ -2849,7 +2849,7 @@ checksum = "743fb55ba31b18fb1ecef6bdc9aa2743314978ac084044301a7eee33fb99a20d" [[package]] name = "mysql-integration" -version = "2.5.0" +version = "3.0.0" dependencies = [ "chrono", "hammerwork", @@ -3305,7 +3305,7 @@ checksum = "05c8b63e8d9609db387f0324918f81d68fe27748f084ef092fb35954d0539a85" [[package]] name = "postgres-integration" -version = "2.5.0" +version = "3.0.0" dependencies = [ "chrono", "hammerwork", diff --git a/Cargo.toml b/Cargo.toml index 30b5f50..187f009 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -9,7 +9,7 @@ members = [ resolver = "3" [workspace.package] -version = "2.5.0" +version = "3.0.0" edition = "2024" license = "MIT" repository = "https://github.com/CodingAnarchy/hammerwork" @@ -19,7 +19,7 @@ documentation = "https://docs.rs/hammerwork" rust-version = "1.94.0" [workspace.dependencies] -hammerwork = { version = "2.5.0", path = "." } +hammerwork = { version = "3.0.0", path = "." } tokio = { version = "1.0", features = ["full"] } sqlx = { version = "0.9", features = ["runtime-tokio", "tls-rustls-ring-webpki", "chrono", "uuid", "json"] } chrono = { version = "0.4", features = ["serde"] } diff --git a/README.md b/README.md index 084f3c3..deec33b 100644 --- a/README.md +++ b/README.md @@ -37,22 +37,22 @@ No features are enabled by default: Hammerwork 3.0 gives you the queue, worker, ```toml [dependencies] # A queue on PostgreSQL (or MySQL): the lightest build -hammerwork = { version = "2.5", features = ["postgres"] } -hammerwork = { version = "2.5", features = ["mysql"] } +hammerwork = { version = "3", features = ["postgres"] } +hammerwork = { version = "3", features = ["mysql"] } # Everything that is not a backend, a key source or an event sink: # metrics, alerting, webhooks, streaming, tracing and encryption -hammerwork = { version = "2.5", features = ["postgres", "full"] } +hammerwork = { version = "3", features = ["postgres", "full"] } # Or pick subsystems one by one -hammerwork = { version = "2.5", features = ["postgres", "metrics", "alerting", "webhooks"] } +hammerwork = { version = "3", features = ["postgres", "metrics", "alerting", "webhooks"] } # With encryption for PII protection, and a KMS key source -hammerwork = { version = "2.5", features = ["postgres", "encryption", "aws-kms"] } # or "gcp-kms", "vault-kms", "azure-kms" +hammerwork = { version = "3", features = ["postgres", "encryption", "aws-kms"] } # or "gcp-kms", "vault-kms", "azure-kms" # In-memory TestQueue for your tests [dev-dependencies] -hammerwork = { version = "2.5", features = ["test-queue"] } +hammerwork = { version = "3", features = ["test-queue"] } ``` **Feature flags** @@ -81,7 +81,7 @@ cargo install hammerwork-web --features postgres # Or add to your project [dependencies] -hammerwork-web = { version = "2.5", features = ["postgres"] } +hammerwork-web = { version = "3", features = ["postgres"] } ``` Start the dashboard: diff --git a/docs/monitoring.md b/docs/monitoring.md index b89720c..adc4a97 100644 --- a/docs/monitoring.md +++ b/docs/monitoring.md @@ -223,14 +223,14 @@ Monitoring is opt-in: no feature is enabled by default. ```toml # The queue only, no monitoring -hammerwork = { version = "2.5", features = ["postgres"] } +hammerwork = { version = "3", features = ["postgres"] } # Only metrics -hammerwork = { version = "2.5", features = ["postgres", "metrics"] } +hammerwork = { version = "3", features = ["postgres", "metrics"] } # Only alerting -hammerwork = { version = "2.5", features = ["postgres", "alerting"] } +hammerwork = { version = "3", features = ["postgres", "alerting"] } # Metrics, alerting and the other optional subsystems -hammerwork = { version = "2.5", features = ["postgres", "full"] } +hammerwork = { version = "3", features = ["postgres", "full"] } ``` diff --git a/docs/quick-start.md b/docs/quick-start.md index 63c276e..662d672 100644 --- a/docs/quick-start.md +++ b/docs/quick-start.md @@ -21,16 +21,16 @@ Add Hammerwork to your `Cargo.toml`: ```toml [dependencies] # PostgreSQL support (no features are on by default; the queue only) -hammerwork = { version = "2.5", features = ["postgres"] } +hammerwork = { version = "3", features = ["postgres"] } # MySQL support -hammerwork = { version = "2.5", features = ["mysql"] } +hammerwork = { version = "3", features = ["mysql"] } # With distributed tracing -hammerwork = { version = "2.5", features = ["postgres", "tracing"] } +hammerwork = { version = "3", features = ["postgres", "tracing"] } # Metrics, alerting, webhooks, streaming, tracing and encryption together -hammerwork = { version = "2.5", features = ["postgres", "full"] } +hammerwork = { version = "3", features = ["postgres", "full"] } # Additional dependencies for examples. Your sqlx must be the same major # version as Hammerwork's (0.9), since you pass Hammerwork a sqlx pool. diff --git a/docs/testing.md b/docs/testing.md index 2cabdd8..c962997 100644 --- a/docs/testing.md +++ b/docs/testing.md @@ -25,7 +25,7 @@ Add TestQueue to your test dependencies: ```toml [dependencies] -hammerwork = { version = "2.5", features = ["test-queue"] } +hammerwork = { version = "3", features = ["test-queue"] } [dev-dependencies] tokio-test = "0.4" diff --git a/docs/tracing.md b/docs/tracing.md index baa192d..72002c1 100644 --- a/docs/tracing.md +++ b/docs/tracing.md @@ -19,7 +19,7 @@ The trace fields (`with_trace_id`, `with_correlation_id`, ...) are available on ```toml [dependencies] -hammerwork = { version = "2.5", features = ["postgres", "tracing"] } +hammerwork = { version = "3", features = ["postgres", "tracing"] } ``` ### Initialize Tracing diff --git a/hammerwork-web/README.md b/hammerwork-web/README.md index 6212e67..76ec7d5 100644 --- a/hammerwork-web/README.md +++ b/hammerwork-web/README.md @@ -123,9 +123,9 @@ Add to your `Cargo.toml`: ```toml [dependencies] -hammerwork-web = { version = "2.5", features = ["postgres"] } +hammerwork-web = { version = "3", features = ["postgres"] } # or for MySQL: -# hammerwork-web = { version = "2.5", features = ["mysql"] } +# hammerwork-web = { version = "3", features = ["mysql"] } ``` ### Programmatic Usage