Version 1.71.0
Version 1.71.0
August 19th, 2019 15:31 GMT
| Platform | File | SHA256 Hash |
|---|---|---|
| unix | boost_1_71_0.tar.bz2 | d73a8da01e8bf8c7eda40b4c84915071a8c8a0df4a6734537ddde4a8580524ee |
| boost_1_71_0.tar.gz | 96b34f7468f26a141f6020efb813f1a2f3dfb9797ecf76a7d7cbd843cc95f5bd | |
| windows | boost_1_71_0.7z | 1b3949ffddf56129141032542523920034f2e69775fb9332a52ba37c548dbf35 |
| boost_1_71_0.zip | 85a94ac71c28e59cf97a96714e4c58a18550c227ac8b0388c260d6c717e47a69 |
New Libraries
-
Variant2: A never-valueless, strong guarantee implementation of
std::variant, from Peter Dimov.
Updated Libraries
-
Align:
-
Support for any integral type in the integral versions of
align_upandalign_down. -
Revised the implementation of
aligned_allocatorto no longer require a specialization forvoid. -
Define
propagate_on_container_move_assignmentandis_always_equalinaligned_allocator.
-
-
Asio:
-
Improved performance slightly by eliminating a redundant move construction when completed handlers are dispatched.
-
Eliminated a compiler warning by annotating a
casefall-through in the free functionconnect()implementation. -
Fixed the
is_*_buffer_sequencedetection traits for user-defined sequence types. -
Fixed some Windows-specific warnings about an incompatible pointer cast when obtaining the
CancelIoExentry point. -
Changed to automatically set the defaults when opening a serial port on Windows.
-
Changed the serial port
get_option()member function to be const. -
Fixed a name hiding issue with the WinRT stream-oriented socket backend's
shutdownfunction. -
Applied a minor fix to the documentation for
is_dynamic_buffer. -
Added some support for Haiku OS.
-
Added wolfSSL compatability.
-
Changed to require C++17 or later for coroutines TS support with clang.
-
Fixed a doxygen generation problem in the tutorial.
-
Ensured example programs are correctly incorporated into the documentation.
-
-
Any:
-
Static initialization of the default constructed
boost::anyis now possible. -
Fixed performance regression in assignment on a compilers without move-semantics.
-
Maintenance work.
-
-
Beast:
-
This version consists mostly of bug fixes and performance improvements.
-
Substantial work included for the split compilation mode, to reduce compile time when defining
BOOST_BEAST_SEPARATE_COMPILATION. -
We'd love to know how you or your company use Beast, consider adding an item to the Companies and Individuals Using Beast list.
-
See the full Release Notes for a complete list of changes.
-
-
Circular Buffer:
-
Correct doxygen generated reference to no longer show internal members. (Glen Fernandes)
-
Eliminate ubsan warning on
addandsub. (Glen Fernandes) -
Fix incorrect check in
is_uninitialized. (Niklas Fejes)
-
-
Container:
-
Fixed bugs:
-
dequecan now have options, usingdeque_options. The block size/bytes can be be specified. -
static_vectorcan now have options, usingstatic_vector_options. Alignment and throwing behaviour can be be specified. -
small_vectorcan now have options, usingsmall_vector_options. Alignment and growth factor can be be specified.
-
-
Conversion:
-
Maintenance work.
-
-
Core:
-
Added functions
alloc_construct,alloc_construct_n,alloc_destroy, andalloc_destroy_nin<boost/core/alloc_construct.hpp>for allocator aware and exception safe construction and destruction of objects and arrays. (Glen Fernandes) -
Added constexpr functions
first_scalarin<boost/core/first_scalar.hpp>for obtaining a pointer to the first scalar element of an array. Given a pointer of typeT*they return a pointer of typeremove_all_extents_t<T>*. (Glen Fernandes) -
Added class template
noinit_adaptorin<boost/core/noinit_adaptor.hpp>which is an allocator adaptor that converts any allocator into one whoseconstruct(ptr)performs default initialization via placement new, and whosedestroy(ptr)invokes thevalue_typedestructor directly. (Glen Fernandes) -
Added class template
default_allocatorin<boost/core/default_allocator.hpp>, which can serve as a minimal default allocator that has interface similar to C++20std::allocator, supports configurations with disabled exceptions and does not havestdas an associated namespace. The allocator usesoperator newandoperator deletefor allocation. (Glen Fernandes) -
In
<boost/core/uncaught_exceptions.hpp>header, added workarounds for better compatibility with QNX SDP 7.0 when libc++/libc++abi libraries are used. (Andrey Semashev, #59) -
The
<boost/detail/sp_typeinfo.hpp>header is now marked as deprecated and will be removed in a future release.<boost/core/typeinfo.hpp>should be used instead. (Peter Dimov)
-
-
Endian:
-
Clarified requirements on the value type template parameter
-
Added support for
floatanddouble -
Added
endian_load,endian_store -
Updated
endian_reverseto correctly support all non-boolintegral types -
Moved deprecated names to the deprecated header
endian.hpp
-
-
Fiber:
-
documentation for shared_work updated
-
-
Filesystem:
-
Fixed incorrect
error_codereturned from directory iterator increment whenreaddir_ris used. -
For
path, fixed rvalue-awareoperator/return type to return an rvalue instead of rvalue reference. This fixes leaving a dangling reference in the user's code if the result ofoperator/is bound to a const reference. (#110) -
Fixes for better compatibility with Windows CE. (PR#24)
-
Added minimal support for CMake. (PR#106)
-
-
Flyweight:
-
Maintenance work.
-
-
Histogram:
-
New features:
-
Support for thread-safe storages and new thread-safe accumulators
-
Support for compiling without exceptions/RTTI (increases performance by 10-20 %) (with Glen Fernandes)
-
Performance improvements for 1D and 2D histograms
-
boost::histogram::indexed now returns forward iterator range instead of input iterator range
-
boost::histogram::indexed_range::accessor is now non-copyable and acts like reference to cell value, making more algorithms from the C++ stdlib work
-
boost::histogram::algorithm::reduce with new slice option and option fusion
-
boost::histogram::algorithm::project accepts runtime indices for static histograms
-
-
Bug Fixes:
-
boost::histogram::algorithm::reduce also works on histograms that have some axis types without reduction support
-
boost::histogram::axis::traits::update now works correctly for boost::histogram::axis::variant
-
-
Other:
-
100 % test coverage
-
Reduced internal Boost dependencies
-
Improved documentation and examples
-
Guaranteed no-throw moves for all builtin axis types
-
Compile cleanly at higher warning levels
-
-
See changelog for more details.
-
-
Log:
-
New features:
-
Improved support for C++17
std::string_viewinbasic_formatting_ostream. The string view can now participate in character code conversion on output. -
Added
auto_newlineformatter and stream manipulator. It can be used to ensure that formatted output always ends with a newline while avoiding duplicate newlines. -
In the output stream, text file and text multi-file sink backends added support for configuring behavior with regard to appending a trailing newline to every formatted log record. Use
auto_newline_modenamed parameter of the backend constructor or call theset_auto_newline_modemethod on the sink backend. -
Note: The default behavior with regard to trailing newlines added by sink backends has changed slightly compared to the previous Boost.Log releases. The backends will now only add a trailing newline if there isn't one in the formatted log message string already. In previous releases a newline was added unconditionally.
-
Added support for passing arbitrary function objects in the
filterandformatnamed parameters to sink constructors and convenience functions for initializing sinks. For example, it is now possible to specify C++11 lambda functions directly in these parameters. (#63) -
In the default filter and formatter factories used in filter and formatter parsers, added support for severity level attribute values of type
boost::log::trivial::severity_level. For filters, the support is limited to attributes with "Severity" name.
-
-
Bug fixes:
-
Fixed incorrect parsing of components of the rotated file names while scanning for files in the text file sink backend. If the file name pattern ended with a placeholder (for example, a file counter), the
scan_for_filesmethod would not find files matching that pattern in the target storage, leaving them unmanaged. In particular, such files would not be deleted to free target storage. (#78) -
Updated
basic_formatting_ostreamandbasic_record_ostreamto make it possible to overload stream output operators for pointers to user-defined types. User-definedoperator<<overloads takingstd::basic_ostreamand a pointer argument should now be picked up by the compiler when the pointer is being written to one of Boost.Log streams. (#84)
-
-
See changelog for more details.
-
-
Math:
-
New features:
-
Catmull-Rom interpolator now works in C++11
-
Cardinal quadratic B-spline interpolation
-
Domain of elliptic integrals extended
-
sin_pi and cos_pi performance improvements
-
Forward-mode automatic differentiation
-
Vector valued barycentric rational interpolation
-
Ooura's method for evaluation of Fourier integrals
-
-
Bug fixes:
-
Multiple compatibility issues with Multiprecision fixed
-
Lambert-W fixed on a rare architecture
-
-
-
Metaparse:
-
New features:
-
In C++11 variadic template support for the following:
sequence,one_of_c,one_of,repeated_one_of,repeated_one_of1,one_char_except_c,one_char_except.
-
-
Bug fixes:
-
BOOST_METAPARSE_STRINGdoes not use out of range character values as template arguments. -
any_of_c<>does not create empty array in C++14.
-
-
-
Multi Array:
-
Simplify allocator support by using new
alloc_construct_nandalloc_destroy_nfacilities from Core. (Glen Fernandes)
-
-
Multi-index Containers:
-
Added variants of
const_mem_funandmem_funfor differently qualified member functions (issue #24).
-
-
Outcome:
-
Enhancements:
-
#184 As per request from Boost release managers, relocated
version.hppandrevision.hppinto detail, and added the Boost licence boilerplate to the top of every source file which was missing one (I think). Also took the opportunity to run the licence restamping script over all Outcome, so copyright dates are now up to date. -
#185 Add FAQ item explaining issue #185, and why we will do nothing to fix it right now.
-
#189 Refactored the
OUTCOME_TRYimplementation to use more clarified customisation points capable of accepting very foreign inputs. Removed thestd::experimental::expected<T, E>specialisations, as those are no longer necessary. Fixed the documentation for the customisation points which previously claimed that they are ADL discovered, which they are not. Added a recipe describing how to add in support for foreign input types. -
#183 Added a separate
motivation/plug_error_codespecifically for Boost.
-
-
Bug fixes:
-
OUTCOME_VERSION_MINORhadn't been updated to 1. -
#181 Fix issue #181 where Outcome didn't actually implement the strong swap guarantee, despite being documented as doing so.
-
#190 Fix issue #190 in Boost edition where unit test suite was not runnable from the Boost release distro.
-
#182 Fix issue #182 where
trait::is_exception_ptr_available<T>was always true, thus causing much weirdness, like not printing diagnostics and trying to feed everything tomake_exception_ptr(). -
#192 Fix issue #192 where the
std::basic_outcome_failure_exception_from_error()was being defined twice for translation units which combine standalone and Boost Outcome's.
-
-
-
Parameter:
-
Upgraded keyword generation macro
BOOST_PARAMETER_TEMPLATE_KEYWORD(PR#15). -
Moved keyword generation macro
BOOST_PARAMETER_NESTED_KEYWORDfrom Accumulators to this library (PR#28). -
Moved
boost::parameter::required,boost::parameter::optional, andboost::parameter::deducedmetafunction definitions to their own header files in directory boost/parameter (PR#18). -
Added support for parameter category qualifiers "forward", "consume", and "move_from" (current qualifiers are "in", "out", and "in_out") (PR#21) (PR#23) based on http://www.modernescpp.com/index.php/c-core-guidelines-how-to-pass-function-parameters. Added new usage syntax
BOOST_PARAMETER_NAME((object-name), namespace-name) qualifier(tag-name))andBOOST_PARAMETER_NAME(qualifier(name)). (Existing code that uses qualifiers directly and correctly withBOOST_PARAMETER_FUNCTIONand other code generation macros should remain unaffected for now, so no breaking changes.) The reason for the change in usage is to enable applying of parameter category constraints to Boost.Parameter-enabled functions and constructors invoked through argument composition. (Otherwise, it is currently possible to use argument composition to bypass parameter category constraints applied inBOOST_PARAMETER_FUNCTIONet. al.) -
Added support for perfect forwarding (PR#23) (PR#26), so that
parameter::parameters::operator()can accept non-constrvalues. As a positive side effect, Boost.Parameter-enabled functions and constructors are no longer bound byBOOST_PARAMETER_MAX_ARITYon compilers that support perfect forwarding. User code can now check for this support by detecting the configuration macroBOOST_PARAMETER_HAS_PERFECT_FORWARDING, or manually turn off this support by defining the configuration macroBOOST_PARAMETER_DISABLE_PERFECT_FORWARDING. -
Added variadic function template
boost::parameter::compose()which takes in named arguments and returns them in an argument pack (PR#52). For compilers that do not support perfect forwarding, the configuration macroBOOST_PARAMETER_COMPOSE_MAX_ARITYdetermines the maximum number of arguments thatboost::parameter::compose()can take in (PR#61). -
Added code generation macros
BOOST_PARAMETER_BASIC_FUNCTION_CALL_OPERATOR,BOOST_PARAMETER_BASIC_CONST_FUNCTION_CALL_OPERATOR,BOOST_PARAMETER_NO_SPEC_FUNCTION,BOOST_PARAMETER_NO_SPEC_MEMBER_FUNCTION,BOOST_PARAMETER_NO_SPEC_CONST_MEMBER_FUNCTION,BOOST_PARAMETER_NO_SPEC_FUNCTION_CALL_OPERATOR,BOOST_PARAMETER_NO_SPEC_CONST_FUNCTION_CALL_OPERATOR,BOOST_PARAMETER_NO_SPEC_CONSTRUCTOR, andBOOST_PARAMETER_NO_SPEC_NO_BASE_CONSTRUCTOR(PR#52). -
Improved support for parameter-dependent return types via SFINAE (PR#73).
-
-
PtrContainer:
-
Fix a ptr_vector regression introduced in 1.66.0 (PR#24).
-
-
PolyCollection:
-
Maintenance work.
-
-
SmartPtr:
-
Added aliasing constructors to
weak_ptr -
Added
weak_ptr<T>::empty() -
Added
enable_shared_from,shared_from, andweak_from
-
-
Stacktrace:
-
Fixed output of
name(),source_location()andsource_line()for the default constructedframewith thread sanitizer builds in C++98 mode. -
Maintenance work.
-
-
Test:
-
Boost.test v3.11 see the Changes log for more details.
-
Breaking changes:
-
Boost.Test shows deprecation warnings if some very old headers as deprecated. If you encounter such warnings, please follow the indications: those headers will be removed in a future release.
-
-
New feature:
-
Now
BOOST_TESTcan be used to compare abstract types
-
-
-
Utility:
-
Implemented function template
ostream_stringin<boost/utility/ostream_string.hpp>to optimally write any kind of string content to an output stream. It satisfies the requirements of [ostream.formatted.reqmts]. (Glen Fernandes) -
Optimized the stream output operators of
basic_string_viewandbasic_string_refto write directly to therdbufstream buffer. (Glen Fernandes)
-
-
Uuid:
-
Breaking change: MD5 name-based uuid generation was corrected to be identical on all endian systems. Define
BOOST_UUID_COMPAT_PRE_1_71_MD5to keep the result in a format compatible with 1.66 through 1.70. This does not affect the default name-based uuid generation which is based on SHA1. (PR#109)
-
-
YAP:
-
Added an example showing how to make self-evaluating YAP expressions (that is, expressions that don't need an explicit call to
evaluate()ortransform()).
-
Compilers Tested
Boost's primary test compilers are:
-
Linux:
-
Clang: 3.0, 4.0.1, 6.0.1
-
Clang, C++0x: 3.0
-
Clang, C++11: 3.0, 3.1, 3.2, 3.3, 3.4, 4.0.1, 6.0.1, 7.0.0, 8.0.0
-
Clang, C++14: 3.5.0, 3.6.0, 3.7.1, 3.8.0, 3.9.1, 4.0.0, 4.0.1, 5.0.2, 6.0.1, 7.0.0, 8.0.0
-
Clang, C++17: 5.0.2, 6.0.1, 7.0.0, 8.0.0
-
GCC: 4.4.7, 4.5.3, 4.6.3, 5.4.0, 8.0.1
-
GCC, C++0x: 4.4.7
-
GCC, C++11: 4.7.3, 4.8.5, 4.9.4, 5.4.0, 6.4.0, 7.1.0, 8.0.1
-
GCC, C++14: 5.4.0, 5.5.0, 6.4.0, 7.1.0, 7.3.0, 8.0.1
-
GCC, C++17: 7.3.0, 8.0.1
-
Intel, C++14: 18.0
-
-
OS X:
-
Apple Clang: 9.0.0, 9.1.0, 10.0.0
-
Apple Clang, C++11: 9.0.0, 9.1.0, 10.0.0
-
Apple Clang, C++14: 9.0.0, 9.1.0, 10.0.0
-
Apple Clang, C++17: 9.1.0, 10.0.0
-
Apple Clang, C++1z: 9.0.0
-
Apple Clang, C++2a: 10.0.0
-
-
Windows:
-
GCC: 3.4.5, 4.1.2, 4.2.4, 4.3.3, 4.4.0, 4.5.4
-
GCC, C++0x: 4.6.4
-
GCC, C++11: 4.7.3, 4.8.1, 4.9.3
-
GCC, C++14: 5.1.0, 5.2.0, 5.3.0, 6.1.0, 6.2.0, 6.3.0, 6.4.0
-
GCC, C++17: 7.1.0, 7.2.0, 7.3.0
-
Visual C++: 7.1, 8.0, 9.0, 10.0, 11.0, 12.0, 14.0, 14.1
-
-
FreeBSD:
-
Clang: 4.0.0
-
Clang, C++11: 4.0.0
-
Clang, C++14: 4.0.0
-
Clang, C++1z: 4.0.0
-
Boost's additional test compilers include:
-
Linux:
-
Clang: 3.0, 3.8.1, 3.9.1, 4.0.1, 5.0.2, 6.0.1
-
Clang, C++0x: 3.0
-
Clang, C++11: 3.0, 3.1, 3.2, 3.3, 3.4, 4.0.1, 6.0.1, 7.0.0, 8.0.0
-
Clang, C++14: 3.5.0, 3.6.0, 3.7.1, 3.8.0, 3.9.1, 4.0.0, 4.0.1, 5.0.2, 6.0.1, 7.0.0, 8.0.0
-
Clang, C++17: 5.0.2, 6.0.1, 7.0.0, 8.0.0
-
GCC: 4.4.7, 4.5.3, 4.6.3, 4.9.4, 5.4.0, 5.5.0, 8.0.1
-
GCC, C++0x: 4.4.7
-
GCC, C++11: 4.7.3, 4.8.5, 4.9.4, 5.4.0, 6.4.0, 7.1.0, 8.0.1
-
GCC, C++14: 5.4.0, 5.5.0, 6.3.0, 6.4.0, 7.1.0, 7.3.0, 8.0.1, 8.1.0
-
GCC, C++17: 7.3.0, 8.0.1
-
Intel, C++14: 18.0
-
-
OS X:
-
Apple Clang: 9.0.0, 9.1.0, 10.0.0
-
Apple Clang, C++11: 9.0.0, 9.1.0, 10.0.0
-
Apple Clang, C++14: 9.0.0, 9.1.0, 10.0.0
-
Apple Clang, C++17: 9.1.0, 10.0.0
-
Apple Clang, C++1z: 9.0.0
-
Apple Clang, C++2a: 10.0.0
-
-
Windows:
-
GCC: 3.4.5, 4.1.2, 4.2.4, 4.3.3, 4.4.0, 4.5.4
-
GCC, C++0x: 4.6.4
-
GCC, C++11: 4.7.3, 4.8.1, 4.9.3
-
GCC, C++14: 5.1.0, 5.2.0, 5.3.0, 6.1.0, 6.2.0, 6.3.0, 6.4.0
-
GCC, C++17: 7.1.0, 7.2.0, 7.3.0
-
Visual C++: 7.1, 8.0, 9.0, 10.0, 11.0, 12.0, 14.0, 14.1
-
-
FreeBSD:
-
Clang: 4.0.0
-
Clang, C++11: 4.0.0
-
Clang, C++14: 4.0.0
-
Clang, C++1z: 4.0.0
-
Acknowledgements
Marshall Clow and Michael Caisse managed this release.
