|
| 1 | +# 0.28 - 2022-04-20 "The Taproot Release" |
| 2 | + |
| 3 | +At nearly nine months, this is our longest release cycle ever, and thanks |
| 4 | +to a huge increase in the number of active contributors this year and last, |
| 5 | +it is also **by far** our largest release ever, at 148 PRs merged from 23 |
| 6 | +different contributors. Our primary goal in this release was to introduce |
| 7 | +support for Taproot and its associated data structures: addresses, taptrees, |
| 8 | +sighashes, PSBT fields, and more. As it turned out, these changes required |
| 9 | +(or at least, incentivized) changing a lot of our APIs, causing a significant |
| 10 | +increase in scope. |
| 11 | + |
| 12 | +We have more big changes coming down the pike. 2022 is going to be a big |
| 13 | +year for `rust-bitcoin`, which we know is exciting for us but disruptive to |
| 14 | +downstream users who ultimately want the library to just work. Our hope is |
| 15 | +that by 2023 we will have eliminated large amounts of technical debt, |
| 16 | +modernized our APIs to meet current Rust conventions, and clarified the scope |
| 17 | +of the individual crates in this ecosystem while still providing the essential |
| 18 | +functionality needed by our downstream users, especially wallet projects. |
| 19 | + |
| 20 | +We will also develop a plan to make our releases more predictable and manageable, |
| 21 | +likely by having scheduled releases with limited scope. We would like to reach |
| 22 | +a point where we no longer have frequent breaking releases, but right now we |
| 23 | +are nowhere close. |
| 24 | + |
| 25 | +Upcoming changes will include |
| 26 | +- A quick new release which updates our MRSV from 1.29 to 1.41 and does little else |
| 27 | +- Updating our codebase to take advantage of the new MSRV, especially regarding |
| 28 | +nostd and wasm support |
| 29 | +- A comprehensive rethinking and flattening of our public-facing APIs |
| 30 | +- Richer support for PSBT, Script, and BIP-0340/Schnorr signatures |
| 31 | + |
| 32 | +With so many changes since 0.27, we cannot list every PR. Here are the highlights: |
| 33 | + |
| 34 | +- Remove dangerous `fuzztarget` cargo feature [#634](https://github.com/rust-bitcoin/rust-bitcoin/pull/634) |
| 35 | +- Improve serde serialization for `Script` [#596](https://github.com/rust-bitcoin/rust-bitcoin/pull/596) |
| 36 | +- 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) |
| 37 | +- Introduce `WitnessVersion` type [#617](https://github.com/rust-bitcoin/rust-bitcoin/pull/617) |
| 38 | +- Improve error types and API [#625](https://github.com/rust-bitcoin/rust-bitcoin/pull/625) |
| 39 | +- Implement `Block.get_strippedsize()` and `Transaction.get_vsize()` [#626](https://github.com/rust-bitcoin/rust-bitcoin/pull/626) |
| 40 | +- Add Bloom filter network messages [#580](https://github.com/rust-bitcoin/rust-bitcoin/pull/580) |
| 41 | +- **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) |
| 42 | +- **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) |
| 43 | +- **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) |
| 44 | +- **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) |
| 45 | +- no-std improvements [#637](https://github.com/rust-bitcoin/rust-bitcoin/pull/637) |
| 46 | +- 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) |
| 47 | +- serde improvements [#672](https://github.com/rust-bitcoin/rust-bitcoin/pull/672) |
| 48 | +- 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) |
| 49 | +- 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) |
| 50 | +- Rename inner key field in `PrivateKey` and `PublicKey` [#762](https://github.com/rust-bitcoin/rust-bitcoin/pull/762) |
| 51 | +- 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) |
| 52 | +- Don't allow hybrid EC keys [#829](https://github.com/rust-bitcoin/rust-bitcoin/pull/829) |
| 53 | +- 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) |
| 54 | +- Delete the deprecated `contracthash` module [#871](https://github.com/rust-bitcoin/rust-bitcoin/pull/871); this functionality will migrate to ElementsProject/rust-elements |
| 55 | +- Remove compilation-breaking feature-gating of enum variants" [#881](https://github.com/rust-bitcoin/rust-bitcoin/pull/881) |
| 56 | + |
| 57 | +Additionally we made several minor API changes (renaming methods, etc.) to improve |
| 58 | +compliance with modern Rust conventions. Where possible we left the existing methods |
| 59 | +in place, marked as deprecated. |
| 60 | + |
1 | 61 | # 0.27 - 2021-07-21
|
2 | 62 |
|
3 | 63 | - [Bigendian fixes and CI test](https://github.com/rust-bitcoin/rust-bitcoin/pull/627)
|
|
0 commit comments