Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
7808 commits
Select commit Hold shift + click to select a range
bbf36a0
hashes: add clippy::use_self lint
storopoli Oct 26, 2025
6826014
addresses: add clippy::use_self lint
storopoli Oct 26, 2025
1dc3100
internals: add clippy::use_self lint
storopoli Oct 26, 2025
d45a964
chacha20_poly1305: add clippy::use_self lint
storopoli Oct 26, 2025
7a970b1
consensus_encoding: add clippy::use_self lint
storopoli Oct 26, 2025
986382a
fuzz: add clippy::use_self lint
storopoli Oct 26, 2025
bc1f3c8
benches: add clippy::use_self lint
storopoli Oct 26, 2025
4c5ffff
Add unwrapping function to XOnlyPublicKey
mpbagot Oct 27, 2025
bae0c57
Add tests for XOnlyPublicKey functions
mpbagot Oct 27, 2025
31658bb
2025-11-02 automated rustfmt nightly
Nov 2, 2025
73ba650
Merge rust-bitcoin/rust-bitcoin#5200: clippy: add `use_self` lint to …
apoelstra Nov 2, 2025
32bf3c5
Merge rust-bitcoin/rust-bitcoin#5202: Add unwrapping function to XOnl…
apoelstra Nov 2, 2025
65c8135
Add a script that generates a Rust test to check re-exports
tcharding Jul 15, 2025
e520052
Add as_str method to Opcode
mpbagot Oct 31, 2025
a3bcaa7
Merge rust-bitcoin/rust-bitcoin#5233: Automated nightly rustfmt (2025…
apoelstra Nov 3, 2025
509414e
Merge rust-bitcoin/rust-bitcoin#4708: CI: Add job to check re-exports…
apoelstra Nov 3, 2025
106a8a9
ci: pin actions to tagged hashes
storopoli Nov 2, 2025
d0508a1
ci: add cooldown to dependabot
storopoli Nov 2, 2025
bbe1b79
ci: actions/checkout with persist-credentials false
storopoli Nov 2, 2025
594327b
ci: fix default permissions to none
storopoli Nov 2, 2025
fa3b4f6
ci: ignore zizmor dangerous triggers for PR writers
storopoli Nov 2, 2025
9468b45
ci: add cron-zizmor job
storopoli Nov 2, 2025
275c262
ci: add zizmor checks on PRs
storopoli Nov 2, 2025
886f6d6
io: Move pub re-export
tcharding Nov 3, 2025
671c301
Add test to kill mutant in current_chunk
jamillambert Nov 3, 2025
20ebf27
Add test to kill mutant in push_bytes
jamillambert Nov 4, 2025
d391298
Add test to kill mutant in decode_from_read
jamillambert Nov 4, 2025
3af0bb7
Move mutant exclude to correct crate section
jamillambert Oct 27, 2025
a8a008f
Make mutant exclusions crate specific
jamillambert Oct 27, 2025
f7830cf
Add mutant exclusions for consensus_encoding
jamillambert Nov 3, 2025
601194b
Add consensus_encoding to mutation testing
jamillambert Nov 3, 2025
23c3036
Merge rust-bitcoin/rust-bitcoin#5231: Convert encoder/decoder constru…
apoelstra Nov 4, 2025
845c1f1
Merge rust-bitcoin/rust-bitcoin#5236: io: Move pub re-export
apoelstra Nov 4, 2025
54ce29f
Fuzz with latest MSRV
tcharding Nov 5, 2025
5abb369
Add back quick and dirty just recipes
nyonson Nov 3, 2025
f2fcb85
Upgrade maintainer tools and add quiet mode
nyonson Nov 4, 2025
df64705
primitives: single allocation witness decoder
nyonson Nov 3, 2025
5ecef4b
refactor: enable redundant_clone lint and fix warnings
klaxonsn Nov 4, 2025
5a6d089
CI: Fix release script
tcharding Nov 5, 2025
d17e215
Merge rust-bitcoin/rust-bitcoin#5240: Mutation test `consensus_encoding`
apoelstra Nov 6, 2025
3ff5bd9
Merge rust-bitcoin/rust-bitcoin#5225: Add as_str method to Opcode
apoelstra Nov 6, 2025
fe5c504
Merge rust-bitcoin/rust-bitcoin#5234: ci: add Zizmor
apoelstra Nov 6, 2025
cc226b7
Merge rust-bitcoin/rust-bitcoin#5244: Fuzz with latest MSRV
apoelstra Nov 6, 2025
ed8414c
Add a section about LLMs to the contributing file
tcharding Nov 6, 2025
bc7c8e1
Merge rust-bitcoin/rust-bitcoin#5241: Upgrade maintainer tools and re…
apoelstra Nov 6, 2025
0001850
Automated update to Github CI to rustc stable-1.91.0
Nov 7, 2025
804c1d0
Merge rust-bitcoin/rust-bitcoin#5252: Add a section about LLMs to the…
apoelstra Nov 7, 2025
95fa269
Merge rust-bitcoin/rust-bitcoin#5228: consensus_encoding: Introduce A…
apoelstra Nov 7, 2025
879db6e
Merge rust-bitcoin/rust-bitcoin#5226: Automated weekly update to rust…
apoelstra Nov 7, 2025
b19f238
Merge rust-bitcoin/rust-bitcoin#5239: primitives: single allocation w…
apoelstra Nov 7, 2025
b3a5f82
Merge rust-bitcoin/rust-bitcoin#5210: refactor: enable redundant_clon…
apoelstra Nov 7, 2025
a3b9108
Run the API checker script
tcharding Nov 8, 2025
4b8f599
Merge rust-bitcoin/rust-bitcoin#5264: Run the API checker script
apoelstra Nov 10, 2025
c4981d1
Merge rust-bitcoin/rust-bitcoin#5247: CI: Fix release script
apoelstra Nov 10, 2025
b7aa867
Add exception for resize_if_needed mutant
jamillambert Nov 10, 2025
e85045e
Delete empty file
tcharding Oct 15, 2025
3c49072
Upgrade secp to 0.31.1
tcharding Sep 9, 2025
81a91f4
doc: Add agents.md
jrakibi Nov 6, 2025
de13965
Clarify feature gate on impl_to_hex_from_lower_hex macro
mpbagot Nov 11, 2025
7061fdb
chore(docs): remove `act` from CI Pipeline section on README
luisschwab Nov 11, 2025
72cf87c
Merge rust-bitcoin/rust-bitcoin#5251: doc: Add agents.md
apoelstra Nov 11, 2025
c5a6929
Merge rust-bitcoin/rust-bitcoin#5278: chore(docs): remove `act` from …
apoelstra Nov 11, 2025
df02be7
Fix lint warnings after upgrade to secp 0.31
tcharding Sep 9, 2025
f47d7a1
bitcoin: Add explicit version numbers to deps
tcharding Oct 28, 2025
7888b60
doc: Add version document
tcharding Nov 10, 2025
4fa296a
Add an iterator to yield the bytes of an encoded object
mpbagot Nov 7, 2025
b7cb088
Add iterator tests for EncodableByteIter
mpbagot Nov 7, 2025
ade28c2
Merge rust-bitcoin/rust-bitcoin#5277: Clarify feature gate on impl_to…
apoelstra Nov 11, 2025
991dfdf
Merge rust-bitcoin/rust-bitcoin#5274: doc: Add version document
apoelstra Nov 12, 2025
bc6bdcf
Merge rust-bitcoin/rust-bitcoin#5273: Add exception for `resize_if_ne…
apoelstra Nov 12, 2025
83f1c82
Re-name primitives re-export test
tcharding Nov 10, 2025
4f0ac3a
bitcoin: Fix all primitives re-exports
tcharding Nov 10, 2025
e7bd225
Add a script for checking bitcoin re-exports primitives stuff
tcharding Nov 10, 2025
7d8172e
Create an empty crypto crate
tcharding Nov 13, 2025
0e5f901
Remove redundant array allocation and copy in OutPointDecoder
mpbagot Nov 13, 2025
1f7969f
primitives: handle zero-input transactions
nyonson Nov 13, 2025
6f1f17b
Change PhantomData field names to _marker
mpbagot Nov 16, 2025
d29c67a
bitcoin: Lower initial allocation for Vec Decoder
mpbagot Nov 16, 2025
5489749
p2p: Lower initial allocation for Vec Decoder
mpbagot Nov 16, 2025
5890907
primitives: Implement BlockDecoder for Block
mpbagot Nov 14, 2025
197e8c7
units: Add standard_check fuzz test
mpbagot Nov 6, 2025
0452a93
consensus_encoding: implement batched allocation for VecDecoder and `…
jrakibi Oct 30, 2025
b80a0cc
Change PushBytes::read_scriptint to i32 return type
mpbagot Nov 16, 2025
2328da5
Depend on secp256k1-0.32.0-beta.2
tcharding Oct 18, 2025
9a1b408
Fix lint warnings after upgrade to secp-0.32.0-beta.2
tcharding Sep 9, 2025
648e5f8
Remove the secp context
tcharding Oct 29, 2025
608937b
Merge rust-bitcoin/rust-bitcoin#5302: Change PushBytes::read_scriptin…
apoelstra Nov 20, 2025
5eacdfb
Add new error type for PushBytes::read_scriptint
mpbagot Nov 8, 2025
f86840b
Allow underscores as separators in Amount values
mpbagot Nov 20, 2025
e0a2240
Merge rust-bitcoin/rust-bitcoin#4959: Upgrade `secp256k1` to `v0.32.0…
apoelstra Nov 20, 2025
0c67ca8
Merge rust-bitcoin/rust-bitcoin#5295: Change PhantomData field names …
apoelstra Nov 20, 2025
1ac48a5
Merge rust-bitcoin/rust-bitcoin#5296: Lower initial allocation for Ve…
apoelstra Nov 20, 2025
28a89e4
Merge rust-bitcoin/rust-bitcoin#5177: consensus_encoding: implement b…
apoelstra Nov 20, 2025
061a484
ci: free bloat for MSRV job
nyonson Nov 20, 2025
ba55cb4
Merge rust-bitcoin/rust-bitcoin#5291: primitives: Implement BlockDeco…
apoelstra Nov 20, 2025
edccc68
Merge rust-bitcoin/rust-bitcoin#5310: ci: free bloat for MSRV job
apoelstra Nov 20, 2025
45d3f18
io: Make traits dyn compatible
tcharding Nov 4, 2025
643f79c
Automated update to Github CI to rustc stable-1.91.1
Nov 21, 2025
e0cbd40
Implement Encodable for slices
mpbagot Nov 19, 2025
4eb1639
Update CHANGELOG.md
maradini77 Nov 21, 2025
152188e
Merge rust-bitcoin/rust-bitcoin#5249: io: Make traits dyn compatible
apoelstra Nov 21, 2025
85fccd6
Drop rand-std feature flag
nyonson Nov 14, 2025
2a99a06
Merge rust-bitcoin/rust-bitcoin#5265: Add new error type for PushByte…
apoelstra Nov 21, 2025
029b7a4
Merge rust-bitcoin/rust-bitcoin#5250: units: Add standard_check fuzz …
apoelstra Nov 21, 2025
b7c2e08
fuzz: Update generate_files.sh for current targets
mpbagot Nov 17, 2025
8bba71f
Merge rust-bitcoin/rust-bitcoin#5272: Check `bitcoin` re-exports are …
apoelstra Nov 21, 2025
c6e3b5f
Automated update to Github CI to cargo-semver-checks version-0.45.0
Nov 22, 2025
b084993
Merge rust-bitcoin/rust-bitcoin#5297: fuzz: Update generate_files.sh …
apoelstra Nov 23, 2025
61ade91
chore: fix incorrect reference in comments
Snezhkko Nov 23, 2025
1f80639
Skip formatting byte arrays
tcharding Nov 23, 2025
0cab47c
io: Add decoding functions
tcharding Oct 28, 2025
dba9d48
crypto: Fix taproot module docs
tcharding Nov 13, 2025
b906245
crypto: Re-order taproot::Signature methods
tcharding Nov 13, 2025
df89db7
Move the SerializedSignature to cryto module
tcharding Nov 13, 2025
fa57e88
Move ecdsa::SerializedSignature impls
tcharding Nov 13, 2025
a2a69ce
Add Lower/UperHex impls for taproot::SerializedSignature
tcharding Nov 13, 2025
e903d12
Add equality impls to ecdsa::SerializedSignature
tcharding Nov 13, 2025
ff0841a
Move ecdsa reference impls
tcharding Nov 13, 2025
8eb3645
Remove mutable impls from ecdsa SerializedSignature
tcharding Nov 18, 2025
c5f08f5
Only return valid data in sig slice
tcharding Nov 18, 2025
39a50dd
Move/add From<PushBytes> for SerializedSignature
tcharding Nov 18, 2025
bbc5772
Import core types
tcharding Nov 18, 2025
a098184
ecdsa: Add to/from_signature, len, and iter
tcharding Nov 18, 2025
5890ed9
Remove wildcard Error imports
jamillambert Nov 21, 2025
4985e20
Run cargo format
jamillambert Nov 21, 2025
db0615c
Merge rust-bitcoin/rust-bitcoin#5290: Automated weekly update to rust…
apoelstra Nov 23, 2025
769dcd9
Merge rust-bitcoin/rust-bitcoin#5320: Skip formatting byte arrays
apoelstra Nov 24, 2025
8957af1
Merge rust-bitcoin/rust-bitcoin#5283: Create an empty `crypto` crate
apoelstra Nov 25, 2025
1122861
Add in diff cargo-mutants CI workflow
benalleng Oct 7, 2025
f15617a
Merge rust-bitcoin/rust-bitcoin#5288: primitives: handle decoding zer…
apoelstra Nov 25, 2025
5cfaf12
Merge rust-bitcoin/rust-bitcoin#5312: Remove error wildcard imports
apoelstra Nov 25, 2025
ec2510f
Merge rust-bitcoin/rust-bitcoin#5293: Drop rand-std feature flag
apoelstra Nov 25, 2025
0390086
Merge rust-bitcoin/rust-bitcoin#5287: Remove redundant array allocati…
apoelstra Nov 25, 2025
7c5a5a9
Merge rust-bitcoin/rust-bitcoin#5306: Implement Encodable for slices
apoelstra Nov 26, 2025
a9f54c6
units: Replace manual ceil division with div_ceil
mpbagot Nov 26, 2025
af96c9b
Merge rust-bitcoin/rust-bitcoin#5309: Allow underscores as separators…
apoelstra Nov 26, 2025
2c66b7d
Merge rust-bitcoin/rust-bitcoin#5311: Fix typo in CHANGELOG.md
apoelstra Nov 26, 2025
c85c205
Merge rust-bitcoin/rust-bitcoin#5294: Automated weekly update to carg…
apoelstra Nov 26, 2025
11d3f37
Add decode test for reserve capacity
jamillambert Nov 25, 2025
4f500b8
consensus_encoding: Bump version to 1.0.0-rc.2
tcharding Nov 27, 2025
48a2e5c
docs(crates): add consensus_encoding and crypto to current crates
Bashmunta Nov 27, 2025
262e9ee
Merge rust-bitcoin/rust-bitcoin#5299: Improve the `SerializedSignatur…
apoelstra Nov 27, 2025
fb9e528
Merge rust-bitcoin/rust-bitcoin#5319: chore: fix incorrect reference …
apoelstra Nov 27, 2025
a09dbbf
Merge rust-bitcoin/rust-bitcoin#5212: io: Add decoding functions
apoelstra Nov 27, 2025
9bc2919
Merge rust-bitcoin/rust-bitcoin#5332: units: Replace manual ceil divi…
apoelstra Nov 27, 2025
98b5777
units: Convert various functions to const
mpbagot Nov 4, 2025
ec9ec52
primitives: Convert various functions to const
mpbagot Nov 5, 2025
74e2ad3
Merge rust-bitcoin/rust-bitcoin#5338: Release tracking PR: `consensus…
apoelstra Nov 28, 2025
719ec15
Merge rust-bitcoin/rust-bitcoin#5256: Add an iterator that yields the…
apoelstra Nov 28, 2025
372b2a1
Merge rust-bitcoin/rust-bitcoin#5335: Add decode test for reserve cap…
apoelstra Nov 28, 2025
617507e
Merge rust-bitcoin/rust-bitcoin#5101: Add in diff cargo-mutants CI wo…
apoelstra Nov 29, 2025
3501653
Merge rust-bitcoin/rust-bitcoin#5329: docs(crates): add consensus_enc…
apoelstra Nov 29, 2025
31a07f1
docs(hashes): replace deprecated GeneralHash references
Bashmunta Nov 29, 2025
b486c83
Use usize for CompactSizeEncoder::new
mpbagot Nov 28, 2025
232cb1a
Merge rust-bitcoin/rust-bitcoin#5245: Convert functions to const in 1…
apoelstra Nov 30, 2025
00cef09
hashes: Remove FromSliceError
tcharding Nov 30, 2025
628a2c8
hashes: Bump version to 0.18.0
tcharding Nov 27, 2025
f241979
Merge rust-bitcoin/rust-bitcoin#5344: Use usize for CompactSizeEncode…
apoelstra Nov 30, 2025
b22b1ab
Merge rust-bitcoin/rust-bitcoin#5347: docs(hashes): replace deprecate…
apoelstra Dec 1, 2025
fd82512
Merge rust-bitcoin/rust-bitcoin#5339: Release tracking PR: `bitcoin_h…
apoelstra Dec 1, 2025
20cd232
Move `impl_array_newtype` to `internals`
rustaceanrob Nov 26, 2025
e900b44
io: Grab changelog from already release 0.1.3
tcharding Nov 30, 2025
306291f
io: Bump version to 0.3.0
tcharding Nov 30, 2025
a874123
primitives: Move MerkleNode and TxIdentifier into primitives
mpbagot Nov 23, 2025
56c5423
Merge rust-bitcoin/rust-bitcoin#5346: primitives: Move MerkleNode and…
apoelstra Dec 1, 2025
616d0a1
Merge rust-bitcoin/rust-bitcoin#5334: Move `impl_array_newtype` to `i…
apoelstra Dec 1, 2025
f26ca15
Merge rust-bitcoin/rust-bitcoin#5349: Release tracking PR: `bitcoin-i…
apoelstra Dec 2, 2025
d325c29
primitives: Move is_coinbase into primitives
mpbagot Nov 23, 2025
8b31d65
primitives: Add consensus encoding traits for WitnessMerkleNode
mpbagot Nov 23, 2025
c391f2b
Move BlockUncheckedExt functions to Block<Unchecked> impl
mpbagot Nov 23, 2025
22126fe
io: Add version number to all dependencies
tcharding Dec 4, 2025
5f01039
Add 0.32.6 and 0.32.7 bitcoin changelog
mpbagot Dec 4, 2025
a5696d2
Merge rust-bitcoin/rust-bitcoin#5318: Move BlockUncheckedExt function…
apoelstra Dec 4, 2025
650fc15
Merge rust-bitcoin/rust-bitcoin#5361: io: Add version number to all d…
apoelstra Dec 4, 2025
4c65ce7
Add pop to ArrayVec
mpbagot Dec 2, 2025
cc0da4c
Remove alloc feature gate for MerkleNode
mpbagot Dec 2, 2025
4f44b1d
Merge rust-bitcoin/rust-bitcoin#5364: Add 0.32.6 and 0.32.7 bitcoin c…
apoelstra Dec 5, 2025
33a01c0
Merge rust-bitcoin/rust-bitcoin#5356: Remove alloc feature gate for M…
apoelstra Dec 5, 2025
e242dd6
Move `bip152` to `p2p`
rustaceanrob Dec 5, 2025
6d95f4e
p2p: add FeeFilter wrapper with consensus_encoding
nyonson Dec 2, 2025
4c249f7
p2p: add consensus_encoding impls to CommandString
nyonson Dec 3, 2025
213b85b
p2p: remove io::Error from exposed API
nyonson Dec 2, 2025
4671923
p2p: add consensus_encoding to v1 network message
nyonson Dec 3, 2025
209bb7c
Move generic impls of NumOpResult<T>
mpbagot Dec 5, 2025
456aad1
Add generic Sub/AddAssign impl over NumOpResult
mpbagot Dec 5, 2025
d9288ba
Add Sub/AddAssign impl for NumOpResult<Amount/SignedAmount>
mpbagot Dec 5, 2025
84c554f
units: add `too_many_lines` clippy whitelist to `parse_signed_to_sato…
apoelstra Dec 7, 2025
710d644
hashes: silence new `unused-assignments` clippy lint
apoelstra Dec 7, 2025
6df4240
internals: Add changelog for 0.4.1 release
tcharding Dec 7, 2025
fb65b56
internals: Bump version to 0.4.2
tcharding Dec 7, 2025
4abc454
units: Remove deprecated calls in absolute locktime code
tcharding Dec 7, 2025
e8f1100
units: Stop using deprecated types
tcharding Dec 7, 2025
d19605c
units: Set TBD in deprecate attribute
tcharding Dec 7, 2025
3b70bda
units: Pin RC dependency
tcharding Dec 7, 2025
41a9734
Release tracking PR: `units v1.0.0-rc.3`
tcharding Dec 4, 2025
ecff47b
Merge rust-bitcoin/rust-bitcoin#5370: Add Sub/AddAssign impl for NumO…
apoelstra Dec 8, 2025
2dfd66e
Merge rust-bitcoin/rust-bitcoin#5376: hashes: silence new `unused-ass…
apoelstra Dec 8, 2025
627f9f2
Merge rust-bitcoin/rust-bitcoin#5375: units: add `too_many_lines` cli…
apoelstra Dec 8, 2025
8142980
feat: Address::p2a
uncomputable Dec 8, 2025
8efa42f
Merge rust-bitcoin/rust-bitcoin#5372: Simple move of `bip152` to `p2p`
apoelstra Dec 8, 2025
b2cc3fd
Merge rust-bitcoin/rust-bitcoin#5289: p2p: introduce consensus_encodi…
apoelstra Dec 8, 2025
054d758
Merge rust-bitcoin/rust-bitcoin#5377: Release tracking PR: `internals…
apoelstra Dec 8, 2025
d8bf0a8
Merge rust-bitcoin/rust-bitcoin#5379: feat: Address::p2a
apoelstra Dec 9, 2025
47fe9ce
Create empty `bip158` crate
rustaceanrob Dec 9, 2025
a89b52d
Merge rust-bitcoin/rust-bitcoin#5363: Release tracking PR: `units v1.…
apoelstra Dec 9, 2025
55a00ae
Pin all RC dependencies
tcharding Dec 9, 2025
64c9298
primitives: Remove deprecated type from API test
tcharding Dec 9, 2025
52749bf
bitcoin: Remove call to deprecated function
tcharding Dec 9, 2025
e66eea5
Release tracking PR: `primitives v1.0.0-rc.1`
tcharding Dec 4, 2025
b53f2f0
Merge rust-bitcoin/rust-bitcoin#5382: Create empty `bip158` crate
apoelstra Dec 9, 2025
fa1e5b5
Merge rust-bitcoin/rust-bitcoin#5362: Release tracking PR: `primitive…
apoelstra Dec 10, 2025
f7281ff
Move `FilterHash`, `FilterHeader` to `p2p`
rustaceanrob Dec 10, 2025
7c31c25
Merge rust-bitcoin/rust-bitcoin#4728: fix: panic messages in from_sat…
apoelstra Dec 10, 2025
9d5a3e6
Share lint configs in new packages
nyonson Dec 10, 2025
6710add
p2p: remove HeaderExt dependency
nyonson Dec 10, 2025
c7aee58
Fix script::Builder::push_verify() following a push_int()
shesek Dec 10, 2025
a702689
bitcoin: Use beta in release name
tcharding Oct 28, 2025
2714cde
bitcoin: Update changelog
tcharding Oct 31, 2025
0fc2818
Merge rust-bitcoin/rust-bitcoin#5388: Share lint configs in new packages
apoelstra Dec 11, 2025
257fdd7
Merge rust-bitcoin/rust-bitcoin#5387: Move `FilterHash`, `FilterHeade…
apoelstra Dec 11, 2025
404646b
primitives: migrate to workspace lint rules
nyonson Dec 11, 2025
8a91a71
Remove redundant readme sections in packages
nyonson Dec 11, 2025
db642c9
Move maintainer docs to CONTRIBUTING
nyonson Dec 11, 2025
f11e836
Add missing release note links
nyonson Dec 11, 2025
50c5867
Use roundtrip instead of rinsed
tcharding Dec 11, 2025
a7aa12b
Put feature gate below test attribute
tcharding Dec 11, 2025
e1ffc92
Automated update to Github CI to rustc stable-1.92.0
Dec 12, 2025
d9af54d
docs: fix mismatch between docs and code
Bashmunta Dec 12, 2025
f39e75c
Merge rust-bitcoin/rust-bitcoin#5389: p2p: remove HeaderExt dependenc…
apoelstra Dec 11, 2025
78919f6
Merge rust-bitcoin/rust-bitcoin#5390: Fix script::Builder::push_verif…
apoelstra Dec 12, 2025
cc459d9
docs: extend consensus encoding adr with tech design
nyonson Oct 16, 2025
11b5c46
Merge rust-bitcoin/rust-bitcoin#5400: Put feature gate below test att…
apoelstra Dec 12, 2025
557427d
Merge rust-bitcoin/rust-bitcoin#5401: Automated weekly update to rust…
apoelstra Dec 13, 2025
f9a6b37
Implement Decodable for Witness using encoding crate
tcharding Oct 15, 2025
9b261de
primitives: Remove Witness::from_parts__unstable
tcharding Oct 15, 2025
d1d8411
Merge rust-bitcoin/rust-bitcoin#5169: Release tracking PR: `bitcoin 0…
apoelstra Dec 13, 2025
397aeb0
chore: Implement Copy
uncomputable Dec 13, 2025
f0c9456
Merge rust-bitcoin/rust-bitcoin#5399: Use roundtrip instead of rinsed
apoelstra Dec 13, 2025
cf7ab82
Merge rust-bitcoin/rust-bitcoin#5398: Readmes and Contributing cleanup
apoelstra Dec 13, 2025
521ba70
Merge rust-bitcoin/rust-bitcoin#5408: chore: Implement Copy
apoelstra Dec 13, 2025
4f31509
Merge rust-bitcoin/rust-bitcoin#5139: Remove `Witness::from_parts__un…
apoelstra Dec 13, 2025
755f3c6
Merge rust-bitcoin/rust-bitcoin#5397: primitives: migrate to workspac…
apoelstra Dec 13, 2025
6a66254
Fix script::Builder::push_slice() handling of 0x00
shesek Dec 10, 2025
0b9094c
Fix push_slice() tests
shesek Dec 10, 2025
cf8c1a5
Fix ScriptBuf::push_slice() handling of 0x00
shesek Dec 10, 2025
24d7a39
Add comment explaining push_slice()'s minimality
shesek Dec 10, 2025
d828dc2
Merge rust-bitcoin/rust-bitcoin#5148: docs: add consensus encoding de…
apoelstra Dec 15, 2025
a4d9d21
Merge rust-bitcoin/rust-bitcoin#5396: docs: fix mismatch between docs…
apoelstra Dec 15, 2025
7a2dfa1
Merge rust-bitcoin/rust-bitcoin#5385: script: Fix push_slice() handli…
apoelstra Dec 16, 2025
15ad78a
feat: sync with upstream rust-bitcoin/rust-bitcoin
roshan-bitgo Dec 16, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
64 changes: 64 additions & 0 deletions .cargo/mutants.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
additional_cargo_args = ["--all-features"]
examine_globs = ["consensus_encoding/src/**/*.rs", "units/src/**/*.rs", "primitives/src/**/*.rs"]
exclude_globs = [
"units/src/amount/verification.rs" # kani tests
]
exclude_re = [
"impl Arbitrary",
"impl Debug",
"impl fmt::Debug",
".*Error",
"deserialize", # Skip serde mutation tests
"serde_details::<impl de::Visitor<'_>", # Skip serde mutation tests
"Iterator", # Mutating operations in an iterator can result in an infinite loop
"<impl .*Decodable for .*>::decoder", # Mutant replacing Default::default() is equivalent to returning new()
"<impl .*Decoder for .*>::read_limit", # Function is for optimization and does not need to be tested.


# ----------------------------------Crate-specific exclusions----------------------------------
# units
# src/amount/mod.rs
"units/.* parse_signed_to_satoshi", # Can't kill all mutants since there is no denomination smaller than Satoshi
"units/.* fmt_satoshi_in", # Related to formatting/display
"units/.* dec_width", # Replacing num /= 10 with num %=10 in a loop causes a timeout due to infinite loop
# src/locktime/relative.rs
"units/.* LockTime::to_consensus_u32", # Mutant from replacing | with ^, this returns the same value since the XOR is taken against the u16 with an all-zero bitmask
"units/.* FeeRate::fee_vb", # Deprecated
"units/.* FeeRate::fee_wu", # Deprecated
"units/.* SignedAmount::checked_abs", # Deprecated
"units/.* NumberOfBlocks::value", # Deprecated
"units/.* NumberOf512Seconds::to_consensus_u32", # Deprecated
"units/.* MedianTimePast::to_consensus_u32", # Deprecated
"units/.* Height::to_consensus_u32", # Deprecated
"units/.* Sequence::to_hex", # Deprecated
"units/.* Sequence::from_512_second_intervals", # Mutant from replacing | with ^, this returns the same value since the XOR is taken against the u16 with an all-zero bitmask

# primitives
"primitives/.* Opcode::classify", # Not possible to kill all mutants without individually checking every opcode classification
"primitives/.* Block<Checked>::cached_witness_root", # Skip getters
"primitives/.* Block<Checked>::transactions", # Skip getters
"primitives/.* Script::to_bytes", # Deprecated
"primitives/.* decode_cursor", # Mutating operations in decode_cursor can result in an infinite loop
"primitives/.* fmt_debug", # Mutants from formatting/display changes
"primitives/.* fmt_debug_pretty", # Mutants from formatting/display changes
"primitives/.* CompactTarget::to_hex", # Deprecated
"primitives/.* Script::to_hex", # Deprecated
"primitives/.* Script<T>::to_hex", # Deprecated
"primitives/.* ScriptBuf::to_hex", # Deprecated
"primitives/.* ScriptBuf<T>::to_hex", # Deprecated
"primitives/.* <impl Encoder for .*Encoder<'_>>::current_chunk", # Replacing the return with Some(vec![]) causes an infinite loop.
"primitives/.* <impl Encoder for .*Encoder<'_>>::advance", # Replacing the return with true causes an infinite loop.
"primitives/.* <impl Decoder for WitnessDecoder>::push_bytes", # Replacing == with != causes an infinite loop
"primitives/.* WitnessDecoder::resize_if_needed", # Replacing *= with += still resizes the buffer making the mutant untestable.
"primitives/.* replace \\+ with \\* in MerkleNode::calculate_root", # Replacing + with * causes an infinite loop
"primitives/.* replace == with != in MerkleNode::calculate_root", # Replacing == with != isn't caught unless alloc is disabled.

# consensus_encoding - most of these are for mutations in the logic used to determine when to stop encoding or decoding.
"consensus_encoding/.* <impl Decoder for ArrayDecoder<N>>::push_bytes", # Mutations cause an infinite loop
"consensus_encoding/.* <impl Decoder for .*>::end", # Mutations cause an infinite loop
"consensus_encoding/.* encode_to_vec", # Mutations cause an infinite loop
"consensus_encoding/.* encode_to_writer", # Mutations cause an infinite loop
"consensus_encoding/.* decode_from_slice", # Mutations cause an infinite loop
"consensus_encoding/.* decode_from_read", # Mutations cause an infinite loop
"consensus_encoding/.* <impl Decoder for .*>::push_bytes", # Mutations cause an infinite loop
]
1 change: 1 addition & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
*.rs diff=rust
12 changes: 12 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
# Set update schedule for GitHub Actions
version: 2
updates:
- package-ecosystem: "github-actions"
directory: "/"
schedule:
# Check for updates to GitHub Actions every week
interval: "weekly"
# Defines a cooldown period for dependency updates,
# allowing updates to be delayed for a configurable number of days.
cooldown:
default-days: 60
15 changes: 15 additions & 0 deletions .github/labeler.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
ci:
- changed-files:
- any-glob-to-any-file: .github/**
test:
- changed-files:
- any-glob-to-any-file: fuzz/**
- any-glob-to-any-file: '*/tests/**'
- any-glob-to-any-file: 'dep_test'
- any-glob-to-any-file: 'contrib/run_task.sh'
- any-glob-to-any-file: 'contrib/test_vars.sh'
- any-glob-to-any-file: '*/contrib/extra_tests.sh'
- any-glob-to-any-file: '*/contrib/test_vars.sh'
doc:
- changed-files:
- any-glob-to-any-file: '**/*.md'
40 changes: 40 additions & 0 deletions .github/workflows/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
# rust-bitcoin workflow notes

