Release Notes (Version 22, March 2019)
The previous Release Notes can be seen here.
These notes give a somewhat superficial and incomplete (albeit still useful) description of the latest NCBI C++ Toolkit changes, fixes and additions. Some important topics (especially numerous bug fixes and feature improvements, but possibly a bigger fish) are just out of scope of these notes. Feel free to write to the mailing group https://www.ncbi.nlm.nih.gov/mailman/listinfo/cpp with any questions or reports.
Download the source code archives at: ftp://ftp.ncbi.nih.gov/toolbox/ncbi_tools++/ARCHIVE/2019/Mar_28_2019/
ncbi_cxx–22_0_0.tar.gz – for Unix’es (see the list of Unix flavors below) and MacOSX
ncbi_cxx–22_0_0.zip – for MS-Windows / MS Visual Studio C++ 2015 and 2017
The sources correspond to the NCBI production tree sources, which are originally based on the development tree source snapshot from August, 2018; and also include many hundreds of important and safe code updates made since then and through March, 2019.
Third Party Packages
Some parts of the C++ Toolkit just cannot be built without 3rd party libraries, and other parts of the Toolkit will work more efficiently or provide more functionality if some 3rd-party packages (such as BerkeleyDB which is used for local data cache and for local data storage) are available.
Table 1. Currently Supported/Tested Versions of Third Party Packages
|Package||Versions expected to work (obtained by build-environment inspection in some cases)||Versions known to work (used in-house on any platform)|
|BerkeleyDB||4.3.0 or newer||4.5.20, 4.6.21.NC, 188.8.131.52, 4.7.25|
|Boost Test||1.35.0 or newer||1.53.0, 1.54.0, 1.62.0, 1.66.0|
|FastCGI||All versions||2.1, 2.4.0, 2.4.1|
|libbzip2||All versions||1.0.5, 1.0.6|
|libjpeg||All versions||6b, 8c, 8d, 9c|
|libpng||All versions||1.2.7, 1.2.49, 1.2.50, 1.5.13, 1.6.20, 1.6.34|
|libtiff||All versions||3.6.1, 3.9.4, 4.0.3, 4.0.6|
|libungif||All versions||4.1.3 (libungif),
4.1.6, 5.1.2 (giflib)
|libxml2||All versions||2.7.6, 2.7.8, 2.9.0, 2.9.1, 2.9.4|
|libxslt||1.1.14 or newer||1.1.26, 1.1.28|
|PCRE||All versions||7.8, 7.9, 8.31, 8.32, 8.38|
|SQLite3||3.6.6 or newer||184.108.40.206, 3.6.20, 3.7.13, 3.7.17, 3.8.2, 220.127.116.11, 3.22.0|
|Sybase||All versions||15.5, 15.7, 16.0|
|zlib||All versions||1.2.3, 1.2.5, 1.2.7, 1.2.8, 1.2.11|
The user is expected to download and build the 3rd party packages themselves. The release’s package list includes links to download sites. However, the user still needs a list of the 3rd party packages and which versions of them are compatible with the release.
For guidelines to configure, build and install the Toolkit see here.
There have been significant additions and improvements in all parts of the Toolkit since the last public release of the NCBI C++ Toolkit. Here, only very few are listed, mostly related to major formal changes.
We started using C++11 specific features, so you will now need a C++11 compliant compiler to build the Toolkit.
We are about to drop 32-bit support, so while the Toolkit will still likely build (and even work) in some 32-bit configurations… the 32-bit support is nominal, and will go away for good real soon now.
The documentation is available online as a searchable book “The NCBI C++ Toolkit”: https://ncbi.github.io/cxx-toolkit/.
A C/C++ Symbol Search query appears on each page of the online Toolkit documentation. You can use this to perform a symbol search on the up-to-date public or in-house versions using source browsers LXR, Doxygen and Library - or do an overall search.
Public access to our SVN trunk:
For browsing: https://www.ncbi.nlm.nih.gov/viewvc/v1/trunk/c++
For retrieval: https://anonsvn.ncbi.nlm.nih.gov/repos/v1/trunk/c++ (NOTE: Some WebDAV clients may require dav:// instead of http://)
Supported Platforms (OS’s and Compilers)
This release was successfully tested on at least the following platforms (but may also work on other platforms). Since the previous release, some platforms were dropped from this list and some were added. Also, it can happen that some projects would not work (or even compile) in the absence of 3rd-party packages, or with older or newer versions of such packages. In these cases, just skipping such projects (e.g. using flag “-k” for make on Unix), can get you through.
In cases where multiple compilers or versions are supported, the mainstream one is shown in bold. Other versions might also work, but must support C++11; minimum versions are GCC 4.8.x, Clang 3.4.x, ICC 15.x, and MS VS 2015.
|CentOS 6.x (LIBC 2.12)||x86-64||GCC 4.9.3, 5.3; ICC 2015,2017|
|CentOS 7.x (LIBC 2.17)||x86-64||GCC 7.3.0; ICC 2015, 2017|
|Ubuntu 14.04 (LIBC 2.19)||x86-32||GCC 4.8.4|
|Ubuntu 16.04 (LIBC 2.23)||x86-64||GCC 5.4.0|
|FreeBSD 11.2||x86-64||Clang 6.0.0|
|MS Windows||x86-64||MS Visual C++ 2015 (MSVC 14)
|MS Windows||x86-64||MS Visual C++ 2017 (MSVC 14.1) experimental
|Cygwin 2.9.0||x86-64||GCC 6.4.0- nominal support only.|
|macOS 10.11.x (Darwin 15.x)||x86-64||Apple Clang 8.0.0, Xcode 8.2.1|
|macOS 10.12.x (Darwin 16.x)||x86-64||Apple Clang 9.0.0, Xcode 9.2|
|macOS 10.13.x (Darwin 17.x)||x86-64||Apple Clang 10.0.0|
Official support for macOS 10.13.x; for GCC 7.3 and ICC 17 on CentOS; for FreeBSD 11.2 is new in this release.
|MS Windows||x86-32||all (only 64-bit arch is supported from now on)|
|MS Windows||x86-32, 64||MS Visual C++ 2013 (MSVC 12)|
|Ubuntu 14.04 (“jaunty”)||x86-32||All|
|CentOS 6.x||x86-32, 64||Nominal support, will be dropped soon|
This document was last updated on March 28, 2019.