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

Version 1.49.0

February 24th, 2012 21:20 GMT

Documentation

Downloads
PlatformFile
unixboost_1_49_0.tar.bz2
boost_1_49_0.tar.gz
windowsboost_1_49_0.7z
boost_1_49_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

  • Heap: Priority queue data structures, from Tim Blechmann.

Updated Libraries

  • Asio:
    • Added a new class template basic_waitable_timer based around the C++11 clock type requirements. It may be used with the clocks from the C++11 <chrono> library facility or, if those are not available, Boost.Chrono. The typedefs high_resolution_timer, steady_timer and system_timer may be used to create timer objects for the standard clock types.
    • Added a new windows::object_handle class for performing waits on Windows kernel objects. Thanks go to Boris Schaeling for contributing substantially to the development of this feature.
    • On Linux, connect() can return EAGAIN in certain circumstances. Remapped this to another error so that it doesn't look like a non-blocking operation (#6048).
    • Fixed a compile error on NetBSD (#6098).
    • Fixed deadlock on Mac OS X (#6275).
    • Fixed a regression in buffered_write_stream (#6310).
    • Fixed a non-paged pool "leak" on Windows when an io_service is repeatedly run without anything to do (#6321).
    • Reverted earlier change to allow some speculative operations to be performed without holding the lock, as it introduced a race condition in some multithreaded scenarios.
    • Fixed a bug where the second buffer in an array of two buffers may be ignored if the first buffer is empty.
  • Chrono:
    • Bug Fixes:
      • #6092 Input from non integral durations makes the compiler fail.
      • #6093 [1/3]second fails as valid duration input.
      • #6113 duplicate symbol when BOOST_CHRONO_HEADER_ONLY is defined.
      • #6243 Sandia-pgi-11.9: more than one instance of overloaded function "min" matches.
      • #6257 process_cpu_clock::now() on linux gives time_points 1/1000 times.
  • Container:
    • Fixed bugs #6499, #6336, #6335, #6287, #6205, #4383.
    • Added allocator_traits support for both C++11 and C++03 compilers through an internal allocator_traits clone.
  • Filesystem:
    • Fix #3714, Added test cases and fixes for class path errors when assignment or append used self or portion of self as source.
    • Fix #4889, #6320, Locale codecvt_facet not thread safe on Windows. Move Windows, Mac OS X, locale and codecvt facet back to namespace scope. POSIX except OS X uses local static initialization (IE lazy) to ensure exceptions are catchable if environmental variables are misconfigured and to avoid use of locale("") if not actually used.
    • Fix #5652, recursive_directory_iterator fails on cyclic symbolic links. Thanks to Daniel Aarno for the patch.
    • Fix #5653, recursive_directory_iterator(error_code) can still throw filesystem_error.
    • Fix #5900, directory_iterator access violation on Windows if error is thrown. Thanks to Andreas Eckleder for the patch.
    • Fix #5900 comment 2, a bug in director_iterator construction with error_code argument that caused increment to be called without the ec argument being passed.
    • Fix #5989 by cleaning up test suite path_test.cpp code even though the ticket itself was not a defect, and clarifying docs; iteration over a path yields generic format.
    • Fix #5592, Change Windows codecvt processing from CP_THREAD_ACP to CP_ACP.
    • Operations function fixes for PGI compiler, thanks to Noel Belcourt.
    • Relax permissions test to reflect reality, particularly on the Sandia test platforms.
  • Foreach:
  • Geometry:
    • Fixed bugs
      • Distance for multi-geometries ignored specified distance strategy.
      • In difference for polygon/multi_polygon (reported 2011/10/24 on GGL-list).
      • Raise exception for calculation of distances of multi-geometrie(s) where one of them is empty
      • Multi DSV did not correctly use settings.
      • Self-intersections could sometimes be missed (introduced in 1.48).
      • Convex hull crashed on empty range (e.g. empty multi point).
    • Solved tickets
      • #6028 Documentation: closure.
      • #6178 Missing headerfile.
      • #6021 convex hull of multipoint.
    • Additional functionality
      • Support for line/polygon intersections and differences
      • Support for convert of segment/box of different point types
      • Support for append for multi point
      • Scalar functions (distance, area, length, perimeter) now throw an empty_input_exception on empty input
    • Documentation
      • Updated support status
    • Internal changes
      • Updates in specializations/not_implemented for distance/convert/assign/area
      • Move of wkt/dsv to io folder, making domains redundant
      • Strategy concepts assigned to zero to avoid clang warnings (patched by Vishnu)
  • Graph:
  • Icl:
    • Fixed tickets #6095 and #6210.
    • Added move semantics for constructors, assignment operators and binary operators.
  • Interprocess:
  • Intrusive:
  • Lexical cast:
  • Locale:
    • Fixed incorrect use of MultiByteToWideChar in detection of invalid input sequences.
  • Move:
  • PropertyTree:
  • Proto:
    • Force some functions to be inline, fixes #5735.
    • Add user documentation for per-domain as_expr and as_child; other doc tweaks.
    • Fix some buggy and over-complicated example programs.
    • Add some missing copyright notices.
  • Spirit:
    • Spirit V2.5.2, see the 'What's New' section for details.
  • Thread:
    • Fixed Bugs:
      • #2309 Lack of g++ symbol visibility support in Boost.Thread.
      • #2639 documentation should be extended(defer_lock, try_to_lock, ...).
      • #3639 Boost.Thread doesn't build with Sun-5.9 on Linux.
      • #3762 Thread can't be compiled with winscw (Codewarrior by Nokia).
      • #3885 document about mix usage of boost.thread and native thread api.
      • #3975 Incorrect precondition for promise::set_wait_callback().
      • #4048 thread::id formatting involves locale
      • #4315 gcc 4.4 Warning: inline ... declared as dllimport: attribute ignored.
      • #4480 OpenVMS patches for compiler issues workarounds.
      • #4819 boost.thread's documentation misprints.
      • #5040 future.hpp in boost::thread does not compile with /clr.
      • #5423 thread issues with C++0x.
      • #5502 race condition between shared_mutex timed_lock and lock_shared.
      • #5594 boost::shared_mutex not fully compatible with Windows CE.
      • #5617 boost::thread::id copy ctor.
      • #5739 set-but-not-used warnings with gcc-4.6.
      • #5826 threads.cpp: resource leak on threads creation failure.
      • #5839 thread.cpp: ThreadProxy leaks on exceptions.
      • #5859 win32 shared_mutex constructor leaks on exceptions.
      • #6100 Compute hardware_concurrency() using get_nprocs() on GLIBC systems.
      • #6141 Compilation error when boost.thread and boost.move are used together.
      • #6168 recursive_mutex is using wrong config symbol (possible typo).
      • #6175 Compile error with SunStudio.
      • #6200 patch to have condition_variable and mutex error better handle EINTR.
      • #6207 shared_lock swap compiler error on clang 3.0 c++11.
      • #6208 try_lock_wrapper swap compiler error on clang 3.0 c++11.
  • Unordered:
    • On compilers without rvalue references, the containers are no longer movable by default, as move emulation was causing some odd quirks (#6167, #6311). Define BOOST_UNORDERED_USE_MOVE to make them movable - Boost.Move is still used for elements regardless.
    • Fix sequence point warning (#6370).
    • Better support for C++11 compilers using older standard libraries.
  • Uuid:
    • fixed #6258
    • fixed #5325 (sha1 implementation handles messages as long as the specification)
    • progress on #6118 (there are fewer warnings)
  • xpressive:
    • Eliminate some unused variable warnings on gcc.

Compilers Tested

Boost's primary test compilers are:

  • Linux:
    • Intel: 11.1
    • LLVM Clang 2.8
    • GCC: 3.4.6, 4.2.4, 4.3.4, 4.4.3, 4.5.2, 4.6.2
    • GCC, C++0x mode: 4.3.4, 4.4.3, 4.5.2
  • OS X:
    • Intel: 11.1
    • GCC: 4.2.1, 4.4.4
    • GCC, C++0x mode: 4.4.4
  • Windows:
    • Visual C++ 8.0, 9.0, 10.0
    • GCC, mingw: 4.4.0, 4.4.7, 4.5.4, 4.6.1, 4.7.0
  • FreeBSD:
    • GCC 4.2.1, 32 and 64 bit.
  • QNX:
    • QCC, C++0x mode: 4.4.2, 4.6.1, 4.6.2

Boost's additional test compilers include:

  • Linux:
    • GCC: 4.2.4, 4.3.4, 4.4.4, 4.5.2, 4.6.2
    • GCC, C++0x mode: 4.3.4, 4.4.4, 4.5.2
    • pgCC: 11.9
    • Intel: 10.1, 11.1, 12.0
    • PathScale: 4.0.8
    • Visual Age 10.1
  • OS X:
    • Clang from subversion
    • Intel 11.1, 12.0
    • GCC: 4.4.4
    • GCC, C++0x mode: 4.4.4
  • Windows:
    • Visual C++ 8.0, 9.0, 10.0
    • Visual C++ with STLport: 9.0
    • Visual C++, Windows Mobile 5, with STLport: 9.0
    • GCC, mingw: 4.4.0, 4.5.2
    • GCC, C++0x mode, mingw: 4.5.2
    • GCC, mingw 64-bit: 4.4.7, 4.5.4, 4.6.1
  • AIX:
    • IBM XL C/C++ Enterprise Edition, V11.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 and Vladimir Prus managed this release.