:: Re: [Libbitcoin] v3 update
Pàgina inicial
Delete this message
Reply to this message
Autor: Eric Voskuil
Data:  
A: Police Terror
CC: libbitcoin
Assumpte: Re: [Libbitcoin] v3 update
It's on the roadmap, but I was going to kick off v4 with that just to save some time. It will take me a full day to get it all switched over. I don't like the idea of having both the old and new libs on GitHub since it will be confusing no matter what we do.

So my plan was to backport the change to v2 and drop "support" for v1 (which is already a non-issue). This would make it harder to build earlier versions of v2.x but I think that's a reasonable tradeoff. Currently the generated install scripts build from the top of their target branch. This keeps things simple and moving forward for each branch. Backporting will be a second day of work.

As for namespaces and directories, my plan is to use:

libbitcoin-system
libbitcoin::system
libbitcoin/system

And to change "bc" to an alias for "libbitcoin::system". However there is still a significant downside to not having system in the namespace hierarchy for the other libs. In the .cpp files we can apply "using namespace bc;" but we cannot use this in .hpp/. files. As a result there will be a lot of "bc::" clutter introduced into those files. I don't see any way around this while maintaining a consistent nomenclature.

I've added the ISO doc to my reading list. It's a little strange to me that I actually find that interesting. But I've spent a lot of time developing best practices for modern C++, so I'm really curious. Thanks for posting.

e

> On Sep 16, 2016, at 1:51 AM, Police Terror <PoliceTerror@???> wrote:
>
> Are we going to rename libbitcoin to libbitcoin-system for v3 release?
>
> The ISO C++ has released a core guidelines document:
>
> https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md
>
> We're mostly following that already. Only thing I've noticed is in the
> API many times primitive types are being used like int or even std::vector.
>
> Eric Voskuil:
>> Just wanted to give a quick update on our v3 progress. I didn't make my
>> target date before heading off to Mongolia for a couple of weeks. After
>> getting back I started back up on validating the new network protocols
>> work. I resolved a couple of issues in the new implementation and it was
>> going great. At that point I decided to fully validate the mainnet and
>> testnet chains, as I like to do before a release.
>>
>> As many of you know, the blockchain library is slated for a major rework
>> in v4, so we've been deferring optimizations in that code. For example,
>> we don't even parallelize script validation. But v3 has been looking so
>> good in other areas this started too look even worse by comparison. So
>> we decided to take a week or two to redesign the block and transaction
>> validation code, allowing us to get some significant optimizations
>> implemented. This is coming along nicely and I hope to have some
>> improvements to report soon.
>>
>> Once we complete this work we will need to finish protocol validation.
>> The incoming block protocol is done, working perfectly. We've written
>> the other major protocols, including outgoing block and in/out
>> transaction, just need to verify them as well. The minor protocols have
>> been implemented and working well for some time. I don't spend a lot of
>> time documenting, because there has just been so far to go in just the
>> code. But believe me, it's getting really good.
>>
>> For example the network redesign has allowed me to isolate protocols by
>> version and implement robust version negotiation based on config. So you
>> can specify protocol version min/max in config and the node will
>> perfectly implement that range. So it can simulate older and eventually
>> newer node behavior. It's also really easy to see protocol behavior
>> through source inspection, and will get even better before it ships.
>> Right now I'm thinking about 4 more weeks until we can complete the
>> blockchain work and get back to validating the remaining network
>> protocols. Sorry about the scope creep, I just couldn't help myself :).
>>
>> e
>>
>>
>>
>> _______________________________________________
>> Libbitcoin mailing list
>> Libbitcoin@???
>> https://mailinglists.dyne.org/cgi-bin/mailman/listinfo/libbitcoin
> _______________________________________________
> Libbitcoin mailing list
> Libbitcoin@???
> https://mailinglists.dyne.org/cgi-bin/mailman/listinfo/libbitcoin