You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Merge #780: expression: replace recursive Tree datatype with a non-recursive one
6c8c34b descriptor: add fuzz test comparing to published rust-miniscript 12 (Andrew Poelstra)
ebae0ef miniscript: remove unused Result from extdata type_check (Andrew Poelstra)
d05a034 expression: rewrite Tree module to no longer use a recursive data type (Andrew Poelstra)
616b6b6 expression: hide all Tree fields and encapsulate API (Andrew Poelstra)
4137a59 expression: encapsulate threshold parsing (Andrew Poelstra)
Pull request description:
Replaces the recursive `expression::Tree` datatype with a nonrecursive one. Exposes a limited API consisting of operations which can be done efficiently (mainly, in-order iteration) and which are necessary for parsing trees and converting them to other types.
As a side effect this simplifies/unifies some more code and provides better error messages, in particular for threshold parsing. But that isn't a focus of this PR and I haven't quantified the changes.
This is the last of the "expression" PRs. I have followups which go in two directions: (1) eliminating more recursion and recursive datatypes, and (2) improving the TapTree API, which I found I needed this new expression API to do cleanly.
Will post benchmarks once I have them.
ACKs for top commit:
sanket1729:
utACK 6c8c34b
Tree-SHA512: ee64f1aa5fdc3917b6561713249fb04a39baa30c43090705cd899ec88bc828fc6227ae6ee91f58b22ba02dd4a2026d8240156382fb27cbfb3a904599d629974a
0 commit comments