Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 18 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down
10 changes: 5 additions & 5 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 2 additions & 2 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand All @@ -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"] }
Expand Down
14 changes: 7 additions & 7 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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**
Expand Down Expand Up @@ -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:
Expand Down
8 changes: 4 additions & 4 deletions docs/monitoring.md
Original file line number Diff line number Diff line change
Expand Up @@ -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"] }
```
8 changes: 4 additions & 4 deletions docs/quick-start.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down
2 changes: 1 addition & 1 deletion docs/testing.md
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down
2 changes: 1 addition & 1 deletion docs/tracing.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
4 changes: 2 additions & 2 deletions hammerwork-web/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
Loading