|
1 | | -# # 12.3.1 - April 1, 2025 |
| 1 | +# 13.0.0 - October 22, 2025 |
| 2 | + |
| 3 | +This release is a pretty big one and includes several significant refactors: |
| 4 | + |
| 5 | +- Eliminate recursion throughout (most of) the library, by writing iterative algorithms. |
| 6 | + Includes many small bugfixes. |
| 7 | +- Eliminate many of the stringly typed errors; refactor `PolicyError` |
| 8 | +- Rewrite the Taproot API based on feedback from Mike Tidwell's development of the "Capture |
| 9 | + the Bitcoin" competition at TABConf 6. (See [#766](https://github.com/rust-bitcoin/rust-miniscript/pull/766).) |
| 10 | + |
| 11 | +The full changelog: |
| 12 | + |
| 13 | +- fix multiple bugs in size estimation and limit enforcement for descriptors with uncompressed keys |
| 14 | + [#849](https://github.com/rust-bitcoin/rust-miniscript/pull/849) |
| 15 | +- fix size estimation for Taproot control blocks in satisfactions |
| 16 | + [#858](https://github.com/rust-bitcoin/rust-miniscript/pull/858) |
| 17 | +- Extend `GetKey` impls and fix some bugs |
| 18 | + [#851](https://github.com/rust-bitcoin/rust-miniscript/pull/851) |
| 19 | + [#861](https://github.com/rust-bitcoin/rust-miniscript/pull/861) |
| 20 | + [#862](https://github.com/rust-bitcoin/rust-miniscript/pull/862) |
| 21 | + [#863](https://github.com/rust-bitcoin/rust-miniscript/pull/863) |
| 22 | + (backport in [#860](https://github.com/rust-bitcoin/rust-miniscript/pull/860)) |
| 23 | +- improve decoder from `Script` implementation and error type; rename `parse_with_ext` to `decode_with_ext` |
| 24 | + [#845](https://github.com/rust-bitcoin/rust-miniscript/pull/845) |
| 25 | +- enforce that xpubs in descriptors have the same network |
| 26 | + [#848](https://github.com/rust-bitcoin/rust-miniscript/pull/848) |
| 27 | +- fix malleability behavior in Taproot satisfier |
| 28 | + [#826](https://github.com/rust-bitcoin/rust-miniscript/pull/846) |
| 29 | +- Fix `DefiniteDescriptorKey::new` to forbid multipath keys and hardened derivations (which would cause assertion failures) |
| 30 | + [#830](https://github.com/rust-bitcoin/rust-miniscript/pull/830) |
| 31 | + [#839](https://github.com/rust-bitcoin/rust-miniscript/pull/839) |
| 32 | + (backports in |
| 33 | + [#831](https://github.com/rust-bitcoin/rust-miniscript/pull/831) |
| 34 | + [#832](https://github.com/rust-bitcoin/rust-miniscript/pull/832) |
| 35 | + [#833](https://github.com/rust-bitcoin/rust-miniscript/pull/833) |
| 36 | + [#833](https://github.com/rust-bitcoin/rust-miniscript/pull/843)) |
| 37 | +- add `Descriptor::iter_pk` to iterate over pubkeys in an arbitrary descriptor |
| 38 | + [#823](https://github.com/rust-bitcoin/rust-miniscript/pull/823) |
| 39 | +- satisfy: pass public key to `lookup_tap_key_spend_sig` to remind satisfier of the keyspend key |
| 40 | + [#827](https://github.com/rust-bitcoin/rust-miniscript/pull/827) |
| 41 | +- plan: remove unused `AssetProvider::provider_lookup_tap_control_block_map` from trait |
| 42 | + [#826](https://github.com/rust-bitcoin/rust-miniscript/pull/826) |
| 43 | +- Add conversions from `XOnlyPublicKey` to rust-miniscript descriptor keytypes |
| 44 | + [#818](https://github.com/rust-bitcoin/rust-miniscript/pull/818) |
| 45 | + (backport in [#819](https://github.com/rust-bitcoin/rust-miniscript/pull/819)) |
| 46 | +- Fix crash in `parse_descriptor` |
| 47 | + [#809](https://github.com/rust-bitcoin/rust-miniscript/pull/809) |
| 48 | + (backport in [#816](https://github.com/rust-bitcoin/rust-miniscript/pull/816)) |
| 49 | +- Eliminate the stringly-typed errors from descriptor key parsing [#804](https://github.com/rust-bitcoin/rust-miniscript/pull/804) |
| 50 | +- Rewrite the expression parser to be non-recursive, have much better error messages, and |
| 51 | + to be more correct. |
| 52 | + [#773](https://github.com/rust-bitcoin/rust-miniscript/pull/773) |
| 53 | + [#775](https://github.com/rust-bitcoin/rust-miniscript/pull/775) |
| 54 | + [#778](https://github.com/rust-bitcoin/rust-miniscript/pull/778) |
| 55 | + [#780](https://github.com/rust-bitcoin/rust-miniscript/pull/780) |
| 56 | + [#784](https://github.com/rust-bitcoin/rust-miniscript/pull/784) |
| 57 | +- Remove the `no-std` and `actual-serde` features [#769](https://github.com/rust-bitcoin/rust-miniscript/pull/769) |
| 58 | +- Rewrite the Taproot API |
| 59 | + [#751](https://github.com/rust-bitcoin/rust-miniscript/pull/751) |
| 60 | + [#802](https://github.com/rust-bitcoin/rust-miniscript/pull/802) |
| 61 | + [#807](https://github.com/rust-bitcoin/rust-miniscript/pull/807) |
| 62 | + [#808](https://github.com/rust-bitcoin/rust-miniscript/pull/808) |
| 63 | + [#815](https://github.com/rust-bitcoin/rust-miniscript/pull/815) |
| 64 | + [#828](https://github.com/rust-bitcoin/rust-miniscript/pull/828) (includes bugfix for compiler crash with 0-probability policy fragments) |
| 65 | +- Separate out many distinct "max size exceeded" errors |
| 66 | + [#758](https://github.com/rust-bitcoin/rust-miniscript/pull/758) |
| 67 | + [#760](https://github.com/rust-bitcoin/rust-miniscript/pull/760) |
| 68 | +- Fix spelling of `MaxWitnessItemsExceeded` error variant [#759](https://github.com/rust-bitcoin/rust-miniscript/pull/759) |
| 69 | +- Support conversion of multi-Xprivs into multi-Xpubs [#757](https://github.com/rust-bitcoin/rust-miniscript/pull/757) |
| 70 | +- Split "witness size exceeded" error from "bare script size exceeded" [#756](https://github.com/rust-bitcoin/rust-miniscript/pull/756) |
| 71 | +- Fix decoding WIF privkeys with BIP32 origins [#753](https://github.com/rust-bitcoin/rust-miniscript/pull/753) |
| 72 | +- Allow compiling `pk` descriptors to keyspend-only `tr` descriptors [#677](https://github.com/rust-bitcoin/rust-miniscript/pull/677) |
| 73 | +- Reduce "maximum pubkeys in multi_a" limit to 999 [#746](https://github.com/rust-bitcoin/rust-miniscript/pull/746) |
| 74 | +- **Remove `PartialEq` from `Error`** and introduce `StaticDebugAndDisplay` trait to |
| 75 | + help with boxing errors |
| 76 | + [#741](https://github.com/rust-bitcoin/rust-miniscript/pull/741) |
| 77 | + [#801](https://github.com/rust-bitcoin/rust-miniscript/pull/801) |
| 78 | +- Fix lower limit of relative locktime [#740](https://github.com/rust-bitcoin/rust-miniscript/pull/740) |
| 79 | +- Remove `TranslatePk` trait; move generics on `Translator` to associated types [#733](https://github.com/rust-bitcoin/rust-miniscript/pull/733) |
| 80 | +- Fix upper limit of absolute locktime [#719](https://github.com/rust-bitcoin/rust-miniscript/pull/719) |
| 81 | +- Clean up Taproot compiler and policy errors [#732](https://github.com/rust-bitcoin/rust-miniscript/pull/732) |
| 82 | +- Eliminate recursion throughout the library; extend the `TreeLike` trait; remove `Liftable` for `Terminal` |
| 83 | + [#722](https://github.com/rust-bitcoin/rust-miniscript/pull/722) |
| 84 | + [#724](https://github.com/rust-bitcoin/rust-miniscript/pull/724) |
| 85 | + [#725](https://github.com/rust-bitcoin/rust-miniscript/pull/725) |
| 86 | +- **Update MSRV to Rust 1.63** [#719](https://github.com/rust-bitcoin/rust-miniscript/pull/719) |
| 87 | + |
| 88 | +# 12.3.1 - April 1, 2025 |
2 | 89 |
|
3 | 90 | - Silent fix for CVE-2025-43707 (crash on satisfaction of particularly crafted `thresh` fragments) [#798](https://github.com/rust-bitcoin/rust-miniscript/pull/798) |
4 | 91 |
|
5 | | -# # 12.3.0 - August 31, 2024 |
| 92 | +# 12.3.0 - August 31, 2024 |
6 | 93 |
|
7 | 94 | - Fix incorrect string serialization of `and_b` [#735](https://github.com/rust-bitcoin/rust-miniscript/pull/735) |
8 | 95 |
|
9 | | -# # 12.2.0 - July 20, 2024 |
| 96 | +# 12.2.0 - July 20, 2024 |
10 | 97 |
|
11 | 98 | - Fix panics while decoding large miniscripts from script [#712](https://github.com/rust-bitcoin/rust-miniscript/pull/712) |
12 | 99 |
|
|
0 commit comments