We are attempting to run max 20 parallel jobs using GitHub actions (usage limit for free tier).

ref: https://docs.github.com/en/actions/learn-github-actions/usage-limits-billing-and-administration

The minimal/recent lock files are handled by CI (`rust.yml`).

## Jobs

Run from rust.yml unless stated otherwise. Unfortunately we are now exceeding the 20 job target.
(Prepare is quick and must be run first anyway.)

0. `Prepare`
1. `Stable - minimal`
2. `Stable - recent`
3. `Nightly - minimal`
4. `Nightly - recent`
5. `MSRV - minimal`
6. `MSRV - recent`
7. `Lint`
8. `Docs`
9. `Docsrs`
10. `Bench`
11. `Arch32bit`
12. `Cross`
13. `Embedded`
14. `ASAN`
15. `WASM`
16. `Kani`
17. `API`
18. `Policy` - enforce repository coding policy.
19. `Re-exports`
20. `DiffMutants`
21. `release` - run by `release.yml`
22. `labeler` - run by `manage-pr.yml`
23. `Shellcheck` - run by `shellcheck.yml`

If any change touches the `.github/` directory then the `zizmor`, run by `zizmor.yml`, will be
triggered for that PR.
1 change: 1 addition & 0 deletions .github/workflows/cargo-semver-checks-version
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
0.45.0
100 changes: 100 additions & 0 deletions .github/workflows/cron-daily-fuzz.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,100 @@
# Automatically generated by fuzz/generate-files.sh
name: Fuzz
on:
schedule:
# 5am every day UTC, this correlates to:
# - 10pm PDT
# - 6am CET
# - 4pm AEDT
- cron: '00 05 * * *'
permissions: {}

