From c9385969f9201acb0ef820f088c713b10d0747f8 Mon Sep 17 00:00:00 2001 From: Andrew Poelstra Date: Tue, 5 Apr 2022 20:38:23 +0000 Subject: [PATCH 1/3] release: do CHANGELOG for 0.28.0 --- CHANGELOG.md | 60 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index bbc269bf..4480c21b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,63 @@ +# 0.28 - 2021-04-05 "The Taproot Release" + +At nearly nine months, this is our longest release cycle ever, and thanks +to a huge increase in the number of active contributors this year and last, +it is also **by far** our largest release ever, at 148 PRs merged from 23 +different contributors. Our primary goal in this release was to introduce +support for Taproot and its associated data structures: addresses, taptrees, +sighashes, PSBT fields, and more. As it turned out, these changes required +(or at least, incentivized) changing a lot of our APIs, causing a significant +increase in scope. + +We have more big changes coming down the pike. 2022 is going to be a big +year for `rust-bitcoin`, which we know is exciting for us but disruptive to +downstream users who ultimately want the library to just wark. Our hope is +that by 2023 we will have eliminated large amounts of technical debt, +modernized our APIs to meet current Rust conventions, and clarified the scope +of the individual crates in this ecosystem while still providing the essential +functionality needed by our downstream users, especially wallet projects. + +We will also develop a plan to make our releases more predictable and manageable, +likely by having scheduled releases with limited scope. We would like to reach +a point where we no longer have frequent breaking releases, but right now we +are nowhere close. + +Upcoming changes will include +- A quick new release which updates our MRSV from 1.29 to 1.41 and does little else +- Updating our codebase to take advantage of the new MSRV, especially regarding +nostd and wasm support +- A comprehensive rethinking and flattening of our public-facing APIs +- Richer support for PSBT, Script, and BIP-0340/Schnorr signatures + +With so many changes since 0.27, we cannot list every PR. Here are the highlights: + +- Remove dangerous `fuzztarget` cargo feature [#634](https://github.com/rust-bitcoin/rust-bitcoin/pull/634) +- Improve serde serialization for `Script` [#596](https://github.com/rust-bitcoin/rust-bitcoin/pull/596) +- Documentation improvements [#623](https://github.com/rust-bitcoin/rust-bitcoin/pull/623) [#633](https://github.com/rust-bitcoin/rust-bitcoin/pull/633) [#663](https://github.com/rust-bitcoin/rust-bitcoin/pull/663) [#689](https://github.com/rust-bitcoin/rust-bitcoin/pull/689) [#704](https://github.com/rust-bitcoin/rust-bitcoin/pull/704) [#744](https://github.com/rust-bitcoin/rust-bitcoin/pull/744) [#852](https://github.com/rust-bitcoin/rust-bitcoin/pull/852) [#869](https://github.com/rust-bitcoin/rust-bitcoin/pull/869) [#865](https://github.com/rust-bitcoin/rust-bitcoin/pull/865) [#864](https://github.com/rust-bitcoin/rust-bitcoin/pull/864) [#858](https://github.com/rust-bitcoin/rust-bitcoin/pull/858) [#806](https://github.com/rust-bitcoin/rust-bitcoin/pull/806) [#877](https://github.com/rust-bitcoin/rust-bitcoin/pull/877) [#912](https://github.com/rust-bitcoin/rust-bitcoin/pull/912) [#923](https://github.com/rust-bitcoin/rust-bitcoin/pull/923) +- Introduce `WitnessVersion` type [#617](https://github.com/rust-bitcoin/rust-bitcoin/pull/617) +- Improve error types and API [#625](https://github.com/rust-bitcoin/rust-bitcoin/pull/625) +- Implement `Block.get_strippedsize()` and `Transaction.get_vsize()` [#626](https://github.com/rust-bitcoin/rust-bitcoin/pull/626) +- Add Bloom filter network messages [#580](https://github.com/rust-bitcoin/rust-bitcoin/pull/580) +- **Taproot:** add signature hash support [#628](https://github.com/rust-bitcoin/rust-bitcoin/pull/628) [#702](https://github.com/rust-bitcoin/rust-bitcoin/pull/702) [#722](https://github.com/rust-bitcoin/rust-bitcoin/pull/722) [#835](https://github.com/rust-bitcoin/rust-bitcoin/pull/835) [#903](https://github.com/rust-bitcoin/rust-bitcoin/pull/903) [#796](https://github.com/rust-bitcoin/rust-bitcoin/pull/796) +- **Taproot:** add new Script opcodes [#644](https://github.com/rust-bitcoin/rust-bitcoin/pull/644) [#721](https://github.com/rust-bitcoin/rust-bitcoin/pull/721) [#868](https://github.com/rust-bitcoin/rust-bitcoin/pull/868) [#920](https://github.com/rust-bitcoin/rust-bitcoin/pull/920) +- **Taproot:** add bech32m support, addresses and new key types [#563](https://github.com/rust-bitcoin/rust-bitcoin/pull/563) [#691](https://github.com/rust-bitcoin/rust-bitcoin/pull/691) [#697](https://github.com/rust-bitcoin/rust-bitcoin/pull/697) [#728](https://github.com/rust-bitcoin/rust-bitcoin/pull/728) [#696](https://github.com/rust-bitcoin/rust-bitcoin/pull/696) [#757](https://github.com/rust-bitcoin/rust-bitcoin/pull/757) +- **Taproot:** add taptree data structures [#677](https://github.com/rust-bitcoin/rust-bitcoin/pull/677) [#703](https://github.com/rust-bitcoin/rust-bitcoin/pull/703) [#701](https://github.com/rust-bitcoin/rust-bitcoin/pull/701) [#718](https://github.com/rust-bitcoin/rust-bitcoin/pull/718) [#845](https://github.com/rust-bitcoin/rust-bitcoin/pull/845) [#901](https://github.com/rust-bitcoin/rust-bitcoin/pull/901) [#910](https://github.com/rust-bitcoin/rust-bitcoin/pull/910) [#909](https://github.com/rust-bitcoin/rust-bitcoin/pull/909) [#914](https://github.com/rust-bitcoin/rust-bitcoin/pull/914) +- no-std improvements [#637](https://github.com/rust-bitcoin/rust-bitcoin/pull/637) +- PSBT improvements, including Taproot [#654](https://github.com/rust-bitcoin/rust-bitcoin/pull/654) [#681](https://github.com/rust-bitcoin/rust-bitcoin/pull/681) [#669](https://github.com/rust-bitcoin/rust-bitcoin/pull/669) [#774](https://github.com/rust-bitcoin/rust-bitcoin/pull/774) [#779](https://github.com/rust-bitcoin/rust-bitcoin/pull/779) [#752](https://github.com/rust-bitcoin/rust-bitcoin/pull/752) [#776](https://github.com/rust-bitcoin/rust-bitcoin/pull/776) [#790](https://github.com/rust-bitcoin/rust-bitcoin/pull/790) [#836](https://github.com/rust-bitcoin/rust-bitcoin/pull/836) [#847](https://github.com/rust-bitcoin/rust-bitcoin/pull/847) [#842](https://github.com/rust-bitcoin/rust-bitcoin/pull/842) +- serde improvements [#672](https://github.com/rust-bitcoin/rust-bitcoin/pull/672) +- Update rust-secp256k1 dependency [#694](https://github.com/rust-bitcoin/rust-bitcoin/pull/694) [#755](https://github.com/rust-bitcoin/rust-bitcoin/pull/755) [#875](https://github.com/rust-bitcoin/rust-bitcoin/pull/875) +- Change BIP32 to use rust-secp256k1 keys rather than rust-bitcoin ones (no compressedness flag) [#590](https://github.com/rust-bitcoin/rust-bitcoin/pull/590) [#591](https://github.com/rust-bitcoin/rust-bitcoin/pull/591) +- Rename inner key field in `PrivateKey` and `PublicKey` [#762](https://github.com/rust-bitcoin/rust-bitcoin/pull/762) +- Address and denomination related changes [#768](https://github.com/rust-bitcoin/rust-bitcoin/pull/768) [#784](https://github.com/rust-bitcoin/rust-bitcoin/pull/784) +- Don't allow hybrid EC keys [#829](https://github.com/rust-bitcoin/rust-bitcoin/pull/829) +- Change erroneous behavior for `SIGHASH_SINGLE` bug [#860](https://github.com/rust-bitcoin/rust-bitcoin/pull/860) [#897](https://github.com/rust-bitcoin/rust-bitcoin/pull/897) +- Delete the deprecated `contracthash` module [#871](https://github.com/rust-bitcoin/rust-bitcoin/pull/871); this functionality will migrate to ElementsProject/rust-elements +- Remove compilation-breaking feature-gated enum variants [#881](https://github.com/rust-bitcoin/rust-bitcoin/pull/881) + +Additionally we made several minor API changes (renaming methods, etc.) to improve +compliance with modern Rust conventions. Where possible we left the existing methods +in place, marked as deprecated. + # 0.27 - 2021-07-21 - [Bigendian fixes and CI test](https://github.com/rust-bitcoin/rust-bitcoin/pull/627) From 785be0e27a419955bd83ff5fd599c38852a3ce2c Mon Sep 17 00:00:00 2001 From: Andrew Poelstra Date: Tue, 5 Apr 2022 20:39:13 +0000 Subject: [PATCH 2/3] release 0.28.0 --- Cargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Cargo.toml b/Cargo.toml index 0f9050d6..25020b71 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "bitcoin" -version = "0.28.0-rc.2" +version = "0.28.0" authors = ["Andrew Poelstra "] license = "CC0-1.0" homepage = "https://github.com/rust-bitcoin/rust-bitcoin/" From 38f09d2d936f923d16bda5fc0214590ac0f9e9e5 Mon Sep 17 00:00:00 2001 From: Andrew Poelstra Date: Wed, 20 Apr 2022 01:36:56 +0000 Subject: [PATCH 3/3] minor changelog fixes --- CHANGELOG.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4480c21b..d589b522 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,4 @@ -# 0.28 - 2021-04-05 "The Taproot Release" +# 0.28 - 2022-04-20 "The Taproot Release" At nearly nine months, this is our longest release cycle ever, and thanks to a huge increase in the number of active contributors this year and last, @@ -11,7 +11,7 @@ increase in scope. We have more big changes coming down the pike. 2022 is going to be a big year for `rust-bitcoin`, which we know is exciting for us but disruptive to -downstream users who ultimately want the library to just wark. Our hope is +downstream users who ultimately want the library to just work. Our hope is that by 2023 we will have eliminated large amounts of technical debt, modernized our APIs to meet current Rust conventions, and clarified the scope of the individual crates in this ecosystem while still providing the essential @@ -52,7 +52,7 @@ With so many changes since 0.27, we cannot list every PR. Here are the highlight - Don't allow hybrid EC keys [#829](https://github.com/rust-bitcoin/rust-bitcoin/pull/829) - Change erroneous behavior for `SIGHASH_SINGLE` bug [#860](https://github.com/rust-bitcoin/rust-bitcoin/pull/860) [#897](https://github.com/rust-bitcoin/rust-bitcoin/pull/897) - Delete the deprecated `contracthash` module [#871](https://github.com/rust-bitcoin/rust-bitcoin/pull/871); this functionality will migrate to ElementsProject/rust-elements -- Remove compilation-breaking feature-gated enum variants [#881](https://github.com/rust-bitcoin/rust-bitcoin/pull/881) +- Remove compilation-breaking feature-gating of enum variants" [#881](https://github.com/rust-bitcoin/rust-bitcoin/pull/881) Additionally we made several minor API changes (renaming methods, etc.) to improve compliance with modern Rust conventions. Where possible we left the existing methods