rust-bitcoin/rust-bitcoinconsensus

Plan to upgrade to 0.21 ?

RCasatta opened this issue · 9 comments

Just wondering if there are plans to upgrade to bitcoin 0.21 ?

In particular, I was curious to test if there were any upgrade in verification speed in libsecp256k1

@RCasatta I had some trouble when updating to 0.21 with c/c++ compiler errors. Would be useful to get some input from someone that knows about c/c++. I just kept playing with it and got it to compile eventually master...jrawsthorne:0d4f17d2e1e052106f658cde0d8621af4c5ac85c

I am not an expert on c/c++ compiler and the reason I open an issue instead of a PR...

I had a quick look at the 0.21 branch from @jrawsthorne excluding the taproot changes after the message in this thread.
The remaining compiler warnings are because in build.rs an ancient C++ standard is used: "-std=c++11". If using "-std=c++17" instead, the warnings disappear.
The changes in that branch look more product specific than C++ specific. They look good to me without diving into every one of those flags.
A slightly updated version is here for 0.22:
https://github.com/weareseba/rust-bitcoinconsensus/tree/0.22

Hey @ulrichard, I was trying to upgrade using your branch but it breaks the "external-secp" feature, I believe its to do with this line

    secp_config.compile("libsecp256k1.a");

Would I be right in thinking that if one wants to use an external secp they'd have to pass in a path to this static library?

Yes, that sounds reasonable. But maybe then other things also have to be specified.
I'ts not obvious to me how the "external-secp" feature is used, and I couldn't find any documentation for it.

@elichai git blame informs me you added this feature, are you able to point us in the right direction please?

The external-secp feature is needed because libbitcoinconsensus exposes its own libsecp symbols.

It's not clear to me at all what's going on here. Yes, Core has moved from C++11 to C++17 (and maybe even 21 now..) so it makes sense that we'd need to bump the C++ version. But I don't understand why any stuff with libsecp needs to be touched at all.