jobs:
fuzz:
if: ${{ !github.event.act }}
runs-on: ubuntu-24.04
permissions:
contents: read
strategy:
fail-fast: false
matrix:
# We only get 20 jobs at a time, we probably don't want to go
# over that limit with fuzzing because of the hour run time.
fuzz_target: [
bitcoin_arbitrary_block,
bitcoin_arbitrary_script,
bitcoin_arbitrary_transaction,
bitcoin_arbitrary_witness,
bitcoin_deserialize_block,
bitcoin_deserialize_prefilled_transaction,
bitcoin_deserialize_psbt,
bitcoin_deserialize_script,
bitcoin_deserialize_transaction,
bitcoin_deserialize_witness,
bitcoin_parse_address,
bitcoin_parse_outpoint,
bitcoin_script_bytes_to_asm_fmt,
consensus_encoding_decode_array,
consensus_encoding_decode_byte_vec,
consensus_encoding_decode_compact_size,
consensus_encoding_decode_decoder2,
hashes_json,
hashes_ripemd160,
hashes_sha1,
hashes_sha256,
hashes_sha512,
hashes_sha512_256,
p2p_arbitrary_addrv2,
p2p_deserialize_addrv2,
p2p_deserialize_raw_net_msg,
units_arbitrary_weight,
units_parse_amount,
units_parse_int,
units_standard_checks,
]
steps:
- name: Install test dependencies
run: sudo apt-get update -y && sudo apt-get install -y binutils-dev libunwind8-dev libcurl4-openssl-dev libelf-dev libdw-dev cmake gcc libiberty-dev
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
with:
persist-credentials: false
- uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0

