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