19:01:12 #startmeeting 19:01:12 Meeting started Thu Apr 2 19:01:12 2020 UTC. The chair is wumpus. Information about MeetBot at http://wiki.debian.org/MeetBot. 19:01:12 Useful Commands: #action #agreed #help #info #idea #link #topic. 19:01:16 hi 19:01:21 hi 19:01:27 hi 19:01:28 hi 19:01:28 hi 19:01:34 hi 19:01:44 hi 19:01:44 #bitcoin-core-dev Meeting: wumpus sipa gmaxwell jonasschnelli morcos luke-jr sdaftuar jtimon cfields petertodd kanzure bluematt instagibbs phantomcircuit codeshark michagogo marcofalke paveljanik NicolasDorier jl2012 achow101 meshcollider jnewbery maaku fanquake promag provoostenator aj Chris_Stewart_5 dongcarl gwillen jamesob ken281221 ryanofsky gleb moneyball kvaciral ariard digi_james amiti fjahr 19:01:46 jeremyrubin lightlike emilengler jonatack hebasto jb55 19:01:57 hi 19:01:59 hi 19:02:07 hi 19:02:12 hi 19:02:24 hi 19:02:43 no proposed topics for this week, it appears 19:02:46 Hi 19:02:48 any last minute ones? 19:03:07 hi 19:03:14 wumpus: I saw one earlier.. :p 19:03:17 Hope everyone is safe & healthy :) 19:03:19 0.20 bugfixes 19:03:22 or smth like that 19:03:33 FWIW it's time to do the branch-off for 0.20 19:03:38 and release rc1 19:03:59 luke-jr: don't see it in http://gnusha.org/bitcoin-core-dev/proposedmeetingtopics.txt, but that makes sense 19:04:03 IMO #18192 and #18465 should be fixed before rc1 19:04:05 https://github.com/bitcoin/bitcoin/issues/18192 | Bugfix: Wallet: Safely deal with change in the address book by luke-jr · Pull Request #18192 · bitcoin/bitcoin · GitHub 19:04:06 https://github.com/bitcoin/bitcoin/issues/18465 | bitcoin-tx (and probably others) fails to build without libevent · Issue #18465 · bitcoin/bitcoin · GitHub 19:04:22 could perhaps still branch off anyway, as they're not really ready :/ 19:05:06 18192 only affects avoid-reuse wallets, but the harm is irrepairable once affected 19:05:13 those are not even tagged for 0.20 19:05:30 hi 19:06:05 unless they're realy urgent might include them in a later rc or 0.20.1 19:06:19 are they 0.20 regressions? 19:06:51 hi 19:06:52 not regressions, no 19:07:22 I suppose 18465 has an easy workaround 19:07:39 when was 18192 introduced? 19:07:49 or when was the problem it solves introduced? 19:07:52 when avoid-reuse wallets were introduced, 0.19.0 IIRC 19:08:44 this sounds moderately serious... i suspect we just haven't heard about it much because few people enable that setting, i expect? 19:08:53 maybe; I don't know how popular it is 19:09:19 IMO if we don't fix it, we should at least put it in rel notes as a known issue 19:09:27 i doubt people really use multiwallet or create non-default wallets 19:09:41 achow101: it's not multiwallet-related 19:09:54 luke-jr: but you have to be using the multiwallet feature to enable it 19:10:06 i.e. create a new wallet 19:10:10 hmm 19:12:13 also from earlier [16:52:31] Looks like #18487 , #18487 and #18487 are the last three things to get in before branch-off? 19:12:14 oh wait, we can use the setwalletflag rpc to enable it. but that requires knowing what you're doing. it's not exposed in the gui 19:12:15 https://github.com/bitcoin/bitcoin/issues/18487 | rpc: Fix rpcRunLater race in walletpassphrase by promag · Pull Request #18487 · bitcoin/bitcoin · GitHub 19:12:15 https://github.com/bitcoin/bitcoin/issues/18487 | rpc: Fix rpcRunLater race in walletpassphrase by promag · Pull Request #18487 · bitcoin/bitcoin · GitHub 19:12:16 https://github.com/bitcoin/bitcoin/issues/18487 | rpc: Fix rpcRunLater race in walletpassphrase by promag · Pull Request #18487 · bitcoin/bitcoin · GitHub 19:12:31 rtt 19:12:33 err* 19:12:38 [16:53:06] * #18458 #18506 19:12:40 https://github.com/bitcoin/bitcoin/issues/18458 | net: Add missing cs_vNodes lock by MarcoFalke · Pull Request #18458 · bitcoin/bitcoin · GitHub 19:12:41 https://github.com/bitcoin/bitcoin/issues/18506 | net: Hardcoded seeds update for 0.20 by laanwj · Pull Request #18506 · bitcoin/bitcoin · GitHub 19:13:00 lol 19:14:26 yes those are tagged https://github.com/bitcoin/bitcoin/pulls?q=is%3Aopen+is%3Apr+milestone%3A0.20.0 19:14:54 18192 & 18465 should probably at least get tagged, even if they end up slipping the release 19:15:43 ok 19:17:02 another avoid_reuse related bugfix is #17824 (2 acks) 19:17:06 https://github.com/bitcoin/bitcoin/issues/17824 | wallet: Prefer full destination groups in coin selection by fjahr · Pull Request #17824 · bitcoin/bitcoin · GitHub 19:17:56 this adds way more things last-minute for 0.20 than I expected 19:18:03 (not saying it's as urgent) 19:18:18 17824 seems like a bigger change 19:18:26 we could also add a note to the release notes that avoid-reuse is buggy 19:18:46 or disable it 19:19:07 oh wait it was introduced in 0.19 not 0.20 19:19:12 so not that 19:22:01 maybe let's prioritize review on #18192, and see how far we get? 19:22:03 https://github.com/bitcoin/bitcoin/issues/18192 | Bugfix: Wallet: Safely deal with change in the address book by luke-jr · Pull Request #18192 · bitcoin/bitcoin · GitHub 19:22:10 if not, a release note can always be added 19:23:12 let's set a new deadline for the branch-off then? 19:23:40 we missed yesterday at least :) 19:23:50 why not just branch off now? 19:24:06 +1 19:24:13 I want to do rc1 release at the same time 19:24:18 oh kk 19:24:56 seems reasonable to aim to do them simultaneously 19:24:58 #proposedmeetingtopic limited use of boost in consensus for backports 19:25:02 * luke-jr shrugs 19:25:38 I don't see a reason to do a branch-off without immediately doing rc1, that would just result in more backporting work 19:26:03 oh no, no boost topic please 19:26:13 lol :| 19:26:14 at least not when we have known issues to solve still 19:26:38 jeremyrubin: we'd need to adapt the build system.. isn't it avoidable? 19:26:46 luke-jr: no it isn't 19:27:09 sipa: right 19:27:21 what kind of bugfix requires boost? :/ 19:27:33 anyways we can discuss after the meeting if needed or when it's the topics turn 19:27:44 but I don't think anyone wants to discuss it now 19:27:52 Except maybe you and I 19:28:30 well it's not like we have other topics 19:28:42 ^ 19:28:45 Ah I took your request literally 19:28:46 #topic limited use of boost in consensus for backports 19:29:16 Well; I think on the 0.21 horizon is upgrading to c++17, one feature of which means things like std::option being available 19:29:34 We're currently reviewing code for things like #18401 19:29:37 https://github.com/bitcoin/bitcoin/issues/18401 | Refactor: Initialize PrecomputedTransactionData in CheckInputScripts by jnewbery · Pull Request #18401 · bitcoin/bitcoin · GitHub 19:29:56 Which IMO should be properly written/refactored using option types 19:30:05 See https://github.com/bitcoin/bitcoin/pull/17977#discussion_r370948973 19:30:09 if it came at no cost, sure 19:30:36 but the level of review necessary for those things already far outweighs the (imho) minimal complication of just splitting variables up into a bool + other var 19:30:48 issue exists outside of taproot 19:31:05 sure 19:31:16 i wasn't speaking about that specifically 19:31:16 at large, not just in this context -- if we need to gate development of features which touch consensus to not use c++17 features in consensus 19:31:27 because it will interfere with backports 19:31:28 IMO we should just not allow C++17 for consensus code where it would make this problem 19:32:05 So there's three "solutions" 19:32:08 right, until those are outside of backport window 19:32:15 1) No c++17 stuff for a while because of backports 19:32:45 2) Allow linking in boost c++17 API fill-ins that we already have until out of support window 19:32:55 I think we should either switch to C++17 for the entire codebase, or not at all 19:33:15 jeremyrubin: we don't have in libconsensus 19:33:38 i think that once master is c++17, we can switch backports to c++17 as well, actually 19:33:49 moderating which parts of the codebase C++17 features are allowed and where not makes things very complicated for reviewers and maintainers 19:33:51 sipa: defeats one big point of backports? 19:33:55 3) upgrade backports to c++17 :) 19:34:00 so I'd prefer to not use C++17 at all then 19:34:08 Not switching from c++11 for the entire codebase could be a problem for Qt stuff on macOS 19:34:16 IIRC backports only delays us an extra year, right? 19:34:17 it's not like we really need it 19:34:34 wumpus: well that's a deadlock, because there will always be some backport to support 19:34:40 it'[s always 'it would be nice to use this new c++ standard' 19:34:46 which it would be, sure 19:34:51 so independent of the urgency of c++17 or when it is introduced, it's a good question to address 19:35:41 luke-jr: backports exist because introduced features introduce compatibility issues for people who want a safer upgrade path 19:35:42 It's also the right time to start thinking about it IMO -- if 0.21 will be c++17 release 19:36:05 Which I've seen wumpus say is feasible 19:36:09 yes, I just think using C++17 for only parts of the codebase is impractical 19:36:12 sipa: one of those issues is C++ version compat 19:36:33 but if there are a significant amount of people who wouldn't be able to upgrade to a new major version because of c++ language compatibility issues, we simply shouldn't update to c++17 (yet) 19:36:40 how hard would it be to compile some of the codebase with C++17 enabled, and not others? 19:36:42 wumpus: that's fair 19:36:52 luke-jr: I really don't like that idea. 19:37:01 luke-jr: I'm sure it's *possible* but I fear all kinds of API conflicts 19:37:03 luke-jr: would probably make binaries bigger 19:37:10 hmm 19:37:11 luke-jr: I think the threat of something like an uncaught exception is very real in that scenario. 19:37:13 wumpus: yeah 19:37:19 cfields: right, I see 19:37:35 cfields: yes, it's probably an unacceptable risk in our case 19:37:53 How was this handled historically? 19:37:57 of course, if it's only for checking 19:38:04 so maybe we can settle on: we don't update to c++17 until we're in a position where no new backport releases are expected 19:38:05 you could compile the consensus files with c++11 *as well* 19:38:06 Or was the switch to 11 widely supported enough at the time 19:38:09 and throw away the result 19:38:41 if then an emergency happens that causes us to revert on that - so be it 19:38:43 Or we can turn on c++17 for 0.20, but compile both for checking as wumpus suggests 19:38:54 That way we're "priming" our backport window 19:39:17 I'd still prefer not to do this (also because what is 'consensus code' is not very well isolated in our code base) 19:39:21 I don't think c++17 has any *breaking* changes? 19:39:40 wumpus: I'm saying the whole codebase not just consensus 19:40:10 jeremyrubin: iirc ^^ is what we did for c++11. 19:40:12 compile the entire codebase with c++17 and c++11? that's a lot of cverhead 19:40:12 We can upgrade to c++17 today but not accept code changes that break c++11 compat. 19:40:36 wumpus: we did that for a while with c++11 i think, i actually? 19:40:48 though i'm not sure this is the right time; our focus now is 0.20 19:40:51 Releases etc can be c++17, but anyone can build for c++11. We probably need to do this for 1-2 releases 19:40:59 sipa: it is the right time to start worrying about this 19:40:59 and i think the discussion of when c++17 is a different one 19:41:06 sipa: oh you mean more like a travis run that compiles with c++17 instead of c++11? 19:41:12 sipa: yea, that's what we did. 19:41:12 wumpus: right 19:41:16 Because if we do it for 0.20 it means 0.21 and 0.22 can use c++17 19:41:25 sipa: we had a release that was "technically" c++11, but iirc we didn't force the flag on. 19:41:32 Then we forced it on in master. 19:41:36 cfields: right 19:41:52 makes sense to do that again then 19:41:54 for 0.21 19:41:57 Don't remember for backports, I guess we were just kinda careful/reasonable about it? 19:42:09 i guess if someone does the work for adding a c++17 travis build, and it passes with effectively no code changes... why not 19:42:39 I don't expect that to take a lot of changes 19:43:16 i think so 19:44:01 sounds like a plan to me? 19:44:11 Also, we banned certain features when we started with c++11. thread_local is the obvious one that comes to mind, but IIRC there were others as well. 19:44:34 if there's consensus, can someone summarize the game plan? 19:45:38 I can try... 19:46:00 1) Make 0.20 c++17 and c++11 buildable if easily doable 19:46:05 dongcarl: the idea is to add a travis run to compile the current code with c++17, do the minimum changes to be compatible with c++17 as well as c++11, for 0.21 19:46:13 trying a C++17 build now 19:46:24 with gcc 9.3 19:46:37 I thought we'd do it for 0.20 if it's a small patchset and we haven't branched it yet? 19:46:37 and delay the real switch to c++17 (like actually using new features) to 0.22 19:46:51 no, we're not going to do anything like that for 0.20 19:46:53 Why not do it in 0.20 if it can be done? 19:47:05 It has basically 0 functional changes? 19:47:08 0.20.0rc1 should have been tagged yesterday 19:47:30 if anything is going in it's bugfixes 19:47:37 fwiw, I'd like to do at least a small audit on the c++17/c++20 errata to see if there are any obvious implementation minefields to look out for. 19:47:41 I mean it sort of doesn't really matter if it's in 0.20 or not as c++17 compat can be backported into a minor anyways... 19:48:29 Okay, so what will gitian builds use? v0.20: c++11, v0.21: c++11, v0.22: c++17? 19:48:30 (c++20 because presumably several c++17 issues were fixed there) 19:48:37 cfields: Right, good call 19:49:01 dongcarl: gitian builds could use c++17 from 0.21 on 19:49:18 it just still has to be compatible with c++1 19:49:49 wumpus: ah, so we can easily back out back to c++11 if issues are discovered? 19:49:51 so that things can be backported 19:49:57 sipa: that too 19:49:59 right 19:50:05 that seems reasonable 19:50:17 Not sure about g++, but clang++ definitely has a switch for enforcing c++11 syntax/features for newer standards. 19:50:31 So that'd be easy enough to lint/automate. 19:50:39 oh the irony 19:50:46 cfields: we only need one compiler to have that feature fortunately 19:50:55 the only compile error i get with c++17 is Span related 19:51:00 jeremyrubin: right 19:51:27 Got it: v0.20: COMPAT with c++11 + c++17 only if easily doable, GITIAN with c++11; v0.21: COMPAT with c++11 + c++17, GITIAN with c++17; v0.22: COMPAT with c++17, GITIAN with c++17. Is this the plan? 19:51:51 sgtm 19:52:02 dongcarl: ack 19:52:20 Great. Will post on the c++17 issue 19:52:22 Loks right. And backports from 0.22 only go to 0.21? 19:52:35 Or to 0.20 too if we can get those builds up easily 19:52:57 (depending on the feature using APIs that make backport non-trivial) 19:53:33 jeremyrubin: yes 19:53:40 I think as long as we don't race to replace every line of code with a c++17ism we'll be fine, generally. 19:53:53 it's pretty rare in the first place to backport things two releases 19:54:01 cfields: also that 19:54:32 cfields: noooo you can't just refactor the whole.... hahahah find and replace go refactorrrrrrrrrr 19:55:07 refactorrr̅ 19:55:08 hehe I think we had a rule for that for C++11 as well, don't C++11-ize things for the sake of doing so 19:55:34 right 19:57:10 is someone going to post this into the c++17 issue? 19:57:35 dongcarl: 19:57:46 FWIW, with #18468 + updating ax_cxx_compile_stdcxx.m4, everything compiles in c++17 19:57:48 https://github.com/bitcoin/bitcoin/issues/18468 | Span improvements by sipa · Pull Request #18468 · bitcoin/bitcoin · GitHub 19:58:05 Yeah making a little table now, perhaps jeremyrubin can add on about the backporting plan, not sure I understand it fully yet 19:58:30 (add on in the issue) 19:59:10 don't make me have to upgrade my distro to support new c++ versions 19:59:27 cncr04s: what distro might that be? 19:59:44 (we don't generally update c++ versions when it interferes with building on common platforms) 19:59:51 ubuntu 14.04 20:00:10 I'm not sure upgrading core is your largest concern there 20:00:14 cncr04s: also, runtime is not affected. Releases are linked statically against lib(std)c++. 20:00:34 So this is 99% a development decision. 20:00:43 #endmeeting