id: cache-fuzz
with:
path: |
~/.cargo/bin
fuzz/target
target
key: cache-${{ matrix.target }}-${{ hashFiles('**/Cargo.toml','**/Cargo.lock') }}
- uses: dtolnay/rust-toolchain@5d458579430fc14a04a08a1e7d3694f545e91ce6 # stable
with:
toolchain: '1.74.0'
- name: fuzz
run: |
if [[ "${{ matrix.fuzz_target }}" =~ ^bitcoin ]]; then
export RUSTFLAGS='--cfg=hashes_fuzz --cfg=secp256k1_fuzz'
fi
echo "Using RUSTFLAGS $RUSTFLAGS"
cd fuzz && ./fuzz.sh "${{ matrix.fuzz_target }}"
- run: echo "${{ matrix.fuzz_target }}" >executed_${{ matrix.fuzz_target }}
- uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0
with:
name: executed_${{ matrix.fuzz_target }}
path: executed_${{ matrix.fuzz_target }}

verify-execution:
if: ${{ !github.event.act }}
needs: fuzz
runs-on: ubuntu-24.04
permissions:
contents: read
steps:
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
with:
persist-credentials: false
- uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0
- name: Display structure of downloaded files
run: ls -R
- run: find executed_* -type f -exec cat {} + | sort > executed
- run: source ./fuzz/fuzz-util.sh && listTargetNames | sort | diff - executed
19 changes: 19 additions & 0 deletions .github/workflows/cron-daily-kani.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
# From https://model-checking.github.io/kani/install-github-ci.html
name: Kani CI
on:
schedule:
- cron: '59 23 * * *' # midnight every day.
permissions: {}
jobs:
run-kani:
runs-on: ubuntu-24.04
permissions:
contents: read
steps:
- name: 'Checkout your code.'
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
with:
persist-credentials: false

