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

Version 1.52.0

November 5th, 2012 16:05 GMT

Documentation

Downloads
PlatformFile
unixboost_1_52_0.tar.bz2
boost_1_52_0.tar.gz
windowsboost_1_52_0.7z
boost_1_52_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.

Updated Libraries

  • Accumulators:
    • Fix long-standing dependency tracking bug, #7409
  • Config:
    • Define BOOST_NO_SFINAE_EXPR for gcc-4.4, since the support was found to be too buggy.
  • Chrono:
    • New Features:
      • #5980 Enhance chrono I/O with H. Hinnant proposal proposal which has the advantage to provide I/O for system clocks using the Gregorian Calendar.
      • #5981 Add i/o state savers for duration and time_point formatting state.
      • #7059 Add low level i/o facilities.
    • Deprecated features:
      • The chrono i/o version included in Boost.Chrono 1.2.x has been completly refactored in version 2.0.0
      • chrono I/O: The manipulators __duration_short, __duration_long are depreceated. You should use the parameterized form __duration_fmt or the renamed manipulators __duration_symbol and __duration_prefix instead.
      • chrono I/O: The __duration_punct<> facet is deprecated. You should use the __get_duration_style free function to get the informations and use the __duration_units facet for localization purposes.
      • When BOOST_CHRONO_VERSION==2 the preceding deprecated functions are not available.
    • Fixes:
      • #7381 C++11 compliance: unresolved symbol when assigning a constexpr duration to a non-const local variable.
      • #7479 Compile fails with compilers supporting constexpr fails if the standard library doesn't provides the constexpr interface
    • Would not fix:
      • #6871 chrono_io.hpp: operator<<(ostream& os, ...) modifies the state of os. The neww io interface provided in version 2 solves this issue. You should move to the new version.
  • Container:
    • Improved stable_vector's template code bloat and type safety.
    • Changed typedefs and reordered functions of sequence containers to improve doxygen documentation.
    • Fixed bugs #6615, #7139, #7215, #7232, #7269, #7439.
    • Implemented LWG Issue #149 (range insertion now returns an iterator) & cleaned up insertion code in most containers
    • Corrected aliasing errors.
  • DateTime:
    • Document BOOST_DATE_TIME_NO_LIB (#6077).
    • Fix nth_as_str (#7022).
    • Fix some warnings (#7234).
  • Foreach:
    • Fix alignment warning on gcc.
  • Function:
    • Move constructors and move assignment operators added (only for compilers with C++11 rvalue references support) #7330.
  • Graph:
  • Hash:
    • Restore enum support, which was accidentally removed in the last version (#7437).
    • New floating point hasher - will hash the binary representation on more platforms, which should be faster.
  • Interprocess:
    • Added shrink_by and advise functions in mapped_region.
    • ABI breaking: Reimplemented message_queue with a circular buffer index (the old behavior used an ordered array, leading to excessive copies). This should greatly increase performance but breaks ABI. Old behaviour/ABI can be used undefining macro BOOST_INTERPROCESS_MSG_QUEUE_CIRCULAR_INDEX in boost/interprocess/detail/workaround.hpp
    • Improved message_queue insertion time avoiding priority search for common cases (both array and circular buffer configurations).
    • Implemented interproces_sharable_mutex and interproces_condition_any.
    • Improved offset_ptr performance.
    • Added integer overflow checks.
  • Iterator:
    • Fixed:
      • #5825 constructing function_input_iterator without consuming an item
      • #7194 Error in documentation of make_function_input_iterator
    • Breaking changes:
      • Due to the fix for #5825, a function_input_iterator will no longer make unnecessary invokations to the wrapped nullary function. For example, constructing an end iterator will now not trigger an invokation; and dereferencing-and-incrementing an iterator N times will trigger N invokations, not N+1 as before. User code that relied on the old behavior will need to be adjusted.
  • Lexical cast:
    • Restored compilation on MSVC-2003 (was broken in 1.51.0) #7255.
    • Added lexical_cast(const CharType* chars, std::size_t count) function overload. #6663.
    • Fixed bug #7228.
  • Math:
    • Added Airy functions and Jacobi Elliptic functions.
    • In several distributions (particulary the Students T) corrected moments for small degrees of freedom #7177 (reported by Thomas Mang).
    • Corrected failure to detect bad parameters in many distributions #6934 (reported by Florian Schoppmann) by adding a function check_out_of_range to test many possible bad parameters. This test revealed several distributions where the checks for bad parameters were ineffective, and these have been rectified.
    • Fixed issue in Hankel functions that causes incorrect values to be returned for x < 0 and ν odd, see #7135.
    • In non-central T permitted infinite degrees of freedom #7259 implemented using the normal distribution (requested by Thomas Mang). Also much enhanced accuracy for large degrees of freedom and/or large non-centrality parameters by switching to use the Students t distribution (or Normal distribution for infinite degrees of freedom) centered at delta, when delta / (4 * v) < epsilon for the floating-point type in use. See #7259. It was also found that the incomplete beta was suffering from serious cancellation errors when degrees of freedom was very large. (That has now been fixed in our code, but any code based on Didonato and Morris's original papers (probably every implementation out there actually) will have the same issue).
    • Fixed minor issues #6517, #6362, #7053, #2693, #6937, #7099.
  • Phoenix:
    • Make Phoenix work with decltype-based boost::result_of.
  • Polygon:
    • Included Voronoi diagram extensions.
    • Introduced new Segment concept.
    • Fixed compilation issues.
  • Proto:
    • The data parameter to primitive transforms can now optionally have slots indexed by key.
    • Primitive transforms can now operatate on temporary expressions that are non-const qualified.
    • Add callable function object types for the free functions in <iterator> and also for some Boost.Range functions.
    • Boost.MPL algorithms work on Proto expression nodes.
    • proto::pass_through primitive transform now accepts an optional Domain template parameter for specifying the target domain of the resulting expression.
  • Ratio:
    • Features:
      • Replace the short_name and long_name functions by symbol and prefix functions respectively.
    • Deprecated:
      • The ratio_string<>::short_name and ratio_string<>::long_name are deprecated. Use ratio_string<>::symbol and ratio_string<>::prefix respectively. These functions be removed in 1.55.
    • Fixes:
      • #7478 Compiles fails with compilers supporting char16_t and char32_t fails if the library doesn't provides std::u16string and std::u32string.
  • Result_of:
    • Switch boost::result_of to use decltype on compilers for which support is deemed "good enough". That means if the compiler implements n3276. (For now, that only includes very recent versions of clang.)
    • boost::result_of is now "sfinae-friendly" when it uses decltype. See n3436.
  • Thread:
    • Deprecated Features: Deprecated features since boost 1.50 available only until boost 1.55. These deprecated features will be provided by default up to boost 1.52. If you don't want to include the deprecated features you could define BOOST_THREAD_DONT_PROVIDE_DEPRECATED_FEATURES_SINCE_V3_0_0. Since 1.53 these features will not be included any more by default. Since this version, if you want to include the deprecated features yet you could define BOOST_THREAD_PROVIDE_DEPRECATED_FEATURES_SINCE_V3_0_0. These deprecated features will be only available until boost 1.55, that is you have yet 1 year to move to the new features.
      • Time related functions don't using the Boost.Chrono library, use the chrono overloads instead.
    • Breaking changes when BOOST_THREAD_VERSION==3 (Default value since Boost 1.53): There are some new features which share the same interface but with different behavior. These breaking features are provided by default when BOOST_THREAD_VERSION is 3, but the user can however choose the version 2 behavior by defining the corresponding macro. As for the deprecated features, these broken features will be only available until boost 1.55.
      • #6229 C++11 compliance & Breaking change: Rename the unique_future to future following the c++11.
      • #6266 C++11 compliance & Breaking change: thread destructor should call terminate if joinable.
      • #6269 C++11 compliance & Breaking change: thread move assignment should call terminate if joinable.
    • New Features:
      • #4710 C++11 compliance: Missing async().
      • #7283 C++11 compliance: Add notify_all_at_thread_exit.
      • #7345 C++11 compliance: Add noexcept to recursive mutex try_lock.
    • Fixed Bugs:
      • #2361 thread_specific_ptr: document nature of the key, complexity and rationale.
      • #2797 Two problems with thread_specific_ptr.
      • #5274 failed to compile future.hpp with stlport 5.1.5 under msvc8.1, because of undefined class.
      • #5431 compile error in Windows CE 6.0(interlocked).
      • #5752 boost::call_once() is unreliable on some platforms.
      • #7045 Thread library does not automatically compile date_time.
      • #7173 wrong function name interrupt_point().
      • #7200 Unable to build boost.thread modularized.
      • #7220 gcc 4.6.2 warns about inline+dllimport functions.
      • #7238 this_thread::sleep_for() does not respond to interrupt().
      • #7245 Minor typos on documentation related to version 3.
      • #7272 win32/thread_primitives.hpp: (Unneccessary) Warning.
      • #7284 Clarify that there is no access priority between lock and shared_lock on shared mutex.
      • #7329 boost/thread/future.hpp does not compile on HPUX.
      • #7336 BOOST_THREAD_DONT_USE_SYSTEM doesn't work.
      • #7349 packaged_task holds reference to temporary.
      • #7350 allocator_destructor does not destroy object
  • uBLAS:
    • improved performance of inplace_solve (issue #4024)
    • fixed coordinate_matrix for use with gcc 4.7 (issue #7363)
  • Unordered:
    • In assignment, reuse existing nodes where possible.
    • Fix bugs when erasing ranges (#7471).
    • Some work on the implementation.
  • Uuid:
    • Fixes #6118, #6788, #7375.
    • #7128 - fixed bug in sha1.hpp for messages longer than 536,870,912 bytes.
  • Wave:
  • xpressive:
    • Make sub_match work with Boost.Range. Fixes #7237.

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.2
    • 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.4
    • GCC, C++11 mode: 4.4.4
    • Intel: 11.1, 12.0
  • Windows:
    • GCC, mingw: 4.4.0, 4.4.7, 4.5.4, 4.6.3, 4.7.0
    • Visual C++: 8.0, 9.0, 10.0
  • FreeBSD:
    • GCC: 4.2.1, 32 and 64 bit

Boost's additional test compilers include:

  • Linux:
    • Cray: 8.0
    • Clang: from subversion
    • GCC: 4.2.4, 4.3.4, 4.4.4, 4.5.3, 4.6.2, 4.6.3, 4.7.0, 4.7.1, 4.7.2
    • GCC, C++11 mode: 4.3.4, 4.4.4, 4.5.3, 4.6.3, 4.7.1
    • 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.4
    • GCC, C++11 mode: 4.4.4
  • Windows:
    • Visual C++: 8.0, 9.0, 10.0, 11.0
    • Visual C++ with STLport: 9.0
    • Visual C++, Windows Mobile 5, with STLport: 9.0
    • GCC, mingw: 4.4.0, 4.4.7, 4.5.4, 4.6.3, 4.7.0
  • AIX:
    • IBM XL C/C++ Enterprise Edition: V12.1.0.0
  • FreeBSD:
    • GCC: 4.2.1, 64 bit
  • Solaris:
    • Sun: 5.10

Acknowledgements

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