Boost C++ Libraries of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards

Version 1.43.0

Version 1.43.0

May 6th, 2010 12:00 GMT



New Libraries

  • Functional/factory: Function objects for dynamic and by-value construction, from Tobias Schwinger.
  • Functional/forward: Function object adapters to address the forwarding problem, from Tobias Schwinger.

Major Updates

  • Range: Boost.Range has undergone extensive updates that it include all of the features from the recently reviewed Boost.RangeEx, from Neil Groves.
    • Range-based version of the full STL iterator based algorithms.
    • Range adaptors which can be combined with range-based algorithms for unprecedented expressiveness and efficiency.
    • New functions: irange, istream_range, join, combine.

Updated Libraries

  • Accumulators:
    • Avoid premature template evaluation in operator overload return types.
  • Array:
    • Added support for SunCC compiler.
    • Added 'fill' member function.
    • Changed exception code to use boost::throw_exception.
  • Asio:
    • Improved performance.
    • Reduced compile times.
    • Reduced the size of generated code.
    • Extended the guarantee that background threads don't call user code to all asynchronous operations (#3923).
    • Changed to use edge-triggered epoll on Linux.
    • Changed to use timerfd for dispatching timers on Linux, when available.
    • Changed to use one-shot notifications with kqueue on Mac OS X and BSD platforms.
    • Added a bitmask type ip::resolver_query_base::flags as per the TR2 proposal. This type prevents implicit conversion from int to flags, allowing the compiler to catch cases where users incorrectly pass a numeric port number as the service name.
    • Added #define NOMINMAX for all Windows compilers. Users can define BOOST_ASIO_NO_NOMINMAX to suppress this definition (#3901).
    • Fixed a bug where 0-byte asynchronous reads were incorrectly passing an error::eof result to the completion handler (#4023).
    • Changed the io_control() member functions to always call ioctl on the underlying descriptor when modifying blocking mode (#3307).
    • Changed the resolver implementation to longer require the typedefs InternetProtocol::resolver_query and InternetProtocol::resolver_iterator, as neither typedef is part of the documented InternetProtocol requirements. The corresponding typedefs in the ip::tcp, ip::udp and ip::icmp classes have been deprecated.
    • Fixed out-of-band handling for reactors not based on select().
    • Added new BOOST_ASIO_DISABLE_THREADS macro that allows Asio's threading support to be independently disabled.
    • Minor documentation improvements.
  • Fusion:
    • Added new macros for adapting or defining custom types. See the Changelog for details.
  • Iostreams:
  • Multi-index Containers:
  • Proto:
    • Minor change in behavior: non-const expression self-assignment creates an assign node. See Proto's Release Notes for details.
    • Minor change to recommended expression extension mechanism: use BOOST_PROTO_EXTENDS_USING_ASSIGN(). See Proto's Release Notes for details.
    • Fix error in invocation of callable monomorphic function objects in Proto transforms.
    • Fix misc const correctness issues, work around fusion bug.
    • Add non-const function call overloads to proto terminals.
    • Add a default constructor to proto::literal<>.
    • Do not use deprecated config macros.
    • Add proto::assert_matches() function and friends to <boost/proto/debug.hpp>.
    • functional::make_expr<> and functional::unpack_expr<> return const-qualified rvalues.
    • Add documentation for Expr and Domain concepts.
  • Random:
    • Put the implementation of random_device in a compiled lib, and added Windows support.
    • Rewrote the documentation using Quickbook/Doxygen/Boostbook and brought it up to date.
  • Spirit: Spirit V2.3, see the 'What's New' section for details.
  • Thread:
    • Uses boost::throw_exception for all exceptions except thread_interrupted
    • Added fix for issue 2742
    • Optimizations to mutex locks and call_once
  • Unordered:
    • erase_return_void is now quick_erase (#3966).
  • Uuid:
    • Split generators into separate files.
    • Fixed bug in basic_random_generator (#3971).
    • Updated documentation.
  • Wave: See the Changelog for details.
  • Xpressive:
    • Add missing include to <boost/xpressive/regex_error.hpp>.

Build System

  • When cross-compiling to GNU targets, static libraries are properly created. Previously, using such libraries resulted in Archive has no index error.
  • The naming of DLL and import libraries with gcc compiler on Windows, both mingw and cygwin, now matches default conventions of those environments. Previously, the naming scheme was the same as for other Windows compilers.

Updated Tools

  • Quickbook:
    • Unicode escape characters.
    • Support the UTF-8 byte order mark.
    • Disallow [ in simple markup. Fixes some errors with mismatched punctuation.
    • Add a command line flag (-D) to define macros at the command line.
    • Improved post-processor output.
    • Check that [section] and [endsect] tags are balanced in templates.

Compilers Tested

Boost's primary test compilers are:

  • OS X:
    • GCC 4.0.1 on Intel Leopard.
  • Linux:
    • GCC 4.4.1 on Ubuntu Linux.
    • GCC 4.4 on 64-bit Suse.
  • Windows:
    • Visual C++ 8.0 SP1 and 9.0 SP1 on Windows XP.
    • GCC 4.3.3, using Mingw
  • FreeBSD:
    • GCC 4.2.1, 32 and 64 bit.

Boost's additional test compilers include:

  • Linux:
    • Intel 10.1, 11.1 on 32 bit Red Hat Enterprise Linux.
    • Intel 10.1, 11.0, 11.1 on 64 bit Red Hat Enterprise Linux.
    • GCC 3.4.6, 4.2.4, 4.3.4, 4.4.3 on Red Hat Enterprise Linux.
    • GCC 4.3.4, 4.4.3 with C++0x extensions on Red Hat Enterprise Linux.
    • QLogic PathScale(TM) Compiler Suite: Version 3.2 on Red Hat Enterprise Linux.
  • OS X:
    • Intel C++ Compiler 10.1, 11.0, 11.1 on Leopard.
    • GCC 4.0.1 on Intel Leopard.
    • Clang from subversion.
  • Windows:
    • Visual C++ 8,0, 9,0 on 32-bit XP.
    • Visual C++ 9.0 using STLport 5.2 on XP and Windows Mobile 5.0.
    • Visual C++ 10.0 on XP.
    • Visual C++ 10.0 on 64-bit Windows 7.
    • Borland/Codegear C++ 5.9.3, 6.1.3 (2009), 6.2.1 (2010).
    • Intel C++ 11.1, with a Visual C++ 9.0 backend, on Vista 32-bit.
    • GCC 4.3.3 on Mingw.
    • GCC 4.4.3 on Mingw, with and without C++0x extensions.
    • GCC 4.5 on Mingw.
  • AIX:
    • IBM XL C/C++ Enterprise Edition, V10.1.0.0, on AIX Version
  • FreeBSD:
    • GCC 4.2.1 on FreeBSD 7.2, 64 bit.
    • GCC 4.2.1 on FreeBSD 8.0, 32 bit.
  • Solaris:
    • Sun C++ 5.10 on Solaris 5.10.


Beman Dawes, Eric Niebler, Rene Rivera, Daniel James and Vladimir Prus managed this release.