primitives: Bump the version to 1.0.0-rc.0
What changed, and why it matters
This commit is a routine release-preparation change. It bumps the version number of the `bitcoin-primitives` crate from 0.101.0 to 1.0.0-rc.0, updates two lockfiles, and adds a long changelog entry describing past improvements. No code behavior is changed, and there is no security fix or vulnerability introduced in the diff itself.
No security action required. Treat as normal release bookkeeping.
Security signals we found
No strong security signals were identified.
Evidence from the diff
The diff only modifies metadata and documentation: primitives/Cargo.toml version bump and an added version field for the local internals dependency; Cargo-minimal.lock and Cargo-recent.lock synchronized to bitcoin-primitives = 1.0.0-rc.0; and primitives/CHANGELOG.md expanded with a rolling changelog for the upcoming 1.0.0 release. No Rust source files are touched. The changelog mentions historical items such as an off-by-one locktime fix and a witness bug fix, but those are references to earlier, already-merged work, not changes made by this commit.
Changed components
primitives/Cargo.tomlCargo-minimal.lockCargo-recent.lockprimitives/CHANGELOG.mdInspect captured patch +71 / −6
diff --git a/Cargo-minimal.lock b/Cargo-minimal.lock
index 7088a16e..32ad80d9 100644
--- a/Cargo-minimal.lock
+++ b/Cargo-minimal.lock
@@ -132,7 +132,7 @@ dependencies = [
[[package]]
name = "bitcoin-primitives"
-version = "0.101.0"
+version = "1.0.0-rc.0"
dependencies = [
"arbitrary",
"arrayvec",
diff --git a/Cargo-recent.lock b/Cargo-recent.lock
index 6aefec07..594aedd3 100644
--- a/Cargo-recent.lock
+++ b/Cargo-recent.lock
@@ -131,7 +131,7 @@ dependencies = [
[[package]]
name = "bitcoin-primitives"
-version = "0.101.0"
+version = "1.0.0-rc.0"
dependencies = [
"arbitrary",
"arrayvec",
diff --git a/primitives/CHANGELOG.md b/primitives/CHANGELOG.md
index 762bd9c1..5184c49e 100644
--- a/primitives/CHANGELOG.md
+++ b/primitives/CHANGELOG.md
@@ -1,3 +1,70 @@
+# 1.0.0 - 2025-10-18
+
+This changelog is a rolling description of everything that will eventually end up in `v1.0`.
+
+There are a bunch of changes in this stable release, of note script
+tagging and the consensus encoding re-write.
+
+- Introduce script tagging [#4907](https://github.com/rust-bitcoin/rust-bitcoin/pull/4907)
+- Introduce pull encoding and use it for blockhash computation [#4912](https://github.com/rust-bitcoin/rust-bitcoin/pull/4912)
+- Implement `Encodable` for `&Script<T>` [#4978](https://github.com/rust-bitcoin/rust-bitcoin/pull/4978)
+
+And also we did:
+
+- Remove `hashes` from the public API [#4935](https://github.com/rust-bitcoin/rust-bitcoin/pull/4935)
+- 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)
+- Rename `units::parse` to `parse_int` [#4886](https://github.com/rust-bitcoin/rust-bitcoin/pull/4886)
+- Introduce `Ntxid` [#4839](https://github.com/rust-bitcoin/rust-bitcoin/pull/4839)
+- Remove `serde` impls from some primitive types [#4806](https://github.com/rust-bitcoin/rust-bitcoin/pull/48064806)
+- Pluralize transaction fields [#4788](https://github.com/rust-bitcoin/rust-bitcoin/pull/4788)
+- Use `CompactSize` instead of `VarInt` [#4790](https://github.com/rust-bitcoin/rust-bitcoin/pull/4790)
+- Do not derive `Default` on `CompactTarget` [#4561](https://github.com/rust-bitcoin/rust-bitcoin/pull/4561)
+- Deserialize witness from a list of hex strings [#4366](https://github.com/rust-bitcoin/rust-bitcoin/pull/4366)
+- Implement `FromIterator` for `Witness` [#4365](https://github.com/rust-bitcoin/rust-bitcoin/pull/4365)
+- Return `ControlBlock` from `Witness::taproot_control_block` [#4281](https://github.com/rust-bitcoin/rust-bitcoin/pull/4281)
+- Witness api improvements and test cleanups [#4279](https://github.com/rust-bitcoin/rust-bitcoin/pull/4279)
+- Implement `Display` for `Header` [#4269](https://github.com/rust-bitcoin/rust-bitcoin/pull/4269)
+- Make `hex` optional [#4262](https://github.com/rust-bitcoin/rust-bitcoin/pull/4262)
+- Clean up Witness API [#4186](https://github.com/rust-bitcoin/rust-bitcoin/pull/4186)
+- Move `taproot` back to `bitcoin` crate [#4129](https://github.com/rust-bitcoin/rust-bitcoin/pull/4129)
+- Make `transaction::Version` field private [#4099](https://github.com/rust-bitcoin/rust-bitcoin/pull/4099)
+- Hide error internals [#4091](https://github.com/rust-bitcoin/rust-bitcoin/pull/4091)
+- locktimes: Remove `PartialOrd` and `ArbitraryOrd` [#4065](https://github.com/rust-bitcoin/rust-bitcoin/pull/4065)
+- Make `Debug` representation of `Witness` to be slice of hex-encoded
+ bytes strings to improve readability [#4061](https://github.com/rust-bitcoin/rust-bitcoin/pull/4061)
+- Implement `Default` for `Script` [#4043](https://github.com/rust-bitcoin/rust-bitcoin/pull/4043)
+- Store `transaction::Version` as `u32` instead of `i32` [#4040](https://github.com/rust-bitcoin/rust-bitcoin/pull/4040)
+- Delete `TxOut::NULL` [#3978](https://github.com/rust-bitcoin/rust-bitcoin/pull/3978)
+- Reduce alloc requirements [#3711](https://github.com/rust-bitcoin/rust-bitcoin/pull/3711)
+- Remove `serde` from amounts [#3672](https://github.com/rust-bitcoin/rust-bitcoin/pull/3672)
+- Fix bug in witness stack getters [#3601](https://github.com/rust-bitcoin/rust-bitcoin/pull/3601)
+- Re-design and move `Block` to `primitives` [#3582](https://github.com/rust-bitcoin/rust-bitcoin/pull/3582)
+- Re-export `block::Header` as `BlockHeader` [#3562](https://github.com/rust-bitcoin/rust-bitcoin/pull/3562)
+- Favour `to_vec` over `to_bytes` [#3544](https://github.com/rust-bitcoin/rust-bitcoin/pull/3544)
+
+## Locktimes
+
+Lock times got a bit of work. A big win was:
+
+- Improve lock times - fix off-by-one bug #4468
+
+There was a bit of churn so we are not listing all the PRs. Better
+just to take a look at the new and improved API.
+
+If you persist locktimes using `serde` you may want to look at because
+we changed the format:
+
+- Modify locktime serde implementations #4511
+
+## Arbitrary
+
+- Add Arbitrary impl for BlockHash, TxMerkleNode, and Wtxid #4720
+- Add Arbitrary impl for relative::LockTime #4689
+
+## Mutation testing
+
+The whole crate is mutation tested using `cargo-mutants` - BOOM!
+
# 0.101.0 - 2024-11-15
This is the first "real" release of the `primitives` crate, as such it
diff --git a/primitives/Cargo.toml b/primitives/Cargo.toml
index 5370e8cb..9bd33c1e 100644
--- a/primitives/Cargo.toml
+++ b/primitives/Cargo.toml
@@ -1,8 +1,6 @@
[package]
name = "bitcoin-primitives"
-# Arbitrary high version number so as to not clash with the original
-# `bitcoin-primitives` crate that we replaced `v0.1.16-alpha`.
-version = "0.101.0"
+version = "1.0.0-rc.0"
authors = ["Andrew Poelstra <apoelstra@wpsoftware.net>", "Tobin C. Harding <me@tobin.cc>"]
license = "CC0-1.0"
repository = "https://github.com/rust-bitcoin/rust-bitcoin"
@@ -25,7 +23,7 @@ hex = ["dep:hex", "hashes/hex", "internals/hex"]
[dependencies]
encoding = { package = "bitcoin-consensus-encoding", path = "../consensus_encoding", version = "1.0.0-rc.1", default-features = false }
hashes = { package = "bitcoin_hashes", path = "../hashes", version = "0.17.0", default-features = false }
-internals = { package = "bitcoin-internals", path = "../internals" }
+internals = { package = "bitcoin-internals", path = "../internals", version = "0.4.1" }
units = { package = "bitcoin-units", path = "../units", version = "1.0.0-rc.2", 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.