-
Notifications
You must be signed in to change notification settings - Fork 405
Description
Summary
This is the final "beta" test release before a final bdk_wallet
1.0.0 version. Changes include small bug fixes and API improvements plus an improved algorithm for determining which transactions are in the current best "canonical" block chain. The new canonicalization algorithm processes the transaction graph in linear time versus the prior quadratic time algorithm.
Commit
Changelog
- Move transaction testing utilities from
crates/chain/tests/common
totestenv
crate Refactor: Move transaction testing utilities fromcrates/chain/tests/common
totestenv
crate #1612 - Remove bdk_chain::ConfirmationTime. Use ChainPosition in its place. feat(chain,wallet)!: rm
ConfirmationTime
#1643 - Fix building change signers in
load_with_params
fix(wallet): fix building change signers inload_with_params
#1662 - Remove bdk_chain method KeychainTxOutIndex::inner refactor(chain)!: remove
inner
method from KeychainTxOutIndex #1652 - Document bdk_file_store is a development/testing database chore(file_store): Document that it's a dev database #1661
- Fix incorrect links in docs to wallet examples docs: fix incorrect links to wallet examples #1668
- Add bdk_wallet "test-utils" feature flag that exposes common helpers for testing and development fix(wallet)!: Improve test utilities #1658
- Removed methods Wallet::insert_tx, Wallet::insert_checkpoint, Wallet::unbroadcast_transactions fix(wallet)!: Improve test utilities #1658
- Fix type constraint on list canonical tx Type constraint on list canonical tx #1724
- Fix testenv docs.rs docs fix(testenv): disable downloads (bitcoind and electrsd) for docs.rs b… #1722
- Use
bitcoin::constants::COINBASE_MATURITY
Usebitcoin::constants::COINBASE_MATURITY
#1727 - Rename bdk_core::spk_client's SyncResult to SyncResponse chore(core)!: rename
SyncResult
toSyncResponse
#1732 - Fix core checkpoint Drop stack overflow fix(core): Fix checkpoint Drop stack overflow #1731
- Change Utxo::Foreign::sequence type to not be optional types: Make Utxo::Foreign::sequence not optional #1681
- Check time when persisting in
rusqlite
impl Check time when persisting inrusqlite
impl #1730 - Bump hashbrown dependency version to v0.14.5 chore(deps): bump hashbrown to v0.14.5 #1721
- Add usage of debug_assert!() to LocalChain::apply_update chore(chain)!: use
debug_assert!
onapply_update
#1734 - Allow Sqlite to persist anchor without tx Sqlite - allow persisting anchor without tx #1736
- Change ChainPosition to represent transitive anchors and unconfirmed-without-last-seen values feat(chain,wallet)!: Transitive
ChainPosition
#1733 - Updated electrum-client dependency to 0.22.0 deps(electrum): bump
electrum-client
to 0.22.0 #1751 - Change TxBuilder to be Send safe and not implement the Clone trait fix(tx_builder)!: make TxBuilder Send safe, remove Clone trait #1737
- Update esplora-client dependency to 0.11.0 deps(esplora): bump
esplora-client
to 0.11.0 #1746 - Fix fetch_prev_txout to no longer queries coinbase transactions fix(electrum): prevent
fetch_prev_txout
from querying coinbase transactions #1756 - Remove serde json dependency from chain crate Remove serde json dependency from chain crate #1752
- Introduce
O(n)
canonicalization algorithm IntroduceO(n)
canonicalization algorithm #1670 - Add chain O(n) canonicalization algorithm see: /crates/chain/src/canonical_iter.rs Introduce
O(n)
canonicalization algorithm #1670 - Add chain indexing fields in TxGraph; txs_by_anchor_height and txs_by_last_seen Introduce
O(n)
canonicalization algorithm #1670 - Removed chain TxGraph methods: try_get_chain_position and get_chain_position Introduce
O(n)
canonicalization algorithm #1670 - Change coin_selection and DescriptorExt::dust_value to use Amount type Change coin_selection and DescriptorExt::dust_value to use Amount type #1763
Checklist
Release numbering must follow Semantic Versioning. These steps assume the current master
branch development version is v1.0.0-beta.5.
On the day of the feature freeze
Change the master
branch to the next MINOR+1 version:
- Ensure all alpha milestone issues and PRs closed, archive them on the project board.
- Switch to the
master
branch. - Create a new PR branch called
release/bump_dev_1.0.0_beta.6
. - Create a "draft" release page and release notes comparing master commmit with prior tag
v1.0.0-beta.5
- Determine which crates need a major release bump and which only need a patch release by looking at the git log.
cargo-semver-checks
can also help with this
cargo semver-checks --baseline-rev <last-tag>
- Bump the
bump_dev_1.0.0_beta.6
branch to the next development version.-
Bump the modified crates versions in their
Cargo.toml
files. [update this list with only changed crates]- bdk_core
- bdk_chain
- bdk_bitcoind_rpc
- bdk_electrum
- bdk_esplora
- bdk_file_store
- bdk_testenv
- bdk_wallet
-
The commit message should be: [update this list with only changed crates]
Bump bdk_wallet version to 1.0.0-beta.6 bdk_core to 0.4.0 bdk_chain to 0.21.0 bdk_bitcoind_rpc to 0.17.0 bdk_electrum to 0.20.0 bdk_esplora to 0.20.0 bdk_file_store to 0.18.0 bdk_testenv to 0.11.0
-
- Create PR and merge the
release/bump_dev_1.0.0_beta.6
branch tomaster
. Bump bdk_wallet version to 1.0.0-beta.6 #1772- Title PR "Bump bdk_wallet version to 1.0.0-beta.6".
On the day of the release
Tag and publish new release:
- Add a tag to the
HEAD
commit in themaster
branch.git tag v1.0.0-beta.6 --sign -e
- The tag name should be
v1.0.0-beta.6
- The first line of the tag message should be "Release 1.0.0-beta.6".
- In the body of the tag message put a copy of the Summary and Changelog for the release.
- Make sure the tag is signed, for extra safety use the explicit
--sign
flag.
- Verify the new tag with
git tag -v v1.0.0-beta.6
- Wait for the CI to finish one last time.
- Push the new tag to the
bitcoindevkit/bdk
repo.git push upstream --tag v1.0.0-beta.6
- Publish all the updated crates to crates.io. [update this list with only changed crates]
cargo publish -p <crate name>
- bdk_core
- bdk_chain
- bdk_testenv
- bdk_bitcoind_rpc
- bdk_electrum
- bdk_esplora
- bdk_file_store
- bdk_wallet
- Create the release on GitHub.
- Go to "tags", click on the dots on the right and select "Create Release".
- Set the title to
Release 1.0.0-beta.6
. - In the release notes body put the Summary and Changelog.
- Use the "+ Auto-generate release notes" button to add details from included PRs.
- Until we reach a final
1.0.0
release check the "Pre-release" box.
- Make sure the new release shows up on crates.io and that the docs are built correctly on docs.rs.
- Announce the release, using the Summary, on Discord, Twitter and Nostr.
- Celebrate 🎉
Metadata
Metadata
Assignees
Labels
Type
Projects
Status