Boost
Releases
arrow_drop_down
Prior Release (1.58.0)
April 6, 2015
Dependencies
There were 24 dependencies added (in 17 libraries) and 19 dependencies removed (in 12 libraries) this release.
Platform File SHA256 Hash
Unix boost_1_58_0.tar.bz2 fdfc2....7d3e5
boost_1_58_0.tar.gz a004d....c8102
Windows boost_1_58_0.7z e1fc6....df84f
boost_1_58_0.zip 99759....5eecc

Version 1.58.0

April 17th, 2015 07:53 GMT

Documentation

Known Issue

  • Boost.Python will fail to build if it is compiled against a version of python that is one of: 3.0.X, 3.1.X, 3.2.X, 3.3.X. Versions 2.X and 3.4+ are not affected. This is fixed in git.
  • Boost.Fusion has a regression with non-constexpr types. #11211 This is fixed in some PRs: Github PR #70, Github PR #71, Github PR #72

Patches:

New Libraries

  • Endian:
    • Types and conversion functions for correct byte ordering and more regardless of processor endianness.
  • Sort:
    • Includes spreadsort, a general-case hybrid radix sort that is faster than O(n*log(n))

Updated Libraries

  • Asio:
    • Ensured errors generated by Windows' ConnectEx function are mapped to their portable equivalents (#10744).
    • Added new macro BOOST_ASIO_DISABLE_CONNECTEX to allow use of ConnectEx to be explicitly disabled.
    • Fixed a race condition in windows::object_handle when there are pending wait operations on destruction (#10624).
    • Fixed IPv6 address parsing on FreeBSD, where a trailing scope ID would cause conversion to fail with EINVAL.
    • Worked around shared library visibility issues by ensuring Asio types use default visibility (#9465, #11070).
    • Changed the SSL wrapper to call the password callback when loading an in-memory key (#10828).
    • Fixed false SSL error reports by ensuring that the SSL error queue is cleared prior to each operation.
    • Fixed an ssl::stream<> bug that may result in spurious 'short read' errors.
    • Removed a redundant null pointer check in the SSL engine (#10088).
    • Added options for disabling TLS v1.1 and v1.2 (#10690).
    • Removed use of deprecated OpenSSL function ERR_remove_state.
    • Fixed detection of various C++11 features with Clang (#8835, #10884).
    • Fixed detection of C++11 std::addressof with g++ (#10982).
    • Changed multicast test to treat certain join_group failures as non-fatal.
    • Decoupled Asio unit tests from Boost.Test (#11116).
    • Changed the tutorial to use std::endl to ensure output is flushed.
    • Fixed an unsigned integer overflow reported by Clang's integer sanitizer.
    • Added support for move-only return types when using a yield_context object with asynchronous operations.
    • Changed yield_context to allow reentrant calls to the completion handler from an initiating function.
    • Updated detection of Windows Runtime to work with latest Windows SDK.
  • Chrono:
    • Version 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:
    • support for ARM/iOS (32+64 bit)
    • class execution_context (C++14)
  • Conversion:
    • polymorphic_pointer_downcast and polymorphic_pointer_cast functions were added (thanks to Boris Rasin) #10780
    • All the functions now throw exceptions using boost::throw_exception
    • Documnetation update
  • DateTime:
    • Restored to_time_t function.
    • Renamed variable v_type to var_type so it longer conflicts with an AIX system variable.
    • Documnetation fixes.
  • Flyweight:
    • Added hash support both with std::hash and boost::hash. This can be optionally disabled to avoid clashes with legacy code where this support has already been defined by the user.
    • Maintenance fixes.
  • Function:
    • Added support for functions accepting C++11 rvalues and Boost.Move rvalues #10585.
  • Functional/Factory:
    • Minor breaking change: the default template parameter to indicate that it shouldn't use an allocator is now void, instead of boost::none_t. For details, see the changelog.
  • Fusion:
    • Automatic hash creation function (Github PR #12)
    • New ADAPT_STRUCT, ADAPT_ADT, ADAPT_ASSOC_ that deduce the members types (#9516).
    • Add convert implementation for Boost.Tuple and std::tuple.
    • Add mpl::clear implementation for Boost.Tuple and std::tuple.
    • Use boost::declval instead of std::declval, (#10190).
    • Remove use of boost::blank (#8622).
    • Add result_of::{copy,move} (#5886).
    • Better constexpr and noexcept support.
    • Improved SFINAE Friendliness of many metafunctions (#10676, #10443).
    • result_of::size::value and result_of::size::type::value are the same type now (#7304)
    • result_of::at<Seq, N>::type is now defined when sizeof of sequence is less than N (#6507, #7651)
    • Fix missing includes (#8457).
    • Many documentation fixes & improvements (#6090, #5324, GitHub PR #33, GitHub PR #53, GitHub PR #56)
  • Geometry:
    • Additional functionality:
      • New algorithm num_segments, returning the number of segments of a geometry
      • New overload for is_valid algorithm, that takes a string reference as a second argument and fills it with a message related to the validity or invalidity of the geometry
      • New overload for is_valid algorithm, that takes an enum reference as a second argument and fills it with a value related to the validity or invalidity of the geometry
      • Disjoint and intersects support the following geometry combinations: point/multipoint, multipoint/multipoint, multipoint/segment, multipoint/box
    • Improvements:
      • Buffer now supports flat-ends for linestrings with a bend close to the start (such that buffered segment crosses flat-end).
      • Buffer performance is improved significantly
      • Partition performance is improved significantly for polygons, potentially enhancing all overlay operations
    • Solved tickets:
      • #8379 Invalid comparison of the result of determinant
      • #10108 Error in overlay operations in specific cases where geometries touch at one point
      • #10201 Suggestion to use different function to compare coordinates [wontfix]
      • #10467 Template parameter name coliding with B0 macro name defined in termios.h
      • #10640 Invalid result of buffer() for CCW Polygons.
      • #10666 MSVC compiler warning C4127: conditional expression is constant
      • #10747 Error in rescaling causing errors in areal/areal set operations
      • #10770 Buffer fails for large distances, or rough round joins, where concavities where not intersected properly
      • #10658 sym_difference yields bad result for int polygons
      • #10835 Difference of multilinestring and polygon yields wrong result
      • #10861 Rtree failing to compile for Value being a pair or a tuple containing pointer to Geometry and the default equal_to<> used
      • #10863 Template parameter name coliding with B0 macro name defined in termios.h (duplicate of 10467)
      • #10887 Invalid result of within() and relate() for Linear/MultiPolygon
      • #10890 Invalid result of disjoint() for Point/Segment.
      • #10904 Invalid calculation of most significant Dimension of a segment in relate_cartesian_segments strategy
      • #10912 Invalid result of within() and relate() for Areal/Areal
      • #10951 Tests failing on windows with intel compiler due to lack of /bigobj flag.
      • #10957 Assertion failure and invalid results of various relational operations.
      • #10958 Invalid results of disjoint() L/L and L/A.
      • #10959 Assertion failure in get_turns() used with no_rescale_policy.
      • #10960 Invalid result of get_turns() for L/A, missing turn.
      • #10961 Invalid result of get_turns() for L/A, invalid turn for a Linear spike.
      • #11112 Compilation failure on Solaris due to a CS name clash (used for a macro on this platform)
      • #11121 Invalid result of difference() for integral coordinates
    • Bugfixes:
      • Bug in multipoint/polygon multipoint/multipolygon distance computation (wrong detection of points inside the areal geometry)
      • Bug in flatten_iterator's assignment operator causing an access violation
      • Bug in Cartesian segment-segment intersection strategy when one segment degenerates to a point and is collinear to the other non-degenerate segment
      • Bug in centroid(), non-deterministic result if calculated for e.g. a Polygon with zero-area.
      • Bug in buffers for joins with a limited number of points
      • Bug in buffers for round joins with limited number of points around sharp corners
      • Bug in buffers for joins with large buffer distances
      • Bug in buffers for round ends with an odd number of points
      • Bug in buffers for flat ends with large buffer distances
      • Bug in buffers for interior rings with large negative buffer distances
      • Bug in closing_iterator not working properly when the input range is empty
      • Bug in is_simple, not handling properly closed simple linestrings within multilinestrings
      • Bug in rtree constructors taking a pair of Iterators or a Range (packing algorithm), the use of reference to destroyed temporary when Iterator's reference is not true reference, e.g. for some of the Range Adaptors. It also affects distance() and comparable_distance(). This bug may cause unexpected behavior of the rtree or distance() algorithm, e.g. an assertion failure or a SEGFAULT.
      • Bug in rtree count() member function, the use of reference to destroyed temporary when object of type convertible but not the same as value_type or indexable_type is passed. If this happens, wrong result may be returned, in most cases 0.
      • Bugs related to the handling of Ranges, preventing compilation of Geometries using non-Container Ranges in some algorithms (thanks to Samuel Debionne)
  • Hash:
    • Fixed strict aliasing violation (GitHub #3).
  • Interprocess:
  • Intrusive:
  • Lexical Cast:
  • Log:
    • Bug fixes:
      • Fixed thread id formatting.
      • Fixed process id formatting. (#10926)
      • Fixed build failure on GNU Hurd.
      • Fixed incorrect behavior of text file sink backend in case if free space on the file system gets exhausted. The sink will no longer create lots of empty files in attempt to recover. (#11016)
      • Fixed incorrect behavior of attribute_set::insert() in some cases. The inserted elements could have made some previously inserted elements not findable. (#11106)
      • Fixed incorrect behavior of attribute_value_set::size() if a large number of attribute values are inserted into the set. (#11148)
    • See changelog for more details.
  • Math:
    • Added two new special functions - trigamma and polygamma.
    • Large update to the Elliptic integral code to use Carlson's latest algorithms - these should be more stable, more accurate and slightly faster than before. Also added support for Carlson's RG integral.
    • Added ellint_d, jacobi_zeta and heuman_lambda elliptic integrals.
    • Fixed namespace scope constants so they are constexpr on conforming compilers, see #10901.
    • Fixed various cases of spurious under/overflow in the incomplete beta and gamma functions, plus the elliptic integrals, with thanks to Rocco Romeo.
    • Fix 3-arg legendre_p and legendre_q functions to not call the policy based overload if the final argument is not actually a policy.
    • Cleaned up some dead code in the incomplete beta function, see #10985.
    • Fixed extreme-value pdf for large valued inputs, see #10938.
    • Switched documentation to use SVG rather than PNG graphs and equations - browsers seem to have finally caught up!
  • Move:
  • Multi-index Containers:
    • The efficiency of lookup operations has improved in situations where they involve the generation of temporary values of key_type. Consider for instance the following code:
      typedef multi_index_container<
        std::string,
        indexed_by<
          ordered_unique<identity<std::string> >
        >
      > multi_t;
      ...
      multi_t m=...;
      m.find("boost"); // passed a const char*, not a std::string    
      
      In previous versions of the library, the find operation generates several temporary std::strings (one every time an internal comparison is made). In sufficiently advanced compilers, this is now avoided so that only one temporary is created.
    • Maintenance fixes.
  • Multiprecision:
    • Changed frexp to always be non-expression template generating, see: 10993.
    • Improved support of cpp_dec_float on Cygwin and other platforms with missing long double support, see 10924.
    • Improved noexcept support and added some more tests, see 10990.
    • Various workarounds applied for Intel-15.0 and Solaris-12.4 compilers.
  • Optional:
    • Improved documentation; documented IO operations and header files.
    • Fixed Bugs:
      • boost::none_t is no longer convertible from literal 0. This avoids a bug where optional<rational<int>> oi = 0; would initialize an optional object with no contained value.
      • Added a way to manually disable move semantics: just define macro BOOST_OPTIONAL_CONFIG_NO_RVALUE_REFERENCES. This can be used to work around #10399.
      • #10825 Improved the trick that prevents streaming out optional without header optional_io.hpp by using safe-bool idiom.
      • #11087 It is no longer possible to assign optional<U> to optional<T> when U is not assignable or convertible to T.
      • #10839 Value accessors now work correctly on rvalues of optional<T&>.
  • Phoenix:
    • Version 3.2.0
    • New Features:
      • Phoenix now has a lazy list implementation as an optional extension.
    • New Example:
      • A new example bind_goose shows the compatibility between boost bind and boost phoenix bind.
    • Fixed Bugs:
      • #10927 Missing std:: qualifier for fabs in phoenix/test/stdlib/cmath.cpp
      • #11085 Missing qualifier for pow call in phoenix/test/function/function_tests.cpp
      • Fixes for a number of cases failing with bind, lambda and let.
  • Predef:
    • Version 1.2
    • Added Visual Studio 2015 detection.
    • Added detection of Haiku OS.
    • Fix Android endian detection.
    • Added predef_check program and BBv2 integration for build configuration checks.
  • Random:
    • Added non_central_chi_squared_distribution.
  • Thread:
    • Version 4.5.0
    • New Experimental Features:
      • #9600 Async: Add task_region
      • #10611 Add emplace promise::set_value and emplace make_ready_future
      • #10826 Add scheduled executor operations
      • #11048 Add a serial_executor based on continuations
    • Fixed Bugs:
      • #6787 boost::thread::sleep() hangs if system time is rolled back
      • #10734 Submit method work differently on different executors, some throw exception and some silently ignore error (thread_executor and inline_executor)
      • #10736 Task exceptions silently ignored. I think std::terminate solution from N3785 and std::thread is better choice and more consistent.
      • #10737 In serial_executor we have infinite wait if task throw exception.
      • #10822 Boost.Thread fails to compile on Android
      • #10824 Boost.Thread 1.57 breaks Windows XP compatibility for SP2 and below.
      • #10963 future<future<T>>::then Has No Implementation
      • #10964 future<future<T>>::unwrap().then() Deadlocks
      • #10968 The futures returned by async() and future::then() are not blocking.
      • #10971 shared_future::get()/get_or() must be const
      • #10972 shared_future::then() can be called multiple times.
      • #10979 Support T& type deduction when the make_ready_future parameter is reference_wrapper<T>
      • #10996 Thread physical_concurrency() is failing on Windows
      • #11035 BOOST_HAS_PTHREAD_MUTEXATTR_SETTYPE not defined for Android
      • #11053 The attached code results in a R6025 - pure virtual function call in run_thread_exit_callbacks
  • TypeErasure:
    • Fixed compilation with MSVC 12.
  • TypeIndex:
    • Link time assertions added on platforms that support it
  • Units:
    • Fix for base units with arbitrary dimensions.
  • Unordered:
    • Fix move assignment with stateful, propagate_on_container_move_assign allocators (#10777).
    • Fix potential overflow when calculating number of buckets to allocate (GitHub #4).
    • Other minor changes, see changelog.
  • Variant:
    • Breaking change: Compile time checked getter is now used by default in boost::get<U>(VariantT) and boost::polymorphic_get<U>(VariantT). New getter asserts that type U is one of the types that can be stored in VariantT. Define BOOST_VARIANT_USE_RELAXED_GET_BY_DEFAULT to change default behavior. See get.hpp and polymorphic_get.hpp descriptions for more info #547.
    • Added missing comparison operators to variant #8620, #10811
    • Multiple documentations fixes #10273, #10653
    • Variadic templats enabled on Clang #10832
    • Autodetection of return types for visitors in C++14, which makes it possible to use boost::apply_visitor with generic lambdas #10837:
      auto str = boost::apply_visitor(
          [](auto v) {
              return boost::lexical_cast<std::string>(v);
          },
          variant_instance
      );
      
    • Improved swap functions #10882
    • Many improvements to variadic templates, even more methods support variadics.
    • Multiple bugfixes and testing improvements including Coveralls integration

Compilers Tested

Boost's primary test compilers are:

  • Linux:
    • Clang: 3.4
    • Clang, C++14: 3.5, 3.6
    • GCC: 4.4.7, 4.9.2
    • GCC, C++98: 4.8.1, 4.8.2
    • GCC, C++11: 4.4.7, 4.8.4, 4.9.2
    • GCC, C++14: 4.9.2
  • Windows:
    • GCC, mingw: 4.4.7, 4.5.4, 4.6.3, 4.7.3, 4.8.2
    • Visual C++: 8.0, 9.0, 10.0, 11.0, 12.0
  • FreeBSD:
    • GCC: 4.2.1
  • QNX:
    • QCC: 4.4.2

Boost's additional test compilers include:

  • Linux:
    • Clang: 3.0, 3.1, 3.2, 3.3, 3.4
    • Clang, C++14: 3.5, 3.6
    • GCC: 4.4.7, 4.6.4, 4.7.3, 4.8.1, 4.9.2, 5.0.0 (experimental)
    • GCC, C++11: 4.4.7, 4.8.4, 4.9.2
    • GCC, C++14: 4.9.2
  • Windows:
    • GCC, mingw: 4.4.7, 4.5.4, 4.6.4, 4.7.3
    • Visual C++: 8.0, 9.0, 10.0, 11.0, 12.0, 14.0
  • Android
    • Clang: 3.4, 3.5
    • GCC: 4.8, 4.9
  • FreeBSD:
    • GCC: 4.2.1
  • QNX:
    • QCC: 4.4.2

Acknowledgements

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

Contributors

John Maddock
John Maddock
Contributor
Adam Wulkiewicz
Adam Wulkiewicz
Contributor
John Fletcher
John Fletcher
Contributor
Menelaos Karavelas
Menelaos Karavelas
Contributor
Barend Gehrels
Barend Gehrels
Contributor
Vicente J. Botet Escriba
Vicente J. Botet Escriba
Contributor
Christopher Kormanyos
Christopher Kormanyos
Contributor
Ion Gaztañaga
Ion Gaztañaga
Contributor
Peter Dimov
Peter Dimov
Contributor
Daniel James
Daniel James
Contributor
Paul A. Bristow
Paul A. Bristow
Contributor
Andreas Huber
Contributor
Kohei Takahashi
Kohei Takahashi
Contributor
Oliver Kowalke
Oliver Kowalke
Contributor
Damien Buhl alias daminetreg
Damien Buhl alias daminetreg
Contributor
Antony Polukhin
Antony Polukhin
Contributor
Joel de Guzman
Joel de Guzman
Contributor
Marshall Clow
Marshall Clow
Contributor
Mario Mulansky
Mario Mulansky
Contributor
Andrey Semashev
Andrey Semashev
Contributor
Beman Dawes
Beman Dawes
Contributor
Joaquin M. López Muñoz
Joaquin M. López Muñoz
Contributor
Andrzej Krzemieński
Andrzej Krzemieński
Contributor
Christopher Kohlhoff
Christopher Kohlhoff
Contributor
Karsten Ahnert
Karsten Ahnert
Contributor
Edward Diener
Edward Diener
Contributor
Niall Douglas
Niall Douglas
Contributor
Daryle Walker
Daryle Walker
Contributor
Rene Rivera
Rene Rivera
Contributor
akumta
akumta
Contributor
Jürgen Hunold
Jürgen Hunold
Contributor
Robert Ramey
Robert Ramey
Contributor
K. Noel Belcourt
K. Noel Belcourt
Contributor
Sebastian Redl
Sebastian Redl
Contributor
Steven Watanabe
Steven Watanabe
Contributor
Nikhar Agrawal
Nikhar Agrawal
Contributor
Joaquim Duran
Contributor
Eric Niebler
Eric Niebler
Contributor
Nasos
Nasos
Contributor
Stephen Kelly
Stephen Kelly
Contributor
Alex Henrie
Alex Henrie
Contributor
Andrii Sydorchuk
Andrii Sydorchuk
Contributor
Agustin Berge
Agustin Berge
Contributor
Neil Groves
Neil Groves
Contributor
David Bellot
David Bellot
Contributor
Tim Blechmann
Tim Blechmann
Contributor
Frank Mori Hess
Frank Mori Hess
Contributor
Michel Morin
Michel Morin
Contributor
Samuel Debione
Samuel Debione
Contributor
qduran
qduran
Contributor
GregorDeCillia
GregorDeCillia
Contributor
Michael A. Jackson
Michael A. Jackson
Contributor
Marek Kurdej
Marek Kurdej
Contributor
wmamrak
wmamrak
Contributor
Vladimir Prus
Vladimir Prus
Contributor
Bruno Dutra
Bruno Dutra
Contributor
Jessica Hamilton
Jessica Hamilton
Contributor
Marcel Raad
Marcel Raad
Contributor
Andy Webber
Andy Webber
Contributor
fiesh
fiesh
Contributor
jdurancomas
jdurancomas
Contributor
Troy D. Straszheim
Troy D. Straszheim
Contributor
Mateusz Łoskot
Mateusz Łoskot
Contributor
Boris Rasin
Boris Rasin
Contributor
Peter A. Bigot
Peter A. Bigot
Contributor
Louis Dionne
Louis Dionne
Contributor
Ahmed Charles
Ahmed Charles
Contributor
Sean Reilly
Contributor
Raffi Enficiaud
Raffi Enficiaud
Contributor
Mikhail Matrosov
Mikhail Matrosov
Contributor
Adrien Destugues
Adrien Destugues
Contributor
Berkus Decker
Berkus Decker
Contributor
Zoey Greer
Zoey Greer
Contributor
fkonvick
fkonvick
Contributor
Dave Abrahams
Dave Abrahams
Contributor
Stefan Seefeld
Stefan Seefeld
Contributor
Adam Romanek
Adam Romanek
Contributor
Gennadiy Rozental
Gennadiy Rozental
Contributor
Gregor Jasny
Gregor Jasny
Contributor
Yuri Kunde Schlesner
Yuri Kunde Schlesner
Contributor
Ephraim Ofir
Ephraim Ofir
Contributor
insideoutclub
insideoutclub
Contributor
Jared Grubb
Jared Grubb
Contributor
Evgeny Shapovalov
Contributor
Jonathan Turkanis
Jonathan Turkanis
Contributor
Fedor Sergeev
Fedor Sergeev
Contributor
gnzlbg
gnzlbg
Contributor
Felix Gruber
Felix Gruber
Contributor
Axel Ismirlian
Axel Ismirlian
Contributor
Siddhant Saraf
Siddhant Saraf
Contributor
Christophe Henry
Christophe Henry
Contributor
Steve Gates
Steve Gates
Contributor
Jörg Böhme
Jörg Böhme
Contributor
Zhe Wang
Zhe Wang
Contributor
Glen Fernandes
Glen Fernandes
Contributor
Stefan Slapeta
Contributor
Axel Huebl
Axel Huebl
Contributor
levinmk
levinmk
Contributor
Bryce Adelstein-Lelbach
Bryce Adelstein-Lelbach
Contributor
Sylwester Arabas
Sylwester Arabas
Contributor
Douglas Gregor
Douglas Gregor
Contributor
Ryan Pavlik
Ryan Pavlik
Contributor
Martin Matulyauskas
Contributor
Markus Schöpflin
Contributor
Niklas Angare
Niklas Angare
Contributor
Jens Maurer
Jens Maurer
Contributor
Lee Clagett
Lee Clagett
Contributor
Tim Angus
Tim Angus
Contributor
Jamboree
Jamboree
Contributor
Nathan Ridge
Nathan Ridge
Contributor
Thomas Bernard
Thomas Bernard
Contributor
Olaf van der Spek
Olaf van der Spek
Contributor