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

Version 1.53.0

February 4th, 2013 18:29 GMT

Documentation

Downloads
PlatformFile
unixboost_1_53_0.tar.bz2
boost_1_53_0.tar.gz
windowsboost_1_53_0.7z
boost_1_53_0.zip

New Libraries

  • Atomic: C++11-style atomic<>, from Helge Bahmann, maintained by Tim Blechmann.
  • Coroutine: Coroutine library, from Oliver Kowalke.
  • Lockfree: Lockfree data structures, from Tim Blechmann.
  • Multiprecision: Extended precision arithmetic types for floating point, integer and rational arithmetic from John Maddock and Christopher Kormanyos.
  • Odeint: Solving ordinary differential equations, from Karsten Ahnert and Mario Mulansky.

News

This release contains a fix for ticket #7743, in Boost.Locale. For more details, see the security notice.

Updated Libraries

  • Algorithm:
    • Fixed non-ASCII char in comment (#7781).
    • Updated the Knuth-Morris-Pratt docs (#7656).
  • Array:
    • Added support for boost::get and std::get (#7652)
  • Asio:
    • Fixed some 64-to-32-bit conversion warnings (#7459).
    • Fixed some small errors in documentation and comments (#7761).
    • Fixed an error in the example embedded in basic_socket::get_option's documentation (#7562).
    • Changed to use long rather than int for SSL_CTX options, to match OpenSSL (#7209).
    • Changed to use _snwprintf to address a compile error due to the changed swprintf signature in recent versions of MinGW (#7373).
    • Fixed a deadlock that can occur on Windows when shutting down a pool of io_service threads due to running out of work (#7552).
    • Enabled the noexcept qualifier for error categories (#7797).
    • Changed UNIX domain socket example to treat errors from accept as non-fatal (#7488).
    • Added a small block recycling optimisation to improve default memory allocation behaviour.
  • Bimap:
    • Refactor map_view_iterator to improve error messages.
    • Fixed replace_(left/right/key/data) bug when using relations with info.
    • Fixed vector_of and list_of views assign(size_type,value_type) bug.
    • Fixed vector_of views operator[](size_type) and at(size_type) functions return value.
  • Chrono:
    • Deprecated:
      • 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 depreceated. 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:
      • #7546 time_point<system_clock> output version 2 fails to compile
      • #7547 time_point<system_clock> input version 2 fails to compile
      • #7868 chrono_io parses time incorrectly (1.53 and 1.52)
  • Container:
    • Fixed bug #7650.
    • Improved vector's insertion performance.
    • Changed again experimental multiallocation interface for better performance (still experimental).
    • Added no exception support for those willing to disable exceptions in their compilers.
    • Fixed GCC -Wshadow warnings.
    • Replaced deprecated BOOST_NO_XXXX with newer BOOST_NO_CXX11_XXX macros.
  • Context:
    • Support for iOS on ARM and MacOS X on x86 (32bit) added.
    • Support for SEH Overwrite Protection on Win32.
  • Geometry:
    • Bugfixes
      • avoid generating output polygons with interior rings below minimum size (e.g. one or two points)
      • geometry::disjoint for degenerate segments (patched by Karsten Ahnert)
      • problem in geometry::difference for missing handling tangency, reported by H2
      • fixed geometry::for_each for use with Lambda's
      • fixed geometry::comparable_distance point-linestring (and -range, -polygon)
    • Additional functionality
      • combinations for geometry::disjoint: point/ring, point/polygon, point/multi_polygon
      • combinations for geometry::intersects: point/ring, point/polygon, point/multi_polygon
    • Internal changes
      • updates in specializations/not_implemented for various algorithms (as in an earlier version, these changes are still going on; they take care for simplified structs, better error reporting, and automatized documentation)
      • fixes in unit tests
  • GIL:
    • Fixed self-assignment warnings (#4919).
  • Graph:
    • Fixed the following bugs from Trac: #3468, #4386, #5269, #7428, #7457, #7467, #7600, #7648, #7684, #7728, #7741, #7766, #7771, #7773, #7780, #7787, #7801 plus other bugs not in Trac.
    • Added support for reading from GraphML files containing multiple graphs.
    • Added versions of A* search specifically for trees, removing the need for a color map when it is acceptable to visit the same vertex multiple times.
    • Added VF2 subgraph isomorphism algorithm (contributed by Flavio De Lorenzi).
  • Hash:
    • Add support for boost::int128_type and boost::uint128_type where available.
    • On platforms that are known to have standard floating point functions, don't use the automatic detection (#7221, #7470).
  • Interprocess:
    • Fixed GCC -Wshadow warnings.
    • Experimental multiple allocation interface improved and changed again. Still unstable.
    • Replaced deprecated BOOST_NO_XXXX with newer BOOST_NO_CXX11_XXX macros.
    • ABI breaking: changed node pool allocators internals for improved efficiency.
    • Fixed bug #7795.
  • Intrusive:
    • Fixed bugs #7174, #7529, #7815.
    • Fixed GCC -Wshadow warnings.
    • Added missing explicit keyword in several intrusive container constructors.
    • Replaced deprecated BOOST_NO_XXXX with newer BOOST_NO_CXX11_XXX macros.
    • Small documentation fixes.
  • Lexical cast:
    • New character type detection algorithm for user defined types #6786.
    • Documentation updates (#7582, #7831).
    • Fixed bugs with std::array #7799.
    • Fixed compilation with -ftrapv and numeric to numeric conversions #7814.
  • Locale:
    • Security related bug fix, some invalid UTF-8 sequences where accepted as valid #7743
    • Invalid Windows codepage names used #7386
    • Fixed missing documentation, caused by a error in Doxygen formatting #7734
    • Fixed missing std:: in some places #7701
    • Spelling, grammar, typos fixes #7368, #7762
  • Math:
    • Fixed issues #7325, #7415, #7416, #7183, #7649, #7694, #4445 and #7492.
    • Fixed mistake in calculating pooled standard deviation in two-sample students t example #7402.
    • Improve complex acos/asin/atan, see #7290, #7291.
    • Improve accuracy in some corner cases of cyl_bessel_j and gamma_p/gamma_q thanks to suggestions from Rocco Romeo.
    • Improve accuracy in Bessel J and Y with integer orders thanks to suggestions from Rocco Romeo.
  • MinMax:
    • Fixed a misuse of the comma operator (#7752).
    • Updated the docs to fix broken link (#7751).
  • Move:
    • Better header segregation (bug #6524).
    • Small documentation fixes
    • Replaced deprecated BOOST_NO_XXXX with newer BOOST_NO_CXX11_XXX macros.
    • Fixed #7830, #7832.
  • Polygon:
    • Fixes:
      • #6366 Bug in boost::polygon::contains for polygon_90 type.
      • #7678 multiple definitions of bool boost::polygon::belongs(...) by multiple #include.
    • Internal changes:
      • refactored point/segment/interval data/concept/traits.
      • added unit tests for point and interval data/concept/traits.
      • simplified transform.hpp to operate only in 2D.
      • removed point_3d data/concept/traits.
  • Random:
    • Now compiles with exceptions disabled (#5399).
  • Range:
  • Ratio:
    • Fixes:
      • #7616 br_mul::nan - warning C4293: '<<' : shift count negative or too big, undefined behavior`.
  • Regex: Fixed Issues: #7744, #7644.
  • Smart Pointers:
    • New Features:
      • Glen Fernandes provided implementations of make_shared and allocate_shared for arrays. They achieve a single allocation for an array that can be initialized with constructor arguments or initializer lists as well as overloads for default initialization and no value initialization. See the 'make_shared and allocate_shared for arrays' page for more information.
      • shared_ptr can now be used to hold a pointer to a dynamically allocated array. This is accomplished by using an array type (T[] or T[N]) as the template parameter.
      • Smart pointers now use explicit operator bool on C++11 compilers. This can break code that passes a smart pointer to a function taking a bool, or that returns a smart pointer from a function with a bool return type. Please use p != 0 or !!p in such cases.
  • StringAlgo:
    • Fixed a bug where it wouldn't find overlapping patterns (#7784).
    • Disambiguated some calls to insert (#7346).
  • Thread:
    • Deprecated features:
      • Deprecated features since boost 1.53 will be available only until boost 1.58.
      • C++11 compliance: packaged_task<R> is deprecated, use instead packaged_task<R()>.
      • #7537 deprecate Mutex::scoped_lock and scoped_try_lock and boost::condition
    • New Features:
      • #6270 C++11 compliance: Add thread constructor from movable callable and movable arguments
      • #7279 C++11 compliance: Add noexcept in system related functions
      • #7280 C++11 compliance: Add promise::...at_thread_exit functions
      • #7281 C++11 compliance: Add ArgTypes to packaged_task template.
      • #7282 C++11 compliance: Add packaged_task::make_ready_at_thread_exit function
      • #7412 C++11 compliance: Add async from movable callable and movable arguments
      • #7413 C++11 compliance: Add async when the launch policy is deferred.
      • #7414 C++11 compliance: future::get post-condition should be valid()==false.
      • #7422 Provide a condition variable with zero-overhead performance penality.
      • #7444 Async: Add make_future/make_shared_future.
      • #7540 Threads: Add a helper class that join a thread on destruction.
      • #7541 Threads: Add a thread wrapper class that joins on destruction.
      • #7575 C++11 compliance: A future created by async should "join" in the destructor.
      • #7587 Synchro: Add strict_lock and nested_strict_lock.
      • #7588 Synchro: Split the locks.hpp in several files to limit dependencies.
      • #7590 Synchro: Add lockable concept checkers based on Boost.ConceptCheck.
      • #7591 Add lockable traits that can be used with enable_if.
      • #7592 Synchro: Add a null_mutex that is a no-op and that is a model of UpgardeLockable.
      • #7593 Synchro: Add a externally_locked class.
      • #7594 Threads: Allow to disable thread interruptions.
    • Fixed Bugs:
      • #7464 BOOST_TEST(n_alive == 1); fails due to race condition in a regression test tool.
      • #7657 Serious performance and memory consumption hit if condition_variable methods condition notify_one or notify_all is used repeatedly.
      • #7665 this_thread::sleep_for no longer uses steady_clock in thread.
      • #7668 thread_group::join_all() should check whether its threads are joinable.
      • #7669 thread_group::join_all() should catch resource_deadlock_would_occur.
      • #7671 Error including boost/thread.hpp header on iOS.
      • #7672 lockable_traits.hpp syntax error: "defined" token misspelled.
      • #7798 boost::future set_wait_callback thread safety issues.
      • #7808 Incorrect description of effects for this_thread::sleep_for and this_thread::sleep_until.
      • #7812 Returns: cv_status::no_timeout if the call is returning because the time period specified by rel_time has elapsed, cv_status::timeout otherwise.
      • #7874 compile warning: thread.hpp:342: warning: type attributes are honored only at type definition.
      • #7875 BOOST_THREAD_THROW_IF_PRECONDITION_NOT_SATISFIED should not be enabled by default.
      • #7882 wrong exception text from condition_variable::wait(unique_lock<mutex>&).
      • #7890 thread::do_try_join_until() is missing a return type.
  • Unordered:
    • Remove support for the old pre-standard variadic pair constructors, and equality implementation. Both have been deprecated since Boost 1.48.
    • More internal implementation changes, including a much simpler implementation of erase, and removed more deprecated config macros.
  • Utility:
    • Added string_ref, a non-owning reference to a contiguous sequence of characters.
  • Variant:
    • Added rvalue constructors and rvalue assignment operators (for C++11 compatible compilers only). Library now can be used with move-only types (#7620, #7718).
  • Wave:
  • xpressive:
    • Accomodate recent smart pointer changes (#7809).

Updated Tools

Compilers Tested

Boost's primary test compilers are:

  • Linux:
    • GCC: 4.1.2, 4.2.4, 4.4.4, 4.5.3, 4.6.3, 4.7.2
    • GCC, C++11 mode: 4.4.4, 4.5.3, 4.6.3, 4.7.2
    • Intel: 11.1, 12.1
    • LLVM Clang: 2.8
    • LLVM Clang, with libc++: 3.2
  • OS X:
    • GCC: 4.4.7
    • GCC, C++11 mode: 4.4.4
    • Intel: 11.1, 12.0
  • Windows:
    • Visual C++: 9.0, 10.0
  • FreeBSD:
    • GCC: 4.2.1, 32 and 64 bit

Boost's additional test compilers include:

  • Linux:
    • Cray: 4.6.1
    • Clang: from subversion
    • LLVM Clang, with libc++: 3.2
    • GCC: 4.2.4, 4.4.4, 4.5.3, 4.6.3, 4.7.1
    • GCC, C++11 mode: 4.4.4, 4.5.3, 4.6.3, 4.7.1, 4.7.2
    • pgCC: 11.9
    • Intel: 10.1, 11.1, 12.1
    • Intel, C++11 mode: 13.0.1
    • Visual Age:
  • OS X:
    • Clang: from subversion
    • Clang, C++11 mode: from subversion
    • Intel: 11.1, 12.0
    • GCC: 4.4.7
    • GCC, C++11 mode: 4.4.4
  • Windows:
    • Visual C++: 10.0, 11.0
    • Visual C++ with STLport: 9.0
    • Visual C++, Windows Mobile 5, with STLport: 9.0
  • AIX:
    • IBM XL C/C++ Enterprise Edition: V12.1.0.1

Acknowledgements

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