19:00:50 #startmeeting 19:00:50 Meeting started Thu Apr 14 19:00:50 2016 UTC. The chair is wumpus. Information about MeetBot at http://wiki.debian.org/MeetBot. 19:00:50 Useful Commands: #action #agreed #help #info #idea #link #topic. 19:00:56 confidence inspiring wumpus 19:01:01 gavel wont be attending due to last week's beating. 19:01:04 heh 19:01:06 "If I have to." 19:01:12 topics? 19:01:32 Whats up with the 0.12.1 release? I haven't been paying attention to it. 19:01:34 status of 12.1 19:01:41 0.12.1 status 19:01:57 0.12.1 is at rc2 19:02:29 haven't heard of any issues with it 19:02:36 There was a 0.12.1(rc) block mined in the last week. 19:02:41 i suggest we go ahead with release? 19:02:50 +1 19:02:53 +10 19:02:56 -11 19:03:02 doh! 19:03:03 +1i. 19:03:46 gmaxwell: interesting; block version 0x2..? 19:03:52 but not classic 19:03:53 we should release 0.12.1 when 0.12.1 is observed to be released. 19:04:18 Luke-Jr is the first member of the club containing Luke-Jr as first member 19:04:33 sipa: yes, it seems we kinda flubbed the part of the motivation with the BIP9 starting dates to remove the possibility of warings in advance of a release. :) 19:04:37 that sounds lonely. 19:04:38 usually we wait a week after the release of the binaries before labeling the rc as final, the binary release was only 3 days ago 19:04:44 wumpus: ok 19:04:47 but if you insist 19:05:01 topic suggestion: segwit and backports 19:05:08 let's insist 19:05:08 Yes. We should wait at least one week. 19:05:10 sipa: but at least thats just a one time event. 19:05:38 well 1 week - 3 days is still before the next meeting. So the action should be release 0.12.1 prior to the next meeting. :) 19:05:43 could start the gitian building now and wait the rest of the week to publish? 19:06:11 the tag could be seen as "release" 19:06:11 1 business week is 5 days :) 19:06:27 good to hear a block would mined with 0.12.1 though, hadn't heard that yet 19:06:32 s/would/was 19:06:54 why not tag 0.12.1 we can build over the weekend and release on Monday? 19:07:14 Why not tag on monday and build on monday? 19:07:22 You don't need to handhold you bulder? 19:07:24 wumpus decides 19:07:26 the building has latency. 19:07:28 you're too eager 19:07:46 gotta build, cfields needs to sign etc. 19:07:50 in the future we should figure out how to deseralize builds of the final release and publication of the tag. 19:08:13 huh 19:08:16 we could agree on a commit and build that and tag later. 19:08:40 the fact that we've been doing "releases" that get announced and circulated ahead of the project's announcement and then having binary days delayed is suboptimal. 19:08:41 we need to have gitian build inside a homomorphically encrypted environment, so that we can verify binary correctness, but only release the key at release time 19:08:43 is this still serious? 19:08:44 fwiw, dropping the commit hash in the binary would create a few more options 19:08:55 wumpus: no 19:09:00 ok... 19:09:02 next topic? 19:09:13 [21:05:02] topic suggestion: segwit and backports 19:09:17 segwit backports 19:09:28 #topic segwit and backports 19:09:42 so, segwit branch is currently on top of 0.12.1 19:10:04 so you'd be forward porting it to master 19:10:13 with a set of backports from master and some PRs first 19:10:37 it would be ideal if the same branch can merge into both 0.12 and master, but that seems unlikely for segwit 19:10:40 i don't know what the best way forward is, but i think we're close to PRing it for bitcoin 19:10:40 FWIW on the other implementations front, btcd has what looks like a more or less complete implementation of the consensus changes for segwit and is interoperating with segnet4. 19:10:53 gmaxwell: nice! 19:11:13 sipa: woohoo! 19:11:28 gmaxwell: "and then having binary days delayed is suboptimal." why don't you ever gitian-build? :p 19:11:35 do we rebase on master, have that merged first, and then "magically" come up with a 0.12 backport? :D 19:11:49 which happens to include the necessary backports 19:11:49 sipa: I hear you are good at magic 19:12:01 sipa: what's the current segwit branch? 19:12:05 without segnet ideally 19:12:34 Luke-Jr: segwit4 and segwit (the first is where i continuously rebase, the second i push to whenever there is something significant) 19:12:36 the reason for the delay is that a certian minimum threshold of number of people have to build it, submit signatures, etc., the only way to speed it up wouldb e if people build it quicker, although it's already lots faster than it used to be 19:12:53 Luke-Jr: they have segnet, though the commits for segnet are separate and can easily be skipped 19:13:17 wumpus: if you'd like me to do so, I will. (re gitian builds) 19:13:28 that's anohter question: do we merge segnet? 19:13:36 gmaxwell: yes please. 19:13:42 gmaxwell: I dont mind, but please don't complain if you're not involved okay :) 19:13:55 sipa: do we really need segnet? 19:14:00 btcdrak: i don't think so 19:14:07 This might sound crazy, but I'd be in favor of merging the segwit PR very quickly. I think we should make the PR's for master and 0.12 at roughly the same time. And then we should all bust our ass to review them at roughly the same time. 19:14:22 that sounds fine to me 19:14:28 If they are outstanding for a while, then we'll all be reviewing different code as its rebased or merge conflicts are addressed or whatever 19:14:33 morcos: no complaints 19:14:36 We should just rip the bandaid off and get it in 19:14:39 wumpus: my complaint wasn't about any of the people, for sure. if it were, I'd just build. Also, it wasn't really a complaint with anything we're doing. It's a complaint that the community prereleases our releases, but we can't stop that; so the best fix is to reduce latency, I think. 19:14:59 And then every other PR out there can get conflicted once and be done with it 19:15:02 in all fairness there has been so much testing and peer review and help from downstream consumers with segwit. 19:15:16 ok, will PR soon 19:15:29 A quick merge sound good. Also, nobody can complain we haven gave any change for review because there is already an open pr since weeks/month. 19:15:31 both master and 0.12 19:15:39 super. jonasschnelli you should close your preview PR so it doesnt get confusing 19:15:43 I've felt bad about working on 0.13 in areas that I know will need to be tweaked for segwit, so I can agree with that. As soon as 0.12 is tagged this could be done. If we end up needing a 0.12.2 without segwit we could branch 0.12 pre-segwit. 19:16:07 Yes. Will close. Its pointing also to the wrong branch. 19:16:24 gmaxwell: maybe we dont need to over complicate if the PR/backport will come soon. 19:18:19 My main point is that it is goign to be a lot of work to adequeately review and test segwit. It'll be more efficient use of everyones time if we concentrate that effort at the same time. 19:18:29 that makes sense 19:20:19 any other topics? 19:20:34 what about c++11 status? 19:20:39 ack 19:20:47 #topic c++11 status 19:20:55 * sipa summons cfields 19:21:16 wumpus: travis has enabled caching but only for flagged projects. I mailed this morning and asked for the flag. 19:21:34 cfields: is that the final blocker? 19:21:43 sipa: as far as i know, yes 19:21:47 awesome 19:21:53 that was already the case right? open source projects needed a flag to support caching. But we need a new one now? 19:22:06 hopefully theyll give it :) 19:22:07 wumpus: no, for trusty 19:22:08 sec.. 19:22:46 https://github.com/travis-ci/travis-scheduler/pull/14 19:23:07 merged last week 19:23:33 great! 19:23:47 how do we plan to proceed after that? 19:23:50 hopefully we can start supporting it this week then 19:23:56 would we be using C++11 in 0.13 then? 19:24:05 if there's a delay with this step, I'm completely ok with saying "screw it" and disabling whatever we need so that we can limp along until it's not blocking anymore 19:24:32 gmaxwell: that was the plan 19:24:33 Travis is not willing to flag just any projects. We should try to avoid relying on it. 19:24:40 wumpus: good. :) 19:24:43 so, I've been hacking on c++11 on a branch of mine for a while. One thing that's clear is that we need a policy on what modernizations we'll allow... 19:25:00 otherwise, I'm afraid it'll be endless PRs 19:25:10 Luke-Jr: it's just a flag while it's in testing 19:25:10 cfields: there are a couple of mechanic translations i think we'll want ayt some point 19:25:21 I created this in december, a bit optimistic maybe, but five months later :) https://github.com/bitcoin/bitcoin/pull/7165 19:25:39 We should keep modernization PRs slow initially. Then do the mechanical updates (e.g. replace boost with C++11).. and only after go back and make more changes. 19:25:49 at least thats my intuition. 19:25:50 cfields: BOOST_FOREACH and boost::thread are good examples 19:25:56 replacing boost is far from mechanical 19:26:00 well ok some parts 19:26:10 sipa: yes, for sure. what I worry about it thousands of PRs that sprinkle in std::move all over the place. 19:26:16 is there any downside to using c++11 in new code while not yet doing any modernization PR's? 19:26:16 but for example: adding move constructors instead of swaps everywhere 19:26:17 in particular I think it's probably unwise to do many moderinization updates when non C++11 versions are still supported. 19:26:20 someone remind me why are we not doing a release that fails with C++11 at configure, before actually introducing C++11 code? 19:26:23 (and emplace, which would be significant in several places) 19:26:25 Start with only new code is C++11, then only boost-replacement, then revisit 19:26:26 ? 19:26:29 because that would vastly complicate backports. 19:26:41 one option is building with c++11 and c++03 both for a while 19:26:44 I would say we have a lot on our plate in the next couple months, and we should just say no modernaization right now. (sounds like what BlueMatt said) 19:26:46 meh 19:26:47 morcos: i think that would be my preference 19:26:56 we can already build with c++11 for quite a while, that's nothing new 19:27:12 ok 19:27:25 just not too actively replace things initially 19:27:42 I mean for 0.13 Id say dont actively replace anything unless its a big performance win 19:27:43 at the very least, let's add something to configure that fails if C++11 is not supported? 19:27:49 we've never let refactors through too quickly 19:27:54 correctness is most imporant 19:28:02 that way we get user reports 19:28:03 Matt has an upcoming PR that uses C++11 that it might be nice to not have to port to C++03. 19:28:07 Luke-Jr: yes, see the pull I quoted 19:28:20 Luke-Jr: it fails without c++11 support 19:28:21 gmaxwell: for the tcp stuff I think it actually doesnt matter, I was just lazy...udp would be annoying to fix, I think 19:28:28 wumpus: let's use a real example.. adding move ctors to our containers 19:28:31 yea or nay? 19:28:39 cfields: yay, please... but maybe not immediately 19:28:49 cfields: for 0.13, I'd vote only new code, maybe boost replacement, too 19:28:57 cfields: if it helps performance, absolute yay 19:28:59 (prevector specifically is unsafe to use for more complex types now) 19:29:07 but I'm always the annoyingly conservative one, sooooo 19:29:11 boost replacement is too late for 0.13 19:29:15 wumpus: agree 19:29:15 too much work 19:29:29 wumpus: ehh, I meant partial-boost-replacement 19:29:32 we can do some minor things and use it in new code, but aiming to replace boost enitrely just won't work 19:29:38 New code +1, especially new features, but as I mentioned, I think we should avoid making backports to 0.12 harder while 0.12 is still supported. 19:29:44 just turning on c++11 may already give a performance improvement, because STL magically gets move constructors 19:30:01 At least we could throw out boost::filesystem soon (there is no c++11 equivalent). 19:30:05 to me it seems we want to backport so much to 0.12 it is starting to make more sense to do 0.13 sooner 19:30:09 do a release from master 19:30:21 may work better with cfields' holiday too 19:30:32 wumpus: but then not release segwit for 0.12? 19:30:40 stupid inconvenient honeymoon... 19:30:49 thats the issue right.. are we only going to support it on 0.13? 19:30:50 cfields: priorities! 19:30:54 heh! 19:30:56 morcos: I don't think we should do that. 19:30:59 i think we should backport segwit to 0.12 19:31:03 (we have to change the release schedule a bit anyway) 19:31:08 let's not push users too much 19:31:24 if we release 0.13 we still have to backport to 0.12 19:31:34 since we support this and prev version 19:31:36 wumpus: what kind of schedule change are you thinking of? 19:32:42 Can we talk about what notable features are still in flight that people are working on with an intent of targeting 0.13? 19:32:44 maybe backport to 0.12 and release 0.13 early. 19:33:14 whats the hurry to release 0.13 early in that case? 19:33:15 yes was a bad idea 19:33:19 This is the list of 0.13 milestones https://github.com/bitcoin/bitcoin/milestones/0.13.0 19:33:19 ntext topic 19:33:21 jonasschnelli: was that benchmark of leveldb vs lmdb on a system with a hdd or ssd? 19:33:32 ssd 19:33:40 interesting 19:33:52 (can be discussed after the meeting) 19:34:15 btcdrak: there are things people are working on that aren't PRs yet. 19:34:18 gmaxwell: I'd like to rework the config/arg stuff, but I don't know I'll have time to finish it before 0.13 forks 19:34:43 wumpus: next topic? we didnt really come to a conclusion at all here yet? what is the release schedule for 0.13 looking like, and does that mesh with turning on C++11 and allowing new code to use it? 19:35:00 (and there's no reason it can't wait for 0.14 etc) 19:35:07 well the change we have to make in the 0.13 release schedule is to clear june - this works btter for cfields 19:35:29 but we can just as well postpone it to later, moving it ealier was just a stupid idea 19:35:36 no reason to change just for me? 19:35:47 oh just a note regarding ctaes, independent review is in progress from one of Matthew Green's graduates, hopefully available in a couple of weeks. 19:35:51 well the rc cycle was exactly planned that 19:35:56 then* 19:36:03 wumpus: I dunno that its stupid. But it should be made with consideration. 19:36:07 can do that in july instead of june , no problem 19:36:14 gmaxwell: yes, i'm working on 2 things that might be nice to get in. an improvement to fee estimation and some measurement of policy alignment. they are goign to be annoying for anyone to review, but they also stand alone. 19:36:37 BlueMatt: release schedule 0.13: https://github.com/bitcoin/bitcoin/issues/7679 19:36:37 BlueMatt: C++11 is getting turned on, in a week barring emergencies if I understood above. And it sounded like new things could use it, but we'd avoid going and refactoring for more until 0.14. 19:36:40 wumpus: yes i like the idea of pushing back 0.13 a bit 19:36:48 gmaxwell: ack 19:36:49 gmaxwell: ACK 19:37:13 Features I'd like to see in 0.13: wallet/RBF (+GUI), simple profiles (maybe GUI only), BIP32 (probably not in 0.13 because of lack of review) 19:37:15 regarding 0.13, i thought it might make sense to push the freature freeze back slightly, since there's a meetup happening in zurich a week afterward that many of us would be at 19:37:17 wumpus: ok, so release schedule stays as-is for now? 19:37:29 BlueMatt: I proposed moving the rc phase to july instead of june 19:37:33 sdaftuar: good point. 19:37:34 in talking about using C++11, we won't need GCC 5, right? 19:37:44 because GCC 5 is not really a reasonable minimum yet 19:37:44 when does cfields gete back? 19:37:53 wumpus: ack 19:37:59 Luke-Jr: 4.8 should be fine, i think 19:38:02 no, we don't need gcc5, the features we should use of c++11 shoudl work in gcc4.8+ 19:38:02 k 19:38:05 Luke-Jr: i believe (but cfields correct me) that the features from c++11 we'd want are almost entirely support in 4.8 19:38:11 otherwise we can't use trusty for building 19:38:18 BlueMatt: july4ish 19:38:20 and that's the whole point 19:38:35 that's clear, thank you 19:39:05 BlueMatt: if it turns out to be too problematic, i can revisit the dates. 19:39:20 Luke-Jr: C++11 is fully supported in 4.9, and 4.8 has basically everything. I think we could reference 4.8 for compatibility. 19:39:22 cfields: lol, dont change honeymoon for us 19:39:23 cfields: no 19:39:27 Luke-Jr: https://gcc.gnu.org/gcc-4.8/cxx0x_status.html 19:39:28 cfields: you better hope your fiance doesnt read these logs 19:39:38 haha 19:40:13 heh 19:40:36 wumpus: ACK pushing 0.13 a month...gives a week or two for post-zurich things to make the feature freeze 19:40:38 sdaftuar: if we move the rc phase a month we can move the feature freeze with the same amount 19:40:48 wumpus: eg things that get reviewed in zurich can be cleaned up and merged before freeze 19:40:51 BlueMatt: right 19:40:52 wumpus: sounds good to me 19:41:01 ACKs on pushing a month? 19:41:06 ACK 19:41:11 ack 19:41:12 ack 19:41:14 ok 19:41:14 I don't see any resolution to C++11's ABI issues in the github tracker - did that get resolved? 19:41:15 ACK 19:41:29 * Luke-Jr not care on 0.13 schedule 19:42:05 #action move 0.13 schedule a month forward 19:42:39 Luke-Jr: what issues? 19:42:41 Luke-Jr: https://github.com/bitcoin/bitcoin/pull/7165#issuecomment-165499462 19:42:52 all known ABI issues result in link errors 19:43:05 for that matter, gcc6 will build with c++14 by default. So either way (maybe even for 0.12 backport), we need to specify the standard we're using. 19:43:31 hah, c++14 19:43:34 As far as other in-flight stuff, Matt has implemented efficient block relay; related to a design I've been circulating for a long while. He has code up, and it works pretty well.. I get about a 96% reduction in block bandwidth. The protocol needs a few tweaks still but once in, it should be able to send the vast majority of blocks in 0.5 round-trip times (plus whatever awful overhead TCP adds), 19:43:39 not looking forward to going through this again :( 19:43:40 the rest will need 1.5 RTT. I've started on a BIP. Matt has also been working on some other things that go further and eliminate even more latency, though that work is likely only going to be interesting to miners. 19:44:22 I think gmaxwell is more excited about tcp-smaller-block relay since his internet at home sucks 19:44:27 I think with segwit upcoming I'd really like to see that work make its way into 0.13, since we really need propagation time mitigations, and the relay network client only goes so far. 19:44:27 nice 19:44:33 BlueMatt: you have a branch somewhere? 19:44:39 I see it more as foundational work that is useful for compression on the wire, but is primarily for udp-based relay which is nice and fast :) 19:45:02 cfields: simple tcp stuff at https://github.com/TheBlueMatt/bitcoin/commits/udp, udp-based stuff which hasnt been fully rebased on top at https://github.com/TheBlueMatt/bitcoin/commits/udp-wip 19:45:21 cfields: how does it make sense that they will build with c++14 by default?! 19:45:44 tcp stuff is close to ready with one or two stubs to be replaced, pr next week when I'm off vacation, udp stuff is a bit longer-term 19:45:48 wumpus: i suppose because it should all be forward compat, in theory 19:45:50 wumpus: i think c++14 has less impact on standard libraries 19:45:50 BlueMatt: thanks 19:46:09 and is much more incremental than c++11 was 19:46:09 cfields: if you want to tackle the udp-wip changing to libevent I'd owe you :) 19:46:12 yes, c++14 as i see it is kinda a c++11 fixup 19:46:23 ok... 19:46:30 cfields: IIRC, binaries (incl libraries) compiled with C++11 mode are incomptible with libraries compiled with C++98 mode. 19:46:36 c++14 finally has a solution for the exponentially-sized error messages 19:46:37 sipa: ok 19:46:57 Luke-Jr: that has nothing to do with how we compile though. That'll be the case either way. 19:47:00 BlueMatt: mostly trying to avoid bleeding out over load increases permitted by segwit. :) 19:47:06 sipa: nice! 19:47:13 BlueMatt: heh yes, we should sync up some 19:47:34 cfields: ? our dependencies are compiled with C++98 in almost all cases today 19:47:37 anyhow any other meeting topics? 19:47:49 MAST bip status? 19:48:06 lol. way too premature for discussion here. 19:48:13 kanzure: it got published BIP114 19:48:18 Luke-Jr: yes, and they'll be switched to c++11 for the ones we build. Otherwise it's a cointoss what users have on their systems, sticking with c++03 could be equally incompatible for them. 19:48:19 Luke-Jr: cfields let's leave the small implementation details about the c++11 switch to after the meeting 19:48:27 ack 19:48:36 cfields: we do not build our dependencies typically. 19:48:49 wumpus: k 19:49:03 I'm sure we'll get it to work somehow 19:49:31 #topic MAST bip status 19:49:44 no no, it was sufficiently NACKed 19:49:59 i haven't looked at it yet 19:50:17 https://github.com/bitcoin/bips/blob/master/bip-0114.mediawiki < fwiw 19:50:30 #link https://github.com/bitcoin/bips/blob/master/bip-0114.mediawiki 19:51:43 possible topic?: using SHA256d for segwit 19:52:30 sha256d? 19:52:33 Luke-Jr: i'd rather not break all tests and downstream code that was written yet... though we'll want new segwit script versions soon, and they can use sha256d hashing 19:53:04 wumpus: background: p2wsh scriptPubKeys contain a SHA256 (not double SHA256) of the witness program 19:53:09 double sha256 19:53:26 which is incompatible with the "P2SH^2" scheme that greg proposed a while ago 19:53:35 oh right 19:53:43 it would be consistent 19:53:47 The only advantage of it that I'm aware of is the p2sh^2 trick which would need new address types and such to ever get used. Disadvantage is that its slow. 19:54:12 And consistency, I suppose. 19:54:15 ... which interacts with the discussion of addresses for native segwit 19:54:17 gmaxwell: there's no address types for bare segwit yet 19:54:36 Luke-Jr: i do plan on proposing one 19:54:41 (though not immediately) 19:54:59 yes, my point is that we have an opportunity to avoid breaking compatibility 19:55:11 we'd purposefully moved them out to avoid shedpainting and address-type-deployment issues from harming segwit consensus code deployment. 19:55:44 gmaxwell: sha256d also prevents length extention attacks although i dont see how that's applicable here at all 19:55:49 Luke-Jr: I think that nativesegwit of that initial type is not likely to see long term use, see also that MAST bip. 19:55:56 sipa: am I incorrect in assuming adjusting downstream code for this would be super trivial? 19:56:26 Luke-Jr: probably, but we also don't have a way to deploy P2SH^2 easily 19:56:32 gmaxwell: yes, but I think sipa wants an address format that works for all segwit outputs, regardless of version 19:57:00 sipa: that's not something we need to bundle with making it possible 19:57:37 we should close the meeting and continue the discussion. 19:57:40 ok 19:57:46 no resolution to this will happen this instant. 19:58:51 #shutdown -h now meeting 19:59:04 sudo! 19:59:08 #endmeeting