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.40.0

Version 1.40.0

August 27th, 2009 17:00 GMT




Added missing notes for Graph and Property Map.


Boost.CMake is now distributed separately. The cmake build for boost is BROKEN in the tarballs above. See the Boost.CMake wiki page for pointers to working versions.

Updated Libraries

  • Accumulators:
    • Works on GCC 4.4.
  • Asio:
    • Added a new ping example to illustrate the use of ICMP sockets.
    • Changed the buffered*_stream<> templates to treat 0-byte reads and writes as no-ops, to comply with the documented type requirements for SyncReadStream, AsyncReadStream, SyncWriteStream and AsyncWriteStream.
    • Changed some instances of the throw keyword to boost::throw_exception() to allow Asio to be used when exception support is disabled. Note that the SSL wrappers still require exception support (#2754).
    • Made Asio compatible with the OpenSSL 1.0 beta (#3256).
    • Eliminated a redundant system call in the Solaris /dev/poll backend.
    • Fixed a bug in resizing of the bucket array in the internal hash maps (#3095).
    • Ensured correct propagation of the error code when a synchronous accept fails (#3216).
    • Ensured correct propagation of the error code when a synchronous read or write on a Windows HANDLE fails.
    • Fixed failures reported when _GLIBCXX_DEBUG is defined (#3098).
    • Fixed custom memory allocation support for timers (#3107).
    • Tidied up various warnings reported by g++ (#1341, #2618).
    • Various documentation improvements, including more obvious hyperlinks to function overloads, header file information, examples for the handler type requirements, and adding enum values to the index (#3157, #2620).
  • Circular Buffer:
  • Foreach:
    • Workaround for conflict with Python headers (#3000).
  • Function:
  • Fusion:
    • Improved compile times for fusion::vector.
  • Graph:
    • Merged in the Parallel Boost Graph Library, giving a full suite of graph algorithms and data structures for distributed-memory computers (such as clusters).
    • Updates to the interface of the compressed sparse row graph, including constructors from unsorted edge lists.
    • An implicit grid graph, saving memory over using the former generator.
    • New algorithms: Dijkstra's single-source shortest path algorithm without a separate color map and an algorithm to find maximal common subgraphs between two graphs.
    • Assorted bug fixes.
  • Hash:
    • Automatically configure the float functions using template metaprogramming instead of trying to configure every possibility manually.
  • Interprocess:
    • Windows shared memory is created in Shared Documents folder so that it can be shared between services and processes
    • Fixed bugs #2967, #2973, #2992, #3138, #3166, #3205.
  • Intrusive:
    • Code cleanup in tree_algorithms.hpp and avl_tree_algorithms.hpp
    • Fixed bug #3164.
  • MPL:
    • Added mpl::char_ and mpl::string for compile-time string manipulation, based on multichar literals (#2905).
    • Bug fixes.
  • Program.Options:
    • Support for building with disabled exceptions (#2096).
    • Unicode parser no longer drops original tokens (#2425).
    • Fixed crash on user-inserted items in variables_map (#2782).
  • Property Map:
    • Moved property map code into a separate directory, boost/property_map/. The old files exist and forward to the new ones; the previous files directly in boost/ will be removed in Boost 1.42.0.
    • Moved distributed property maps to boost::graph::parallel namespace.
    • Added a property map based on a boost::shared_array, providing a simpler interface.
  • Proto:
    • PrimitiveTransforms have stricter conformance to ResultOf protocol. (Warning: some invalid code may break.)
    • Add a sensible default for proto::_default's template parameter.
    • Improved default evaluation strategy for pointers to members.
    • GCC 3.4 portability fixes (#3021).
    • Work around Visual C++'s non-std-compliant ciso646 macros.
  • Random:
    • Made the constructors of all the generators call the copy constructor when passed a non-const reference.
    • Changed seeding functions to accept any arithmetic type. As a side-effect, the exact signature of seed changed for some classes.
    • Major bug fixes in uniform_int.
  • Serialization:
    • Removed deprecated headers: boost/static_warning.hpp, boost/state_saver.hpp, boost/smart_cast.hpp, boost/pfto.hpp. Use the the equivalent headers in the boost/serialization/ directory instead (#3062).
    • detail::archive_serializer_map should now be used instead of detail::archive_pointer_iserializer. For more details see the library release notes.
  • Unordered:
    • Implement emplace for all compilers, not just ones with rvalue references and variadic templates (#1978).
    • Create less buckets by default.
    • Some minor tweaks for better compiler support (#2908, #3096, #3082).
  • Xpressive:
    • Works on Visual C++ 10.0 (#3124).

Build System

The default naming of libraries in Unix-like environment now matches system conventions, and does not include various decorations. Naming of libraries on Cygwin was also fixed. Support for beta versions of Microsoft Visual Studio 10 was added. With gcc, 64-bit compilation no longer requires that target architecture be specified.

Updated Tools

  • Boostbook:
    • Hide INTERNAL ONLY enums in doxygen documentation (#3242).
    • Tweaked appearance of member classes/structs/unions in a class synopsis.
  • Quickbook:
    • Support python code snippets (#3029).
    • Add teletype source mode (#1202)

Compilers Tested

Boost's primary test compilers are:

  • OS X:
    • GCC 4.0.1 on Intel Tiger and Leopard
    • GCC 4.0.1 on PowerPC Tiger
  • Linux:
    • GCC 4.3.3 on Ubuntu Linux.
  • Windows:
    • Visual C++ 7.1 SP1, 8.0 SP1 and 9.0 SP1 on Windows XP.

Boost's additional test compilers include:

  • Linux:
    • Intel 9.0 on Red Hat Enterprise Linux.
    • Intel 10.0 on Red Hat Enterprise Linux.
    • Intel 10.1 on 64-bit Linux Redhat 5.1 Server.
    • Intel 10.1 on Suse Linux on 64 bit Itanium.
    • Intel 11.0 on Red Hat Enterprise Linux.
    • Intel 11.1 on Red Hat Enterprise Linux.
    • GCC 3.4.3, GCC 4.0.1, GCC 4.2.4, GCC 4.3.3 and GCC 4.4.0 on Red Hat Enterprise Linux.
    • GCC 4.3.3 and GCC 4.4.0 with C++0x extensions on Red Hat Enterprise Linux.
    • GCC 4.1.1, 4.2.1 on 64-bit Red Hat Enterprise Linux.
    • GCC 4.1.2 on Suse Linux on 64 bit Itanium.
    • GCC 4.1.2 on 64-bit Redhat Server 5.1.
    • GCC Open64 4.2.2 on Red Hat Enterprise Linux.
    • GCC 4.3.4 on Debian unstable.
    • QLogic PathScale(TM) Compiler Suite: Version 3.1 on Red Hat Enterprise Linux.
    • GCC version 4.2.0 (PathScale 3.2 driver) on 64-bit Red Hat Enterprise Linux.
    • Sun 5.9 on Red Hat Enterprise Linux.
  • OS X:
    • Intel 10.1, 11.0 on Intel Leopard.
    • Intel 10.1, 11.0 on Intel Tiger.
    • GCC 4.0.1, 4.2.1 on Intel Leopard.
    • GCC 4.0.1 on Intel Tiger.
    • GCC 4.0.1 on PowerPC Tiger.
  • Windows:
    • Visual C++ 7.1 on XP.
    • Visual C++ 9.0 on XP.
    • Visual C++ 9.0 on Vista.
    • Visual C++ 9.0 on Vista 64-bit.
    • Visual C++ 9.0, using STLport 5.2, on XP and Windows Mobile 5.0.
    • Visual C++ 10.0 beta.
    • Borland 5.9.3, 6.1.0, 6.1.3.
    • Borland C++ Builder 2007 and 2009.
    • Intel C++ 11.1, with a Visual C++ 9.0 backend, on Vista 32-bit.
    • Intel C++ 11.1, with a Visual C++ 9.0 backend, on Vista 64-bit.
    • GCC 4.3.3 and 4.4.0, on Mingw with C++0x features.
  • AIX:
    • IBM XL C/C++ Enterprise Edition for AIX, V10.1.0.0, on AIX Version
  • Solaris:
    • Sun C++ 5.7, 5.8, 5.9 on Solaris 5.10.
    • GCC 3.4.6 on Solaris 5.10.


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