Boost C++ Libraries

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

Version 1.51.0

Version 1.51.0

August 20th, 2012 23:00 GMT

Documentation

Downloads
PlatformFile
unixboost_1_51_0.tar.bz2
boost_1_51_0.tar.gz
windowsboost_1_51_0.7z
boost_1_51_0.zip

Patches

  • Locale Patch - Fixes a bug which causes boost::locale::utf::utf_traits to accept some invalid UTF-8 sequences, which is a possible security flaw.

New Libraries

  • Context: Context switching library, from Oliver Kowalke.

Updated Libraries

  • Algorithm:
    • Fixed is_sorted_until ; now matches the c++11 standard behavior on ranges with duplicate values.
    • Added range support for the rest of the search algorithms.
    • unhex now uses Boost.Exception to signal bad input.
  • Asio:
    • Fixed an incompatibility between ip::tcp::iostream and C++11 (#7162).
    • Decorated GCC attribute names with underscores to prevent interaction with user-defined macros (#6415).
    • Added missing #include <cctype>, needed for some versions of MinGW.
    • Changed to use gcc's atomic builtins on ARM CPUs, when available (#7140).
    • Changed strand destruction to be a no-op, to allow strand objects to be destroyed after their associated io_service has been destroyed.
    • Added support for some newer versions of glibc which provide the epoll_create1() function but always fail with ENOSYS (#7012).
    • Changed the SSL implementation to throw an exception if SSL engine initialisation fails (#6303).
    • Fixed another regression in buffered_write_stream (#6310).
    • Implemented various minor performance improvements, primarily targeted at Linux x86 and x86-64 platforms.
  • Config:
    • Deprecated a whole bunch of macros that were c++11 specific, but not named to show that they were c++11 specific. Made new macros with better names, and paired the old macros with the new ones. Updated the documentation to list the deprecated macros.
  • Chrono:
    • #6918 Boost Chrono compilation failure on HP uX due to undefined pthread_getcpuclockid.
    • #6241 boost::chrono compilation problems without std::wstring support.
    • #6987 Documentation & C++11.
    • #7041 time_point.hpp depends on Boost.System.
    • #7042 Avoiding time_point and duration dependency on time.h and CLOCK_REALTIME.
    • #7058 Make it work when BOOST_NO_EXCEPTIONS is defined.
    • #7069 Misspellings in clock_string<thread_clock>.
    • #7081 WinError.h capitalization in boost/detail/win/basic_types.hpp.
  • Geometry:
    • points accessed through a pointer (e.g. in a linestring) should now be specialized without the pointer. In previous versions a type my_point used like linestring<my_point*> had to be specalized like: template<> struct tag<my_point*>. Now the library itself removes the pointer before calling the traits class, so now it should be like: template<> struct tag<my_point>
    • intersection was sometimes wrong for integer points, fixed
    • documentation, order of parameters in simplify was wrong, fixed
    • 7030 spherical distance, fixed (by patch of Karsten Ahnert)
  • Graph:
    • Refactored support for internal and bundled properties in Boost.Graph-provided graph types, and cleaned up named parameter functionality:
      • Enabled old-style (non-bundled) internal properties in compressed_sparse_row_graph.
      • Bundled properties should work correctly for all graph types and adaptors.
    • Bugs fixed:
      • #6993: Typo Bundled Properties document
      • #7002: Problem with initialization of CSR bidirectional graph
      • #7023: Enclose internal type graphml_reader in anonymous namespace
      • Other bugs and warnings not in Trac
  • Hash:
    • Support the standard smart pointers.
    • hash_value now implemented using SFINAE to avoid implicit casts to built in types when calling it.
    • Updated to use the new config macros.
  • Lexical cast:
    • Better performance, less memory usage for boost::array<character_type, N> and std::array<character_type, N> conversions.
    • Fixed bug with volatile input parameter #7157.
  • Math:
    • Updated to use the new config macros.
  • MSM:
  • Proto:
    • Proto transforms get pseudo-parameter pack expansion support for unpacking expressions. See the Release Notes for more information.
  • Ratio:
    • #7075 Workaround for error: the type of partial specialization template parameter constant "n1" depends on another template parameter.
  • Regex:
    • Updated to use the new config macros.
  • Thread:
    • #4258 Linking with boost thread does not work on mingw/gcc 4.5.
    • #4885 Access violation in set_tss_data at process exit due to invalid assumption about TlsAlloc.
    • #6931 mutex waits forwever with Intel Compiler and /debug:parallel
    • #7044 boost 1.50.0 header missing.
    • #7052 Thread: BOOST_THREAD_PROVIDES_DEPRECATED_FEATURES_SINCE_V3_0_0 only masks thread::operator==, thread::operator!= forward declarations, not definitions.
    • #7066 An attempt to fix current_thread_tls_key static initialization order.
    • #7074 Multiply defined symbol boost::allocator_arg.
    • #7078 Trivial 64-bit warning fix on Windows for thread attribute stack size
    • #7089 BOOST_THREAD_WAIT_BUG limits functionality without solving anything
  • Unordered:
    • Fix construction/destruction issue when using a C++11 compiler with a C++03 allocator (#7100).
    • Remove a try..catch to support compiling without exceptions.
    • Adjust SFINAE use to try to supprt g++ 3.4 (#7175).
    • Updated to use the new config macros.
  • Wave:
  • xpressive:
    • Work around buggy wide ctype facet on cygwin and mingw.
    • Work around absence of __isctype on some glibc implementations.
    • op::as shouldn't assume string::iterator != char*.
    • Fix assertion in cpp_regex_traits on libc++, thanks to John Fletcher.

Compilers Tested

Boost's primary test compilers are:

  • Linux:
    • GCC: 4.2.4, 4.3.4, 4.4.3, 4.5.3, 4.6.2, 4.7
    • GCC, C++11 mode: 4.3.4, 4.4.3, 4.5.3, 4.6.2
    • Intel: 11.1, 12.0, 12.1
    • LLVM Clang 2.8
  • OS X:
    • GCC: 4.4
    • GCC, C++11 mode: 4.4
    • Intel: 11.1, 12.0
  • Windows:
    • GCC, mingw: 4.4.0, 4.4.7, 4.5.4, 4.6.3
    • Visual C++: 8.0, 9.0, 10.0
  • FreeBSD:
    • GCC: 4.2.1, 32 and 64 bit

Boost's additional test compilers include:

  • Linux:
    • Clang: from subversion
    • LLVM Clang: 3.0
    • GCC: 4.2.4, 4.3.4, 4.4.4, 4.4.7, 4.5.3, 4.6.2, 4.6.3, 4.7.0, 4.7.1
    • GCC, C++11 mode: 4.3.4, 4.4.4, 4.5.3, 4.6.3
    • pgCC: 11.9
    • Intel: 10.1, 11.1, 12.0, 12.1
    • Visual Age: 10.1
  • OS X:
    • Clang: from subversion
    • Clang, C++11 mode: from subversion
    • Intel: 11.1, 12.0
    • GCC: 4.4
    • GCC, C++11 mode: 4.4
  • Windows:
    • Visual C++: 8.0, 9.0, 10.0
    • GCC, mingw: 4.4.0, 4.6.3, 4.7.0
  • AIX:
    • IBM XL C/C++ Enterprise Edition: V12.1.0.0
  • FreeBSD:
    • GCC: 4.2.1, 32 and 64 bit
  • Solaris:
    • Sun: 5.10

Acknowledgements

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