- name: 'Run Kani on your code.'
uses: model-checking/kani-github-action@f838096619a707b0f6b2118cf435eaccfa33e51f # v1.1
49 changes: 49 additions & 0 deletions .github/workflows/cron-weekly-cargo-mutants.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
name: Weekly cargo-mutants
on:
schedule:
- cron: "0 0 * * 0" # runs weekly on Sunday at 00:00
workflow_dispatch: # allows manual triggering
permissions: {}
jobs:
cargo-mutants:
runs-on: ubuntu-24.04
permissions:
contents: read
issues: write
steps:
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
with:
persist-credentials: false
- uses: taiki-e/install-action@81ee1d48d9194cdcab880cbdc7d36e87d39874cb # v2.62.45
with:
tool: cargo-mutants
- run: cargo mutants --in-place --no-shuffle
- uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0
if: always()
with:
name: mutants.out
path: mutants.out
- name: Check for new mutants
if: always()
run: |
if [ -s mutants.out/missed.txt ]; then
echo "New missed mutants found"
MUTANTS_VERSION=$(cargo mutants --version)
gh issue create \
--title "New Mutants Found" \
--body "$(cat <<EOF
Displaying up to the first 10 mutants:
\`\`\`
$(head -n 10 mutants.out/missed.txt)
\`\`\`
Running cargo mutants version: ${MUTANTS_VERSION}
For the complete list, please check the [mutants.out artifact](https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}).
EOF
)"
echo "create_issue=true" >> $GITHUB_ENV
else
echo "No new mutants found"
echo "create_issue=false" >> $GITHUB_ENV
fi
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
35 changes: 35 additions & 0 deletions .github/workflows/cron-weekly-rustfmt.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
name: Nightly rustfmt
on:
schedule:
- cron: "0 0 * * 0" # runs weekly on Sunday at 00:00
workflow_dispatch: # allows manual triggering
permissions: {}
jobs:
format:
name: Nightly rustfmt
runs-on: ubuntu-24.04
permissions:
contents: write
pull-requests: write
steps:
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
with:
persist-credentials: false
- uses: dtolnay/rust-toolchain@55d80eb3c5a4228eec5390a083c092095115c6f1 # nightly
with:
components: rustfmt
- name: Run Nightly rustfmt
# Run the formatter and manually remove trailing whitespace.
run: cargo +nightly fmt && git ls-files -- '*.rs' -z | xargs sed -E -i'' -e 's/[[:space:]]+$//'
- name: Get the current date
run: echo "date=$(date +'%Y-%m-%d')" >> $GITHUB_ENV
- name: Create Pull Request
uses: peter-evans/create-pull-request@271a8d0340265f705b14b6d32b9829c1cb33d45e # v7.0.8
with:
author: Fmt Bot <bot@example.com>
title: Automated nightly rustfmt (${{ env.date }})
body: |
Automated nightly `rustfmt` changes by [create-pull-request](https://github.com/peter-evans/create-pull-request) GitHub action
commit-message: ${{ env.date }} automated rustfmt nightly
labels: rustfmt

46 changes: 46 additions & 0 deletions .github/workflows/cron-weekly-update-cargo-semver-checks.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
name: Update cargo-semver-checks
on:
schedule:
- cron: "0 0 * * 6" # runs every Saturday at 00:00
workflow_dispatch: # allows manual triggering
permissions: {}
jobs:
format:
name: Update cargo-semver-checks
runs-on: ubuntu-24.04
permissions:
contents: write
pull-requests: write
steps:
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
with:
persist-credentials: false
- name: Update semver-checks to use latest crates.io published version
run: |
set -x
# Grab the latest version of cargo semver-checks from crates.io
# that is not yanked.
LATEST_VERSION=$(curl --proto '=https' --tlsv1.3 -sSf -H "User-Agent: rust-bitcoin-ci" https://crates.io/api/v1/crates/cargo-semver-checks/versions | jq -r 'first( .versions[] | select(.yanked == false) ) | .num')
# Update the latest version in the reference file.
echo "${LATEST_VERSION}" > ./.github/workflows/cargo-semver-checks-version
echo "cargo_semver_checks_version=${LATEST_VERSION}" >> $GITHUB_ENV
# If somehow the latest version has not changed. In this case don't make an empty PR.
if ! git diff --exit-code > /dev/null; then
echo "Updated cargo-semver-checks. Opening PR."
echo "changes_made=true" >> $GITHUB_ENV
else
echo "Attempted to update cargo-semver-checks but the crates.io version did not change. Not opening any PR."
echo "changes_made=false" >> $GITHUB_ENV
fi
- name: Create Pull Request
if: env.changes_made == 'true'
uses: peter-evans/create-pull-request@271a8d0340265f705b14b6d32b9829c1cb33d45e # v7.0.8
with:
token: ${{ secrets.APOELSTRA_CREATE_PR_TOKEN }}
author: Update cargo-semver-checks Bot <bot@example.com>
committer: Update cargo-semver-checks Bot <bot@example.com>
title: Automated weekly update to cargo-semver-checks (to ${{ env.cargo_semver_checks_version }})
body: |
Automated update to Github CI workflow `semver-checks.yml` by [create-pull-request](https://github.com/peter-evans/create-pull-request) GitHub action
commit-message: Automated update to Github CI to cargo-semver-checks version-${{ env.cargo_semver_checks_version }}
branch: create-pull-request/weekly-cargo-semver-checks-update
Loading
Loading