What changed, and why it matters
This commit is a routine release preparation: it bumps the version number of the `bitcoin_hashes` crate from 0.16.0 to 0.17.0, updates the changelog, and refreshes lock files and dependency version constraints in related crates. There are no code changes, bug fixes, or security-related modifications in the diff.
No security action needed. Treat as normal release bookkeeping.
Security signals we found
No strong security signals were identified.
Evidence from the diff
The commit updates hashes/Cargo.toml version to 0.17.0, propagates that version to bitcoin/Cargo.toml, consensus_encoding/Cargo.toml, and primitives/Cargo.toml, and regenerates Cargo-minimal.lock and Cargo-recent.lock to reference bitcoin_hashes 0.17.0. The changelog lists new features and API changes for the 0.17.0 release, such as MSRV bump, new SHA3-256 module, trait removals, and dependency inversions. None of these are security patches or vulnerability fixes.
Changed components
bitcoin_hashes crate version metadataworkspace Cargo.lock filesdependent crate Cargo.toml version constraintsInspect captured patch +33 / −18
diff --git a/Cargo-minimal.lock b/Cargo-minimal.lock
index 576e7a81..95b5681c 100644
--- a/Cargo-minimal.lock
+++ b/Cargo-minimal.lock
@@ -19,7 +19,7 @@ name = "base58ck"
version = "0.2.0"
dependencies = [
"bitcoin-internals",
- "bitcoin_hashes 0.16.0",
+ "bitcoin_hashes 0.17.0",
"hex_lit",
]
@@ -58,7 +58,7 @@ dependencies = [
"bitcoin-io 0.2.0",
"bitcoin-primitives",
"bitcoin-units",
- "bitcoin_hashes 0.16.0",
+ "bitcoin_hashes 0.17.0",
"bitcoinconsensus",
"hex-conservative 0.3.0",
"hex_lit",
@@ -77,7 +77,7 @@ name = "bitcoin-consensus-encoding"
version = "1.0.0-rc.0"
dependencies = [
"bitcoin-internals",
- "bitcoin_hashes 0.16.0",
+ "bitcoin_hashes 0.17.0",
]
[[package]]
@@ -113,7 +113,7 @@ name = "bitcoin-io"
version = "0.2.0"
dependencies = [
"bitcoin-internals",
- "bitcoin_hashes 0.16.0",
+ "bitcoin_hashes 0.17.0",
]
[[package]]
@@ -125,7 +125,7 @@ dependencies = [
"bitcoin-internals",
"bitcoin-io 0.2.0",
"bitcoin-units",
- "bitcoin_hashes 0.16.0",
+ "bitcoin_hashes 0.17.0",
"hex-conservative 0.3.0",
"hex_lit",
]
@@ -140,7 +140,7 @@ dependencies = [
"bitcoin-consensus-encoding",
"bitcoin-internals",
"bitcoin-units",
- "bitcoin_hashes 0.16.0",
+ "bitcoin_hashes 0.17.0",
"hex-conservative 0.3.0",
"hex_lit",
"serde",
@@ -172,7 +172,7 @@ dependencies = [
[[package]]
name = "bitcoin_hashes"
-version = "0.16.0"
+version = "0.17.0"
dependencies = [
"bitcoin-internals",
"hex-conservative 0.3.0",
diff --git a/Cargo-recent.lock b/Cargo-recent.lock
index 322bc54a..7a2ff128 100644
--- a/Cargo-recent.lock
+++ b/Cargo-recent.lock
@@ -19,7 +19,7 @@ name = "base58ck"
version = "0.2.0"
dependencies = [
"bitcoin-internals",
- "bitcoin_hashes 0.16.0",
+ "bitcoin_hashes 0.17.0",
"hex_lit",
]
@@ -57,7 +57,7 @@ dependencies = [
"bitcoin-io 0.2.0",
"bitcoin-primitives",
"bitcoin-units",
- "bitcoin_hashes 0.16.0",
+ "bitcoin_hashes 0.17.0",
"bitcoinconsensus",
"hex-conservative 0.3.0",
"hex_lit",
@@ -76,7 +76,7 @@ name = "bitcoin-consensus-encoding"
version = "1.0.0-rc.0"
dependencies = [
"bitcoin-internals",
- "bitcoin_hashes 0.16.0",
+ "bitcoin_hashes 0.17.0",
]
[[package]]
@@ -112,7 +112,7 @@ name = "bitcoin-io"
version = "0.2.0"
dependencies = [
"bitcoin-internals",
- "bitcoin_hashes 0.16.0",
+ "bitcoin_hashes 0.17.0",
]
[[package]]
@@ -124,7 +124,7 @@ dependencies = [
"bitcoin-internals",
"bitcoin-io 0.2.0",
"bitcoin-units",
- "bitcoin_hashes 0.16.0",
+ "bitcoin_hashes 0.17.0",
"hex-conservative 0.3.0",
"hex_lit",
]
@@ -139,7 +139,7 @@ dependencies = [
"bitcoin-consensus-encoding",
"bitcoin-internals",
"bitcoin-units",
- "bitcoin_hashes 0.16.0",
+ "bitcoin_hashes 0.17.0",
"hex-conservative 0.3.0",
"hex_lit",
"serde",
@@ -171,7 +171,7 @@ dependencies = [
[[package]]
name = "bitcoin_hashes"
-version = "0.16.0"
+version = "0.17.0"
dependencies = [
"bitcoin-internals",
"hex-conservative 0.3.0",
diff --git a/bitcoin/Cargo.toml b/bitcoin/Cargo.toml
index 30d0f3c9..680a1f4c 100644
--- a/bitcoin/Cargo.toml
+++ b/bitcoin/Cargo.toml
@@ -28,7 +28,7 @@ arbitrary = ["dep:arbitrary", "units/arbitrary", "primitives/arbitrary"]
[dependencies]
base58 = { package = "base58ck", path = "../base58", default-features = false, features = ["alloc"] }
bech32 = { version = "0.11.0", default-features = false, features = ["alloc"] }
-hashes = { package = "bitcoin_hashes", path = "../hashes", default-features = false, features = ["alloc", "hex"] }
+hashes = { package = "bitcoin_hashes", path = "../hashes", version = "0.17.0", default-features = false, features = ["alloc", "hex"] }
hex = { package = "hex-conservative", version = "0.3.0", default-features = false, features = ["alloc"] }
internals = { package = "bitcoin-internals", path = "../internals", features = ["alloc", "hex"] }
io = { package = "bitcoin-io", path = "../io", default-features = false, features = ["alloc", "hashes"] }
diff --git a/consensus_encoding/Cargo.toml b/consensus_encoding/Cargo.toml
index 15f2fc99..8da046fe 100644
--- a/consensus_encoding/Cargo.toml
+++ b/consensus_encoding/Cargo.toml
@@ -18,7 +18,7 @@ std = ["alloc", "internals/std"]
alloc = ["internals/alloc"]
[dependencies]
-hashes = { package = "bitcoin_hashes", path = "../hashes", version = "0.16.0", default-features = false }
+hashes = { package = "bitcoin_hashes", path = "../hashes", version = "0.17.0", default-features = false }
internals = { package = "bitcoin-internals", path = "../internals", version = "0.4.0" }
[package.metadata.docs.rs]
diff --git a/hashes/CHANGELOG.md b/hashes/CHANGELOG.md
index bd9aed73..e37cce31 100644
--- a/hashes/CHANGELOG.md
+++ b/hashes/CHANGELOG.md
@@ -1,3 +1,18 @@
+# 0.17.0 - 2025-10-17
+
+* Bump MSRV from 1.63.0 to 1.74.0 for all crates in the repo [#4926](https://github.com/rust-bitcoin/rust-bitcoin/pull/4926)
+* Add a `sha3_256` module with `SHA3-256` [#4919](https://github.com/rust-bitcoin/rust-bitcoin/pull/4919)
+* Remove code deprecated in `v0.15.0` [#4840](https://github.com/rust-bitcoin/rust-bitcoin/pull/4840)
+* Update `serde` dependency to match workspace [#4321](https://github.com/rust-bitcoin/rust-bitcoin/pull/4321)
+* Remove `From<hash>` for not-general-hash types [#4128 ](https://github.com/rust-bitcoin/rust-bitcoin/pull/4128)
+* Remove the `GeneralHash` trait [#4085](https://github.com/rust-bitcoin/rust-bitcoin/pull/4085)
+* Only enable `hex`/`std`, and `hex`/`alloc` when `hex` is [#4055](https://github.com/rust-bitcoin/rust-bitcoin/pull/4055)
+* Derive `Debug` for all hash engines [#4015](https://github.com/rust-bitcoin/rust-bitcoin/pull/4015)
+* Add a tagged hash engine [#4010](https://github.com/rust-bitcoin/rust-bitcoin/pull/4010)
+* Add engine function to `siphash24::Hash` [#4003](https://github.com/rust-bitcoin/rust-bitcoin/pull/4003)
+* Do not implement `Default` for `HmacEngine` [#3981](https://github.com/rust-bitcoin/rust-bitcoin/pull/3981)
+* Invert dependency between `io` and `hashes` [#3961](https://github.com/rust-bitcoin/rust-bitcoin/pull/3961)
+
# 0.16.0 - 2024-12-12
* Make `hex-conservative` an optional dependency [#3611](https://github.com/rust-bitcoin/rust-bitcoin/pull/3611)
diff --git a/hashes/Cargo.toml b/hashes/Cargo.toml
index 86c944de..924ad583 100644
--- a/hashes/Cargo.toml
+++ b/hashes/Cargo.toml
@@ -1,6 +1,6 @@
[package]
name = "bitcoin_hashes"
-version = "0.16.0"
+version = "0.17.0"
authors = ["Andrew Poelstra <apoelstra@wpsoftware.net>"]
license = "CC0-1.0"
repository = "https://github.com/rust-bitcoin/rust-bitcoin"
diff --git a/primitives/Cargo.toml b/primitives/Cargo.toml
index ec989e0a..38366616 100644
--- a/primitives/Cargo.toml
+++ b/primitives/Cargo.toml
@@ -24,7 +24,7 @@ hex = ["dep:hex", "hashes/hex", "internals/hex"]
[dependencies]
encoding = { package = "bitcoin-consensus-encoding", path = "../consensus_encoding", version = "1.0.0-rc.0", default-features = false }
-hashes = { package = "bitcoin_hashes", path = "../hashes", default-features = false }
+hashes = { package = "bitcoin_hashes", path = "../hashes", version = "0.17.0", default-features = false }
internals = { package = "bitcoin-internals", path = "../internals" }
units = { package = "bitcoin-units", path = "../units", version = "1.0.0-rc.1", default-features = false, features = [ "encoding" ] }
arrayvec = { version = "0.7.2", default-features = false }
Why this scored 15/100
Community notes
Notes can correct, qualify, or add evidence to the AI analysis. Every note shown here has been validated by a human moderator.
The AI analysis stands alone for now. Submit a note if you can add evidence or important context.