Boost
Releases
arrow_drop_down
Prior Release (1.60.0)
December 14, 2015
Dependencies
There were 8 dependencies added (in 8 libraries) and 6 dependencies removed (in 4 libraries) this release.
Platform File SHA256 Hash
Unix boost_1_60_0.tar.bz2 686af....3fd3b
boost_1_60_0.tar.gz 21ef3....16ee4
Windows boost_1_60_0.7z a2488....b2aa2
boost_1_60_0.zip 1e22e....cdda8

Version 1.60.0

December 17th, 2015 15:52 GMT

Documentation

New Libraries

  • VMD:
    • Variadic Macro Data library, from Edward Diener.

Updated Libraries

  • Atomic:
    • Enforced proper alignment of atomic<> storage. This should fix possible issues on platforms that support atomic operations on data units larger than the native word size. This may also change binary layout of user's data structures that have atomic<> members.
    • Fixed compilation for PowerPC with IBM XL C++ compiler. Corrected memory barriers in PowerPC assembler.
    • Fixed compilation with MSVC-8 for ARM.
    • Fixed compilation with gcc 4.4 for x86-64, when 128-bit atomic operations were used. (#10994)
    • Optimized some gcc assembler blocks for x86/x86-64 to reduce the number of used registers. This may require binutils 2.10 or later.
  • Chrono - 2.0.5:
    • Fixes:
      • #10778 VC14 CTP4 Atomic don't compile with boost::chrono durations which are not TriviallyCopyable
      • #10840 Missing std:: qualifier for puts call in test_7868.cpp
      • #10851 Missing std:: qualifier for puts call in time_point_output.cpp
      • #10893 Minor doc typo in Boost.Chrono
      • #10992 Chrono IO state savers inconsistent with Boost.IO state savers
      • #10995 duration_put::put_value truncates fractional part
      • #11006 Impossible to instantiate time_fmt_io_saver due to several errors.
      • #11012 chrono_io v2 fail to compile with boost::chrono::duration< boost::rational<int> >
  • Container:
  • Context:
    • #11603 typo in PPC32/MACH-O asm
    • support for CYGWIN
  • Core:
    • In symbol demangling tools, added support for gabi++ ABI implementation used in Android NDK.
    • Added a new enable_if_has_type tool for performing SFINAE checks for presence of a nested type.
  • Filesystem:
    • New Features:
      • Added functions lexically_normal, lexically_relative, relative, and weakly_canonical. Many thanks to Jamie Allsop for his help and perseverance. Resolves tickets #1976, #5897, #6249.
      • Class path added types reverse_iterator and const_reverse_iterator, and added functions rbegin(), and rend().
      • C++11 noexcept supplied as specified in the Filesystem TS if supported by the compiler.
      • C++11 move constructors and move assignments supplied as specified in the Filesystem TS if supported by the compiler. Resolves #10291.
      • Existing functions whose names changed in the Filesystem TS are now supported under both the old and new names.
      • Added size() function to class path. Resolves #6874, Path should have a size() member function.
    • Tickets:
      • Fix #11733, Missing unistd.h include in boost/libs/filesystem/src/unique_path.cpp, by apply a patch from Idar Tollefsen.
      • Fix #5706, unique_path Fails on Windows for Temporary User Profiles, by applying pull request #15 from Sebastian Redl to fix a race condition in unique_path.
      • Fix #10591, boost::filesystem does not build on iOS 8, by applying a patch submitted by Daniel Seither.
      • Fix #9454, Boost Filesystem [library build] not compiling when BOOST_FILESYSTEM_NO_DEPRECATED is defined, by applying a patch submitted by Makesim.
      • Fix #11447, __OpenBSD__ macro name misspelled, by applying a patch submitted by Jasper Lievisse Adriaanse.
      • Fix #11288, A patch to avoid redundant string allocations, by applying a patch submitted by Yevhen Ivannikov.
      • Resolve #11175, out-of-date documentation causing users to incorrectly expect that the library could be used with exceptions disabled.
      • Resolve #11166, by mitigating (i.e. reducing the likelihood of) a possible external file system race in remove().
      • Fix #7258, create_directories returns false if the path ends with a slash. Also fix related issues if path contains dot or dot-dot elements, and added test cases to the test suite.
      • Resolve #10766, parent_path() with redundant separator returns wrong value, by adding examples and notes to the reference documentation to show why the returned value is in fact correct, and to provide rationale for that behavior. See path.itr, and path.decompose parent_path() and filename() sections of the reference docs.
      • Close #7607, path should not infer an invisible "." at the end of a path that ends with a slash, as resolved by #7258 and #10766.
      • Close #11061, #11062, Impossible to traverse the path of the reverse iterator, as effectively resolved by the addition of the class path reverse iteration feature. The reference documentation has also been updated with a note warning about the limitations of class path iterators.
    • Other fixes:
      • Clear several spurious GCC warnings.
      • Fix bug in file_status and recursive_directory_iterator: C++ turns an explicit constructor with all arguments except first defaulted into non-explicit single argument constructor.
      • Apply Reference docs editorial cleanups: Use same style sheet as the rest of the documentation. Tweak tab font size. Fix excessively long lines in tables, synopsis.
      • Minor fixes, including pull requests from Jonathan Wakely and Marcel Raad.
  • Flyweight:
    • Maintenance fixes.
  • Fusion:
    • All of fusion containers and generators now support C++11 variadic templates. (pull-request 89, pull-request 97, pull-request 100)
      • Special notice for fusion::vector
        • Due to implementation limitation, numbered form (i.e. fusion::vectorN) is provided via C++11 aliasing templates and deprecated in C++11 or later. In this case, you should check BOOST_FUSION_HAS_VARIADIC_VECTOR macro and switch usage because some partial specialization would become compile error (e.g. pull-request for Spirit).
    • fusion::nview now support C++11 variadic templates. (pull-request 90)
    • fusion::fold is now SFINAE-friendly. (pull-request 102)
    • Bug fixes:
      • The generic fusion sequence convert to a deque fails with a compiler error. (#11572)
      • (doc) Return type of functions incorrect. (#3358)
  • Geometry:
    • Solved tickets:
      • #10803 Union algorithm returning invalid geometry
      • #11522 Namespace clash in buffer for traits::detail
      • #11533 Assert failure in rtree caused by a bug in remove() if min elements number is 1
      • #11607 Private geometry::exception::what()
      • #11709 is_simple segfault
      • #11710 is_simple - empty geometry logic
      • #11711 is_simple and is_valid - Points that are NaN or Infinity
    • Bugfixes:
      • Fix colocations of touching interior ring / exterior ring, where it also touches another polygon
      • Fix removing values from an empty rtree - no effect and 0 returned instead of assertion failure
      • Fix segfault in centroid for multi geometries containing empty single geometries (thanks to Jiri Drbalek)
      • Fix liang_barsky strategy for integral coordinates (thanks to Dane Springmeyer)
  • Interprocess:
  • Intrusive:
  • Lexical Cast:
    • Fixed usage of lexical_cast with move only types #11570
    • Fixed crash when BOOST_LCAST_NO_COMPILE_TIME_PRECISION is defined #11669
    • Suppress some of the warning reported in #11570 and #4946
  • Locale:
    • Implemented generic codecvt facet and add general purpose utf8_codecvt facet
    • Added posix locale support for FreeBSD 10.0 and above
    • Fixed issues #10017 (sun redefinition on SunOS), #11163 (set_default_messages_domain incorrect behavior), #11673 build issues
    • Some warning cleanup
    • Fixed tests for latest ICU versions
    • Added workaround for libc++ issues
    • Added new defines BOOST_LOCALE_ENABLE_CHAR16_T and BOOST_LOCALE_ENABLE_CHAR32_T to enable C++11 char16_t and char32_t instead of deprecated ones
  • Log:
    • General changes:
      • On Windows, the configuration macro BOOST_LOG_USE_WINNT6_API is no longer used by the library. The target Windows version should be configured by defining macro BOOST_USE_WINAPI_VERSION.
    • Bug fixes:
      • Fixed compilation for Android using Google NDK. (#11559)
      • Fixed compilation of some logging statements, where the first object to be put into stream is not directly supported by formatting_ostream. (#11549)
      • Added a workaround for Solaris Studio 12.4, which should fix the compilation of formatting_ostream. (#11545)
      • Fixed compilation when native wchar_t type is disabled. (#11541)
      • Fixed exporting symbols from the boost_log_setup library on POSIX-like systems.
      • Fixed compilation of character decorators.
      • Added a workaround for incorrect file name generation in text file sink backend, when the file name contains date/time placeholders. (#11691)
    • See changelog for more details.
  • Move:
  • Multi-index Containers:
    • Fixed an interoperability problem with Qt due to the optional definition of a macro with name foreach in this framework.
    • Maintenance fixes.
  • odeint:
    • New features:
      • Added functionality to throw an exception if too many ODE steps are performed.
      • Added possibility to limit maximal step size in adaptive methods.
    • several Bug fixes, see https://github.com/headmyshoulder/odeint-v2/issues
  • Optional:
    • Changed the implementation of boost::none again. Now it is a const object with internal linkage (as any other tag). This fixes #11203.
  • Predef:
    • Add detection of SIMD hardware.
    • See history for more details.
  • Test:
  • Thread - 4.6.0: New Experimental Features:
    • #11231 Allow to set continuation future's destructor behavior to non-blocking
    • #11424 Provide shared_timed_mutex as an alternative name for shared_mutex and deprecate the use of shared_mutex as a timed mutex
    • #11734 future::then(Cont) should be able to execute the contination on undetermined thread
    • #11736 Allow to use launch::executor on future::then(launch::executor, cont)
    • #11737 Add a launch::inherit policy that can be used on ::then() to use the policy of the parent future Fixed Bugs:
    • #3926 thread_specific_ptr + dlopen library causes a SIGSEGV.
    • #6377 Condition variable blocks when changing time
    • #6787 boost::thread::sleep() hangs if system time is rolled back
    • #7665 this_thread::sleep_for no longer uses steady_clock in thread
    • #7720 exception lock_error while intensive locking/unlocking of mutex
    • #9309 test_latch fails often on clang-darwin-tot11
    • #10788 GetLogicalProcessor isn't available for Windows platform less or equals to 0x0502
    • #11090 ex_future_unwrap- ThreadSanitizer: lock-order-inversion (potential deadlock)
    • #11158 Pthread thread deadlock when faketime used
    • #11174 boost::condition_variable::timed_wait with predicate unexpectedly wakes up while should wait infinite
    • #11185 Incorrect URL redirection
    • #11192 boost::future<>::then() with an executor doesn't compile when the callback returns a future
    • #11250 future made from make_exceptional fails on assertion in destructor
    • #11256 future<>::is_ready() == false in continuation function
    • #11261 bad use of scoped threads in basic_thread_pool
    • #11262 bad use of direct pointer in shared_state_nullary_task
    • #11263 lock already locked lock
    • #11266 boost::packaged_task has invalid variadic signature
    • #11302 boost thread doesn't build with BOOST_THREAD_PATCH.
    • #11322 sleep_for() nanoseconds overload will always return too early on windows
    • #11329 using declarative for GetProcessHeap, .... fails
    • #11368 boost thread's usage of CreateWaitableTimer wakes PC from sleep (doh)
    • #11377 Boost condition variable always waits for system clock deadline
    • #11435 gcc compiler warning in future.hpp
    • #11555 devector.hpp assumes allocator_traits_type is always present
    • #11562 Timer (using steady_clock) expires after computer time is set forward on Ubuntu 64-bit
    • #11672 Thread: Should use unique_ptr, not auto_ptr
    • #11688 thread::try_join_until: Avoid busy wait if system clock changes
    • #11716 ::then(f) should inherit the parent Executor
  • UUID:
    • Added a workaround for MSVC codegen bug that could cause crashes when comparing UUIDs.
    • Added detection of AVX being enabled with MSVC compiler switches.

News

Notes for Windows users

This release of Boost will by default compile for Windows Vista/Windows Server 2008, if the compiler supports a recent enough Windows SDK, and for Windows XP otherwise. Binaries compiled with default options may not run on the older Windows versions.

It is still possible to explicitly specify target Windows version by defining BOOST_USE_WINAPI_VERSION to a numeric version of Windows API. For example, building Boost for Windows XP can be done with the following command:

    b2 release define=BOOST_USE_WINAPI_VERSION=0x0501

The list of Windows API version numbers can be seen on this page.

This change only concerns libraries that use the common Windows API abstraction layer. Currently, these libraries are: Boost.Chrono, Boost.Dll, Boost.Log, Boost.UUID. This will also affect all dependent libraries.

Release of Hana postponed

Due to time constraints, the release of Hana will be postponed to a later release of Boost. This will also allow some known issues to be addressed properly before releasing the library officially as a part of Boost. More information can be found on the mailing list.

Release of Boost.DLL library postponed

In order to provide superior support of uncommon toolsets and platforms, the release of Boost.DLL was postponed to a later release of Boost. This also allows to test better a recently added ability to copy construct and copy assign instances of boost::dll::shared_library and provide examples on importing functions with non default calling conventions. Latest version and developer documentation of the library could be found at GitHub repo.

Compilers Tested

Boost's primary test compilers are:

  • Linux:
    • Clang: 3.4, 3.6
    • Clang, C++14: 3.7
    • GCC: 4.4.7, 4.8.4, 4.9.3, 5.1.0, 5.2.1
    • GCC, C++11: 4.4.7
    • GCC, C++14: 4.9.3
  • Windows:
    • GCC, C++03, mingw: 3.4.5
    • GCC, C++11, mingw: 4.6.4, 4.7.3, 4.8.1
    • GCC, C++14, mingw: 4.9.3, 5.1.0
    • Visual C++: 7.1, 8.0, 9.0, 10.0, 11.0, 12.0, 14.0
  • Android:
    • Clang: 3.6, 3.7
    • GCC: 4.9.0, 5.2.0
  • QNX:
    • QCC: 4.4.2
  • SunOS:
    • Oracle Solaris Studio: 12.4, 12.5

Boost's additional test compilers include:

  • Linux:
    • Clang: 3.0, 3.1, 3.2, 3.3, 3.4.2, 3.6.0, 3.8.0
    • Clang, C++14: 3.7.0
    • GCC: 4.4.7, 4.5.3, 4.6.4, 4.7.3, 4.8.1, 4.9.3, 5.1.0, 6.0.0
    • GCC, C++11: 4.4.7
    • GCC, C++14: 4.9.3, 5.2.1
    • IBM XL C++: 13.1.2.0
    • Intel: 16.0
  • OS X:
    • Clang: 7.0.0
    • GCC: 5.2.0
  • Windows:
    • GCC, C++03, mingw: 3.4.5
    • GCC, C++11, mingw: 4.7.3, 4.8.1
    • GCC, C++14, mingw: 4.9.3, 5.1.0
    • Visual C++: 7.1, 8.0, 9.0, 10.0, 11.0, 12.0, 14.0
  • Android:
    • Clang: 3.6, 3.7
    • GCC: 4.9.0, 5.2.0
  • FreeBSD:
    • Clang, C++11: 3.4.1, 3.7.0
    • GCC, C++11: 4.8.5, 5.2.0, 6.0.0
  • QNX:
    • QCC: 4.4.2
  • SunOS:
    • Oracle Solaris Studio: 12.4, 12.5

Acknowledgements

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

Contributors

John Maddock
John Maddock
Contributor
Vicente J. Botet Escriba
Vicente J. Botet Escriba
Contributor
Raffi Enficiaud
Raffi Enficiaud
Contributor
Andrey Semashev
Andrey Semashev
Contributor
Paul A. Bristow
Paul A. Bristow
Contributor
Beman Dawes
Beman Dawes
Contributor
Ion Gaztañaga
Ion Gaztañaga
Contributor
Oliver Kowalke
Oliver Kowalke
Contributor
John Fletcher
John Fletcher
Contributor
Adam Wulkiewicz
Adam Wulkiewicz
Contributor
Daniel Wallin
Contributor
akumta
akumta
Contributor
Edward Diener
Edward Diener
Contributor
Charly Chevalier
Charly Chevalier
Contributor
Kohei Takahashi
Kohei Takahashi
Contributor
Joel de Guzman
Joel de Guzman
Contributor
Gennadiy Rozental
Gennadiy Rozental
Contributor
Barend Gehrels
Barend Gehrels
Contributor
Peter Dimov
Peter Dimov
Contributor
Dave Abrahams
Dave Abrahams
Contributor
Mario Mulansky
Mario Mulansky
Contributor
Menelaos Karavelas
Menelaos Karavelas
Contributor
Marshall Clow
Marshall Clow
Contributor
Glen Fernandes
Glen Fernandes
Contributor
Marcel Raad
Marcel Raad
Contributor
Vladimir Batov
Vladimir Batov
Contributor
Joaquin M. López Muñoz
Joaquin M. López Muñoz
Contributor
Artyom Beilis
Artyom Beilis
Contributor
Rene Rivera
Rene Rivera
Contributor
Daniel James
Daniel James
Contributor
Steven Watanabe
Steven Watanabe
Contributor
Robert Ramey
Robert Ramey
Contributor
Tim Blechmann
Tim Blechmann
Contributor
Christopher Kohlhoff
Christopher Kohlhoff
Contributor
Ben Wiederhake
Ben Wiederhake
Contributor
jofaber
jofaber
Contributor
Joel Falcou
Joel Falcou
Contributor
Joachim Faulhaber
Joachim Faulhaber
Contributor
Antony Polukhin
Antony Polukhin
Contributor
Mikael Olenfalk
Mikael Olenfalk
Contributor
zerotypos-found
zerotypos-found
Contributor
Stefan Seefeld
Stefan Seefeld
Contributor
spreadsort
spreadsort
Contributor
Andrii Sydorchuk
Andrii Sydorchuk
Contributor
Ilja
Ilja
Contributor
Jürgen Hunold
Jürgen Hunold
Contributor
Stephen Kelly
Stephen Kelly
Contributor
Mario Lang
Mario Lang
Contributor
Billy Donahue
Contributor
Karsten Ahnert
Karsten Ahnert
Contributor
Jeremy W. Murphy
Jeremy W. Murphy
Contributor
Michel Morin
Michel Morin
Contributor
Alain Miniussi
Alain Miniussi
Contributor
Stefan Bühler
Stefan Bühler
Contributor
Jonathan Wakely
Jonathan Wakely
Contributor
Troy D. Straszheim
Troy D. Straszheim
Contributor
Takeshi Abe
Takeshi Abe
Contributor
Frank Richter
Frank Richter
Contributor
Andrzej Krzemieński
Andrzej Krzemieński
Contributor
Ed Schouten
Ed Schouten
Contributor
Louis Dionne
Louis Dionne
Contributor
Vladimir Prus
Vladimir Prus
Contributor
Gaurav
Gaurav
Contributor
Michael A. Jackson
Michael A. Jackson
Contributor
Lorenzo Caminiti
Lorenzo Caminiti
Contributor
Adrian Vogelsgesang
Adrian Vogelsgesang
Contributor
Björn Dahlgren
Björn Dahlgren
Contributor
AntonBikineev
AntonBikineev
Contributor
Artem Tokmakov
Artem Tokmakov
Contributor
Jessica Hamilton
Jessica Hamilton
Contributor
Jiri Drbalek
Jiri Drbalek
Contributor
Lee Clagett
Lee Clagett
Contributor
Markus Schöpflin
Contributor
Dane Springmeyer
Dane Springmeyer
Contributor
David Deakins
David Deakins
Contributor
Sergiu Dotenco
Sergiu Dotenco
Contributor
Ahmed Charles
Ahmed Charles
Contributor
Arvin Schnell
Arvin Schnell
Contributor
Terrell Russell
Terrell Russell
Contributor
Hartmut Kaiser
Hartmut Kaiser
Contributor
Nicola Musatti
Nicola Musatti
Contributor
Chris Glover
Chris Glover
Contributor
Nicolas Cornu
Contributor
Christopher Moore
Christopher Moore
Contributor
Thomas Kent
Thomas Kent
Contributor
John Sebastian Peterson
John Sebastian Peterson
Contributor
fiesh
fiesh
Contributor
Emil Dotchevski
Emil Dotchevski
Contributor
Douglas Gregor
Douglas Gregor
Contributor
David Abdurachmanov
David Abdurachmanov
Contributor
Ashish Sadanandan
Ashish Sadanandan
Contributor
6recetru
6recetru
Contributor
Jeremiah Willcock
Jeremiah Willcock
Contributor
Alexandre Hamez
Alexandre Hamez
Contributor
Zoey Greer
Zoey Greer
Contributor
tobias-loew
tobias-loew
Contributor
Romain Geissler
Romain Geissler
Contributor
Sebastien Loriot
Sebastien Loriot
Contributor
VemundH
VemundH
Contributor
sampatht
sampatht
Contributor
Jeff Trull
Jeff Trull
Contributor
Nico Schlömer
Nico Schlömer
Contributor
Jeremy Murphy
Contributor
K. Noel Belcourt
K. Noel Belcourt
Contributor
Dmitry Sobinov
Dmitry Sobinov
Contributor
Patrick J. LoPresti
Patrick J. LoPresti
Contributor
Mathias Gaunard
Mathias Gaunard
Contributor
scopeInfinity
scopeInfinity
Contributor
Frank Mori Hess
Frank Mori Hess
Contributor
Laurent Stacul
Laurent Stacul
Contributor
Václav Slavík
Václav Slavík
Contributor
Christoph Weiss
Christoph Weiss
Contributor
marcinz
marcinz
Contributor
sehe
sehe
Contributor
Sebastian Redl
Sebastian Redl
Contributor
Ruslan Baratov
Ruslan Baratov
Contributor
Eric Niebler
Eric Niebler
Contributor