:: [Libbitcoin] libbitcoin pending rel…
Top Page
Delete this message
Reply to this message
Author: Eric Voskuil
Date:  
To: libbitcoin@lists.dyne.org
Subject: [Libbitcoin] libbitcoin pending release notice
This is a notice of pending libbitcoin releases across the full stack.

The full release plan is available here:

https://github.com/libbitcoin/libbitcoin-build/blob/master/documentation/versioning.pdf

There is only one open issue pertaining to this set of releases:

https://github.com/libbitcoin/libbitcoin-server/issues/51

Master branches will be pushed into version2 shortly. We have two breaks
in libbitcoin public interface backward compatibility. One break is in
code that has been deprecated for some time (the Electrum mnemonic
encode/decode functions). These have been replaced with BIP-39 functions
of a different signature. The other break is the removal of c style
headers from publication. These should have been private headers from
the start, as the library doesn't intend to export c functionality and
instead wraps these functions with C++ calls.

Semantic versioning requires that we increment the major version for
public interface backward compatibility breaks. However in these two
cases I'm not planning to increment the major version number. The impact
should be minimal and not likely hit any production code aside from our
own bx (which has been upgraded concurrently). The benefit is that we
retain version2 correlation across the repos for now. Additionally
version3 work is already under way, which would otherwise push this into
version4, causing a version3 to be very short-lived.

New library first releases:
=====================================================
libbitcoin-server 2.0.0 (Obelisk upgrade)
libbitcoin-node 2.0.0 (factored from libbitcoin)
libbitcoin-blockchain 2.0.0 (new blockchain database)
libbitcoin-consensus 1.0.0 (satoshi consensus)

Existing library upgrades:
=====================================================
libbitcoin-explorer 2.1.0 (bip39, server compatibility)
libbitcoin-client 2.1.0 (server compatibility)
libbitcoin 2.8.0 (various)

libbitcoin-consensus does not depend on any libbitcoin libs. It is
implemented using satoshi client source files and the libbitcoin build
and test system as a standalone library. The default consensus build
requires openssl and there is an option to instead require secp256k1.
Eventually the openssl option will become obsolete. but currently it is
required for strict consensus.

libbitcoin-consensus includes generated SWIG binding sources and
configure options for java and python.

The server stack, starting at libbitcoin-blockchain has an optional
dependency on libbitcoin-consensus. If deselected it will use
libbitcoin's internal consensus code (script.run).

libbitcoin-blockchain is entirely rewritten, discarding the original
leveldb implementation from libbitcoin. There is no longer a leveldb
dependency and query performance is significantly optimized.

libbitcoin-node now installs a minimal console app, although this is
trivial and exists basically as a stub for future work.

libbitcoin-server is the first major upgrade to Obelisk. This
implementation does not take advantage of "header first" initialization
so it can take over two days to initially sync. However the optimized
blockchain implementation yields outstanding query performance (see
previously-posted performance stats by genjix.

libbitcoin-server dependencies have been minimized and configuration
rationalized. There are self-documenting command line options, including
for blockchain initialization (formerly "initchain"). Client and/or
server CurveCP/NaCl certificates are supported, implemented using
ZeroMQ's CurveZMQ:

http://curvezmq.org

libbitcoin-explorer includes new commands for generating and deriving
CurveZMQ certificates. It has also replaced Electrum mnemonic commands
with BIP39, and supports both Obelisk and libbitcoin-server. The updated
fetch-stealth command requires libbitcoin-server, as the Obelisk stealth
design has been obsoleted.

libbitcoin-client includes changes to support libbitcoin-server.

libbitcoin-build is used by maintainers to generate build artifacts for
the other repositories. It is not required to build any other
repository. The generated files currently include:

.travis.yml
autogen.sh
configure.ac
install.sh
[library].pc.in
[library]_test_runner.sh
Makefile.am
include/bitcoin/[library].hpp
include/bitcoin/[library]/version.hpp

There are also generated java and python binding generators that are
currently applied only to libbitcoin-consensus.

Generation by libbitcoin-build significantly increases build quality and
reliability. Eventually we will incorporate GNU docs, source code
documentation and m4 distribution into generation. This will reduce
manual changes to source and private header files only.

OSX (clang), Linux (gcc|clang) and Windows (vc++) builds are supported
and regularly tested for all libraries. As in the original bx release, a
statically-linked single file portable executable can be easily
produced. The same now holds for server! Prebuilt and signed executables
for all supported environments, for bx and server, will be available
following release.

Kudos to our many contributors, including our newest (@thecodefactory)
who stepped up to produce our BIP-39 implementation!

e