Posted
about 6 years
ago
Known Issues
These are patches from library authors which were found too late to be fixed
in the release. Be careful as they have not been through the normal testing
process.
Fix
... [More]
compiling with FreeBSD:
/patches/1_67_0/0001-Fiber-Use-pthread_setaffinity_np-on-FreeBSD-as-well.patch
/patches/1_67_0/0002-Wave-Avoid-using-wrong-T_DIVIDE-on-BSDs.patch
Fix Python auto-linking:
/patches/1_67_0/0003-Python-Fix-auto-linking-logic-Windows-only.patch
New Libraries
Contract:
Contract programming
for C++. All contract programming features are supported: Subcontracting,
class invariants, postconditions (with old and return values), preconditions,
customizable actions on assertion failure (e.g., terminate or throw),
optional compilation and checking of assertions, etc, from Lorenzo Caminiti.
HOF:
Higher-order functions for
C++, from Paul Fultz II.
Updated
Libraries
Asio:
Added missing const qualifier to basic_socket_acceptor::get_option.
Worked around a parsing error that occurs with some versions of
gcc.
Fixed broken code samples in tutorial.
Added new experimental features. (Note that "experimental"
features may be changed without notice in subsequent releases.)
Added experimental::detached
completion token.
Added experimental::redirect_error
completion token.
Added experimental::co_spawn
facility for integration with the coroutines technical specification.
Updated timeout examples to use latest features.
Used asio::steady_timer
rather than asio::deadline_timer.
Used asio::dynamic_buffer
rather than asio::streambuf.
Used timed asio::io_context::run_for() function for blocking clients.
Added example showing a custom completion token for blocking
with timeouts.
Fixed unit tests to compile when BOOST_ASIO_NO_DEPRECATED
is defined.
Changed socket iostreams to use chrono by default, to fix compatibility
with the Networking TS. Define BOOST_ASIO_USE_BOOST_DATE_TIME_FOR_SOCKET_IOSTREAM
to enable the old Boost.Date_Time interface in basic_socket_streambuf
and basic_socket_iostream.
Updated examples to use chrono rather than Boost.Date_Time.
Fixed an incorrect member function detector in the is_dynamic_buffer trait.
Fixed an async_result
incompatibility with deprecated handler_type.
Added a missing move optimisation in the SSL stream implementation.
Fixed incorrect basic_resolver_results::value_type
typedef.
Fixed a compile error with some OpenSSL versions when SSL_OP_NO_COMPRESSION is defined.
Changed add_certificate_authority
to process multiple certificates in a bundle.
Eliminated deprecation warning with MSVC by using std::invoke_result rather than std::result_of.
Changed to use std::string_view
for C++17 or later, and std::experimental::string_view
for C++14. Define the preprocessor macro BOOST_ASIO_DISABLE_STD_STRING_VIEW
to force the use of std::experimental::string_view (assuming it
is available) when compiling in C++17 mode.
Ensured DynamicBuffer
template arguments are decayed before using in enable_if
tests.
Changed documentation to distinguish legacy completion handlers
(which are still required to be CopyConstructible) from new MoveConstructible
handlers.
Suppressed a discarded return value warning in the buffer debugging
support.
Fixed basic_yield_context
to work with completion signatures containing reference parameters.
Ensured that stackful coroutines launched using spawn() correctly store decayed copies
of their function and handler arguments.
Fixed some compatibility issues with Android.
Added cross-compilation support to Jamfiles.
Fixed some minor portability issues in examples.
Atomic:
Breaking change: Changed the result
of the (op)_and_test
operations added in Boost 1.66 to the opposite - the functions
now return true if
the operation result is non-zero. This is consistent with other
test methods in
Boost.Atomic and the C++ standard library. Users can define BOOST_ATOMIC_DETAIL_HIGHLIGHT_OP_AND_TEST
when compiling their code to emit warnings on every use of the
changed functions. This way users can locate the code that needs
to be updated. (#11)
Update for C++2a. On C++11 compilers that support scoped enums,
the memory_order
enumeration is now scoped and contains constants with shorter names
like acquire,
release or seq_cst (i.e. users can use
memory_order::acquire instead of memory_order_acquire). The old
constants are also provided for backward compatibility. (P0439R0)
Update for C++2a. Added experimental support for atomic operations
on floating point types. In addition to general operations, add, sub,
negate operations
and their fetch_(op) and opaque_(op) versions are supported. Lock-free
property can be tested with the new macros BOOST_ATOMIC_FLOAT/DOUBLE/LONG_DOUBLE_LOCK_FREE.
The support for floating point types is optional and can be disabled
by defining BOOST_ATOMIC_NO_FLOATING_POINT.
(P0020R6)
Added new experimental operations:
negate_and_test
and complement_and_test
which perform negation or bitwise complement and return
true if the
result is not zero.
add, sub, negate,
bitwise_and,
bitwise_or,
bitwise_xor,
bitwise_complement
operations which perform the operation and return its result.
For generic atomic<T> specialization, the default
constructor is now trivial if T's
default constructor is.
The internal implementation of atomic<T> has been updated to avoid undefined
behavior that stems from signed integer overflows. As required
by the C++ standard, the library uses two's complement representation
of signed integers internally and accroding rules of overflow.
Currently, the library requires the native signed integer types
to also use two's complement representation (but no defined overflow
semantics).
Improved Clang support. In particular, fixed DCAS not being lock-free
and fixed possible incorrect code generated on 32-bit x86.
Improved MinGW support. For gcc versions up to 4.6, fixed compilation
of DCAS on x86.
In x86 PIE code, asm blocks now preserve ebx
value.
Beast:
This version fixes significant defects in websocket::stream
which can lead to asserts or undefined behavior. Users are encouraged
to update to the latest Boost release.
For a complete list of changes, please view the official Release Notes.
ContainerHash:
Extracted from the functional module to break a dependency cycle.
Moved headers to new location to reflect name change, the old include
paths will still work.
Added support for std::string_view,
std::error_code, std::error_condition,
std::optional, std::variant,
std::monostate where available.
Added explicit support for vector<bool>, so that it will work with
libc++ (#13501).
More detail in the library
change log.
Context:
#62/PR#64: fix i386/macho routines to correctly
return transfer_t in EAX/EDX
#65: __sanitizer_finish_switch_fiber
should be called directly after context switch
#66: Clang on Windows : error: No best alternative for
libs/context/build/asm_sources
#73: fixing C2492 for execution_context (v1)
known bug: including all.hpp + ucontext/winfib
causes error 'forced_unwind: is not a member of boost::context::detail'
Core:
Updated to_address
and pointer_traits
to reflect the design adopted for C++2a in P0653R2
(Glen Fernandes).
Coroutine2:
#13: Pull coroutine does not rethrow an exception if
it is thrown on the first entry
DateTime:
Fixed various year 2038 (32-bit) issues (#2818) (#2819)
(#3487) (#4543) (#8450) (#9158) (#9489) (#10570)
(#12609)
Fixed a binary serialization regression introduced in 1.66.0 (#56)
(PR#58) (PR#70)
Updated the timezone database file (#4430) (#10087) (PR#68)
Enhanced from_iso_string
so it can read output of to_iso_string
for special values (#1078) (PR#69)
Changed maximum supported year from 10000 to 9999 to resolve various
issues (#13159) (#12630) (PR#71)
boost::date_time::period_parser::delimiter_strings did nothing
(#11142) (PR#63)
Ensure special values are not automatically translated to integral
types (#11168) (PR#64)
int_adapter::is_signed should be const (#12363)
(PR#60)
boost::date_time::time_input_facet throws when
using %j
alone (#12910) (PR#59)
Time input facet is not able to parse %e day (#13194) (PR#54)
Improved Github CI build environment for better project metrics
and quality (PR#52) (PR#72)
Fixed various compiler warnings (#3606) (#9882) (PR#62)
DLL:
Fixes for calling functions on dirty GetLastError() #16.
Fiber:
#128: Assertion "! ctx->ready_is_linked()"
when using condition_variable::wait_for
#132: fatal error: 'stdexception' file not found
#141: boost::fibers::async problem
#146: remove unecessary lock of remote-ready-queue spinlock
#153: docu: replace set_ready() by schedule()
#154: Document iterators on channels
#155: this_fiber is wrongly documented as being a member
of boost::fibers
#156: Many examples are using their own barrier.hpp
#158: add BOOST_FIBERS_DECL to work_stealing class
#162: remove use-coutner increment for timed wait ops
#166: remove assertion for wait_is_linked() in schedule()
#167: call shared_state::owner_destroyed() only if future
was created from
#168: fiber/doc/installing.qbk not not up to date
Filesystem:
Fix static initialization issue that caused a crash if path operations
were used before main() (PR#62, PR#43,
PR#50, PR#59)
Fusion:
Switch to SFINAE in template parameters on fusion::map
to fix compile error on newer MSVC 2017. (PR#164)
Fix for compilers not compatible with CWG defect 945 on fusion::vector. (PR#166)
Added limits precheck on sequence converter to make error message
clearer. (PR#168)
Allow incomplete types in fusion::tag_of
and fusion::is_native_fusion_sequence. Note
that this changes no behaviour from previous release, but compliant
to TypeTraits's change. (PR#171)
Locale:
Added support of unique_ptr
interface in addition to C++2003 auto_ptr
- in order to support C++2017, now you can use BOOST_LOCALE_HIDE_AUTO_PTR
definiton to remove auto_ptr
from the interfaces and prevent deprecated watnings.
Fixed test problem with ICU >60.1
Fix of solaris build
Fixed wired FreeBSD/clang issue on optimized build. Probably compiler
workaround
Added workaround for failing MSVC tests due to 932 codepage codecvt
issue
Fixed bugs 6851, 12572, 12453
Fixed missing throw in case of failure in icu/date_time
Fixed build agains Boost.Thread v4
Fixed Year of week instead of year ICU backend formatting
Fixed formatting test for ICU 56.1 and above
Log:
Improved compatibility with C++17: use allocator_traits
to work with allocators instead of directly accessing its members.
Improved compatibility with gcc 7 and later by updating library
ABI namespace definition.
Added documentation for the "Append" config file parameter
for "TextFile" sinks. The parameter was supported previously,
only the documentation was missing.
Math:
Add naive Monte Carlo integration support.
Add Chebyshev interpolation routines.
Multi-index Containers:
Elements with overloaded operator& are now fully accepted (ticket
#13307). Thanks to Daniel Frey for his updating Boost.Operators
to help fix this issue.
Avoided usage of std::allocator
members deprecated in C++17. Contributed by Daniela Engert.
Maintenance fixes.
Multiprecision:
Breaking Change: When converting
a multiprecision integer to a narrower type, if the value is too
large (or negative) to fit in the smaller type, then the result
is either the maximum (or minimum) value of the target type. This
was always the intended behaviour, but was somewhat haphazardly
enforced before. If you really do want just the low order N bits
of a value, then you will need to mask these out prior to the case,
for example: static_cast<unsigned>(~static_cast<unsigned>(0) &
my_value).
Note that technically (to avoid undefined behaviour) you should
do the same thing with built in integer types too. See #13109.
Fix bug in conversion of decimal to rational types (zero needs
special handling), see #13148.
Fix conversion from cpp_bin_float to a wider built in integer type,
see #13301.
Improve performance heurists used in cpp_bin_float exp function.
Fix bug in floor/ceil and cpp_bin_float when the exponent type
is wider than an int, see #13264.
Disable explicit conversion operator when the target type is already
constructible from this type, see #30.
Fix support for changes new to MPIR-3.0, see #13124.
Optional:
Fixed issue #46
Fixed -Wzero-as-null-pointer-constant
warnings.
Phoenix:
Correct documentation and example code. (#8187, PR#56,
PR#57)
Fixed bug with initializing phoenix lazy from array types in C++11.
(#12733, PR#58, PR#61)
Use proto subscript and assignment overload operators buildins
to fix compile error with some lambda experssions on recent MSVC.
(#62, PR#64, PR#66, PR#67)
Remove use of deprecated std::iteratror.
Thanks to Daniela Engert. (PR#59)
PolyCollection:
Maintenance fixes.
Python:
The library name now includes the version suffix of the Python
version used to compile it. For example, a variant compiled with
Python 2.7 will produce library names boost_python27
and boost_numpy27,
etc.. Combined with a related fix in Boost.Build, this means that
it is now possible to build variants for multiple Python versions
in a single build process.
Spirit:
Spirit.X3:
Breaking change: Removed
with_context
(#239)
Added noexcept to x3::variant
and forward_ast
(#241)
CR+LF lines wrongly counted in error_handler::position() (#248)
Fixed unused_type
attribute case in parse_into_container
(#266)
Fixed parsing into associative containers (#289)
Fixed overflow problem in uint_parser<signed
T>
(#297)
Added VS2015 Update 3 support by using workarounds (#308)
Fixed include guard names collision with Qi (#313)
Added parsing into range (#316) (#12928)
Changed iterator concept static assert from ForwardIterator to ReadableIteratorConcept
&& ForwardTraversalConcept
(#320)
Reenabled fusion::map
support (#330)
Fixed string("...") and attr("...") to single item sequence
(#337)
Dereference a single item view instead of unwrapping sequence
(#340)
Prevent parse_nan
from dereferencing out of range iterator (#351)
Use traits to test if container is empty (#355)
Spirit V2
Fixed keyword directives compilation on C++11 (#256)
(#11493)
Fixed subrules compilation (#279) (#259)
Fixed subrules use after scope bug (#284) (#5270)
Fixed undefined behavior in sequential or operator. Underlying
parsers order of execution was dependent on compiler (#310)
Spirit was accidentally relaying on types
typedef of boost::optional.
The typedef was removed in the new optional implementation
(#271) (#12349)
Fixed problems with BOOST_SPIRIT_NO_PREDEFINED_TERMINALS
(attr_cast,
confix,
distinct,
keywords,
and flush_multi_pass)
(#314) (#13311)
Added missing copy assignment operator to hold_any
(#361) (#8268)
Spirit.Qi:
Fixed alternate operator (#201) (#271)
(#12349)
Fixed signed integer overflow in real parser (#245)
Fixed overflow problem in uint_parser<signed
T>
(#297)
Fixed get_current_line,
get_line_start,
and added get_line_end
(#304)
Permutations parser were always initializing optionals (#319)
(#12473)
Changed iterator concept static assert from ForwardIterator to ReadableIteratorConcept
&& ForwardTraversalConcept
(#320)
Added assertations to real parsers to ensure that the parse_frac_n from user
defined real policy does not return negative values and also
to prevent static analyzers false-positives (#358)
Spirit.Karma:
Fixed alternate operator (#271)
Fixed no_buffering_policy
missing copy constructor (#261)
The ostream_iterator
was inheriting std::iterator
which is deprecated in C++17 (#345)
Spirit.Lex:
Store id as promoted type to allow out-of-enum values (#247)
Fixed C2001 'newline in constant' warning in generated lexers
(#324) (#11540)
Spirit.Classic:
Fixed remove_reference
usage without a namespace in Phoenix (#274)
Fixed std::complex
usage without the include (#273)
Fixed compilation of match<T
&> (#275)
Fixed compilation with BOOST_DISABLE_THREADS
defined (#323) (#12639)
Increment scanner through iterator policy (#336)
(#7371)
Removed deprecated in C++17 std::iterator
usage (#345)
Stacktrace:
Async safe dumping into files on Windows OS was causing hangs on
some platforms and now is disabled #33. Users are encouraged
to update to the latest Boost release.
ContainerHash library
is now used to reduce dependencies.
Minor fixes (including #31, #38, #39,
#40, #42).
Test:
Boost.test v3.7 see the Changes
log for more details.
Breaking changes
Adding test cases with the same name to the same test suite
is now reported as an error. See the changes log for more
details.
New feature:
Colour output on by default and available on Windows,
Improved and clearer command line help
BOOST_AUTO_TEST_CASE_TEMPLATE
now accepts a sequence of types in an std::tuple
Bug fixes and pull requests:
Trac tickets: #12092, #12596, #12597, #12969,
#13058, #13149, #13170
Trac tickets: #13181, #13371, #13387, #13398,
#13407, #13435, #13443
Pull requests: #112, #118, #118, #121,
#122, #125, #127
TypeIndex:
ContainerHash library
is now used to reduce dependencies.
Minor fixes (including #17)
TypeTraits:
Added new traits detected,
detected_or, is_detected, is_detected_convertible,
is_detected_exact,
is_complete.
Added greatly improved code for detecting binary operators.
Add assertions for completeness to traits which require complete
types as arguments: this prevents various traits from giving eroneous
results from incomplete types.
Fix minor issue with mpl compatibility, see #12212.
Add macro to indicate when is_constructible
is fully implemented, see #12003.
Update is_function
and is_member_function_pointer
to work correctly with C++17 noexcept specifications.
Add workaround for is_default_constructible
and std::pair.
Added fallback for is_nothrow_swappable
on pre-C++11 compilers.
Utility:
Breaking change: <boost/utility.hpp> header no longer includes
boost::next and boost::prior
as they have been moved to the iterator module. Instead include
<boost/next_prior.hpp>. Other uses of <boost/utility.hpp> are discouraged, it's better
to use the header for the specific functionality instead.
Unordered:
Template deduction guides.
Standard conforming noexcept
specifications for swap,
operator=
and node handles.
Add element_type
to iterators, so that std::pointer_traits
will work.
Support std::piecewise_construct on recent
Visual C++ and Dinkumware libraries.
Use std::iterator_traits rather than the
boost iterator traits in order to remove dependency on Boost.Iterator.
Iterators no longer inherit from std::iterator,
as it's deprecated (PR#7).
More detail in the library
change log.
Units:
Fix sqrt for scaled units #10270 #27
Add constexpr support #22
minor documentation fixes
Uuid:
Breaking change: random_generator
is no longer copyable (#61)
Optimized random_generator to use OS-provided entropy directly
(PR#53)
Provide random_generator_mt19937
for bulk UUID generation
Handle entropy acquisition errors instead of ignoring them
Support for Windows UWP (#24)
Support for CloudABI
Variant:
Substitute function arguments on compilers with variadic templates
support and do not generate substitution metafunctions using preprocessor
#42, #46. Many thanks to Nikita Kniazev for providing
an initial fix.
Perfect forwarding for passing visitor in apply_visitor #40,
#13288. Many thanks to Paweł Dac!
Minor fixes (including #41, #44)
Compilers
Tested
Boost's primary test compilers are:
Linux:
Clang: 3.0, 4.0.1, 5.0.1
Clang, C++0x: 3.0
Clang, C++11: 3.0, 3.1, 3.2, 3.3, 3.4, 4.0.1, 5.0.1
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.1
Clang, C++17: 5.0.1
GCC: 4.4.7, 4.5.3, 4.6.3, 5.4.0, 7.2.0
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, 7.2.0
GCC, C++14: 5.4.0, 5.4.1, 6.3.0, 6.4.0, 7.1.0, 7.2.0, 7.3.0
GCC, C++17: 7.2.0
Intel, C++14: 18.0
OS X:
Clang: 9.0.0
Clang, C++11: 9.0.0
Clang, C++14: 9.0.0
Clang, C++1z: 9.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, 7.1.0
Visual C++: 7.1, 8.0, 9.0, 10.0, 11.0, 12.0, 14.0, 14.1
Boost's additional test compilers include:
Linux:
Clang: 3.0, 3.8.1, 4.0.1, 5.0.1
Clang, C++0x: 3.0
Clang, C++11: 3.0, 3.1, 3.2, 3.3, 3.4, 4.0.1, 5.0.1
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.1
Clang, C++17: 5.0.1
GCC: 4.4.7, 4.5.3, 4.6.3, 4.7.2, 4.9.2, 5.4.0, 7.2.0
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, 7.2.0
GCC, C++14: 5.4.0, 5.4.1, 6.3.0, 6.4.0, 7.1.0, 7.2.0, 7.3.0
GCC, C++17: 7.2.0
Intel, C++14: 18.0
OS X:
Clang: 9.0.0
Clang, C++11: 9.0.0
Clang, C++14: 9.0.0
Clang, C++1z: 9.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, 7.1.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
Beman Dawes, Daniel James,
Vladimir Prus and Marshall Clow managed this release.
[Less]
|
Posted
over 6 years
ago
Note about
the new Visual Studio release
Visual Studio 15.5 was released too late for us to test this release with it.
New Libraries
Beast:
Portable HTTP, WebSocket,
... [More]
and network operations using only C++11 and Boost.Asio, from Vinnie Falco.
CallableTraits:
A spiritual
successor to Boost.FunctionTypes, Boost.CallableTraits is a header-only
C++11 library for the compile-time inspection and manipulation of all 'callable'
types. Additional support for C++17 features, from Barrett Adair.
Mp11:
A C++11 metaprogramming library,
from Peter Dimov.
Updated Libraries
Asio:
Implemented interface changes to reflect the Networking TS (N4656).
See the list
of new interfaces and, where applicable, the corresponding
old interfaces that have been superseded.
The service template parameters, and the corresponding classes,
are disabled by default. For example, instead of basic_socket<Protocol,
SocketService>
we now have simply basic_socket<Protocol>. The old interface can
be enabled by defining the BOOST_ASIO_ENABLE_OLD_SERVICES
macro.
Removed previously deprecated functions.
Added support for customised handler tracking.
Added reactor-related (i.e. descriptor readiness) events to handler
tracking.
Added special "concurrency hint" values that may be used
to disable locking on a per io_context
basis.
Enabled perfect forwarding for the first ssl::stream<> constructor argument.
Added ability to release ownership of the underlying native socket.
(Requires Windows 8.1 or later when using the I/O completion port
backend.)
Atomic:
Implemented a set of experimental extended atomic operations for
integral types:
fetch_negate,
fetch_complement
- atomically replaces the value with a negated or binary complemented
value and returns the original value
opaque_<op>
- equivalent to fetch_<op> except that it doesn't
return the original value
<op>_and_test
- atomically applies <op>
and returns true
if the result is zero. Note:
The result of these operations will change to the opposite
in Boost 1.67. The code that uses these functions will need
to be updated.
bit_test_and_set,
bit_test_and_reset,
bit_test_and_complement
- atomically sets, resets or complements the specified bit
and returns the original value of the bit
Following C++17 (P0558R1),
arithmetic operations for pointers to non-object types are no longer
provided.
Also following C++17 exposed atomic<T>::value_type
and atomic<T>::difference_type member typedefs,
where applicable, to the user's code.
Improved compatibility with gcc 7. In particular, using 128-bit operations
on x86-64 should no longer require linking with libatomic (the compiler-supplied
library).
DateTime:
The library has been converted to use Boost.WinAPI as the abstraction
layer for Windows SDK.
Fixed an integral overflow that could cause incorrect results when
adding or subtracting many years from a date (see here).
Fiber:
synchronization with CUDA streams
synchronization with ROCm/HIP streams
Format:
Improvements:
Accept new conversion specifiers:
a: sets flags
fixed | scientific
(i.e. hexfloat)
b: sets flag
boolalpha
A: same as
a plus
flag uppercase
F: same as
f plus
flag uppercase
42
Accept new argument types j
and z from
ISO C99 (parsed and ignored like all others).
44
Accept new argument types I,
I32, I64, and w
from Microsoft (parsed and ignored like all others).
33
Added a development tool called format_matrix
that exercises as many different combinations of format strings
as possible and logs them to a file:
helps prevent regressions in between boost releases
allows for comparison against snprintf
Bugfixes:
36
Safely allow volatile arguments to be used with operator%
4636
Explicit clamping provided to allow MSVC /RTCc to succeed
7477
Fix compatibility with MSVC /Za
10324
Const-correct cast issue resolved
11632
Fix -fsanitize=undefined
issue in alt_sstream.hpp
Fusion:
PR#149
isspace(c)
is not a macro in Dinkum clib for VxWorks, thanks to Brian Kuhl(@kuhlenough).
PR#150
Remove circular preprocessor include, thanks to Gregor Jasny(@gjasny).
PR#151
Change base of fusion::tuple.
PR#153
Fixed compile error with std::array.
PR#154
Fixed bugs nesting and copying on c++03.
Geometry:
Improvements:
Add distance for geographic PointLike/AnyGeometry.
Bugfixes:
Fixes in results of union/intersection/difference which could
be incorrect in very complex cases
Fixes in validity of union/intersection/difference/buffer
Fixes in set and relational operations for non-cartesian coordinate
systems.
Iterator:
next()/prior()
functions now support user's iterators that don't specify nested
types such as iterator_category,
difference_type,
etc. and instead specialize std::iterator_traits
to define those types. The compiler must support C++17-compatible
std::iterator_traits for this to work.
Log:
Bug fixes:
Fixed a bug in file_collector::scan_for_files
that could cause incorrectly named log files in the target
directory after the user's application restart.
See changelog
for more details.
Math:
New Features:
Add Gauss and Gauss-Kronrod quadrature routines.
Add double-exponential (tanh-sinh, exp-sinh and sinh-sinh)
quadrature routines.
Add Chebyshev polynomial evaluation, roots, integration, differentiation,
and interpolation routines.
Multi-index Containers:
Made modify and
modify_key more robust
so that the modified element is erased if the modifier throws or
the rollback functor does not properly restore the element (full
discussion at ticket #12542). This is technically backwards
incompatible; for instance, the following code:
c.modify(c.begin(),[](auto&){throw 0;});
keeps the container c
untouched in former versions of Boost whereas now c.begin() is erased. Thanks to Jon Kalb for
raising the issue.
Maintenance fixes.
Optional:
On newer compilers optional
is now trivially-copyable for scalar Ts.
This uses a different storage (just T
rather than aligned_storage).
We require the compiler to support defaulted functions.
Changed the implementation of operator== to get rid of the -Wmaybe-uninitialized
false-positive warning from GCC.
PolyCollection:
Boost.PolyCollection has been backported to GCC 4.8 to 4.9 and Clang
3.3 to 3.6. The version of libstdc++-v3 shipped with GCC 4.8 (which
can also be used by Clang) has deficiencies that result in the following
limitations when using Boost.PolyCollection:
Stateful allocators are not properly supported.
Allocator-extended move construction decays to allocator-extended
copy construction.
Copy construction crashes if an exception is thrown during
element copying.
Maintenance fixes.
Predef:
Improved Windows Universal Platform detection. (from James E. King,
III)
Add detection for CloudABI with cloudlibc. (from James E. King, III)
Various other bug fixes.
Regex:
Bug fixes:
Numerous small fixes for security issues discovered by de-fuzzing.
Stacktrace:
Now works out-of-the-box on MinGW-w64.
Now works on MinGW (without -w64) if libbacktrace
is properly installed. See "MinGW specific notes" section
in documentation for more info.
Thread:
Bugs Fixes
#12323
windows - boost/thread/win32/mfc_thread_init.hpp has wrong
signature for _pRawDllMainOrig
#12730
windows - static threads library is incompatible with MSVC
2017 RC
#12976
Boost Thread Executors documentation mistakes
#12949
using sleep_for in a thread context without including boost/thread/thread.hpp
yields incorrect behaviour when BOOST_THREAD_HAS_CONDATTR_SET_CLOCK_MONOTONIC
is defined
#13019
ABI compatibility for BOOST_THREAD_PROVIDES_INTERRUPTIONS incomplete
#13069
Boost unit test "sync_pq_multi_thread_p_lib.exe"
hung in thread library
#13163
boost::detail::heap_new does not have a variadic variant
#13226
getpagesize() is deprecated since 199506L
#132
VS 2017.4 Preview deadlocks on Test 10964
#133
windows - Spurious timing test failures on windows
#134
VS 2017.4 Preview deadlock in sync_pq_multi_thread_p_lib.exe
#135
VS 2017.4 Preview test_scheduled_tp_p.exe deadlock
#136
VS 2017.4 Preview test_scheduler_p.exe deadlock
#137
VS 2017.4 Preview executor_ex.exe deadlock
#143
Failures on msvc-12.0
#145
Clang build error with BOOST_THREAD_ATTRIBUTE_MAY_ALIAS
New Experimental Feature
#116
[Proposal] Add APIs for deferred set_value/exception
Utility:
boost/next_prior.hpp has been moved to Boost.Iterator.
No changes needed to the user's code.
Uuid:
Improvements:
26
Refactored name_generator
to support a configurable hash provider concept and provide
an optional MD5 hash implementation per RFC-4122. This will
make it easier to support whatever becomes the next standard
hash algorithm.
34
Added RFC-4122 namespaces in boost::uuids::ns.
Bugfixes:
8630
11482
12253
Various deficiencies in string_generator
were resolved.
10665
name_generator::operator() is now const, matching docs.
Detail headers were moved into the detail subdirectory. No
changes needed to user's code, however you may get build warnings
if you use the old header location.
Variant:
boost::apply_visitor now does perfect
forwarding of visitables #6971. Great thanks to Levon Tarakchyan
for implementing this feature.
Compilers Tested
Boost's primary test compilers are:
Linux:
Clang: 3.0, 4.0.1, 5.0.1
Clang, C++0x: 3.0
Clang, C++11: 3.0, 3.1, 3.2, 3.3, 3.4, 4.0.1, 5.0.1
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.1
Clang, C++17: 5.0.1
GCC: 4.4.7, 4.5.3, 4.6.3, 4.7.2, 5.4.0, 7.2.0
GCC, C++0x: 4.4.7
GCC, C++11: 4.7.2, 4.7.3, 4.8.5, 4.9.4, 6.4.0, 7.1.0, 7.2.0
GCC, C++14: 5.4.1, 6.3.0, 6.4.0, 7.1.0, 7.2.0, 7.2.1
GCC, C++17: 7.2.0
Intel: 18.0
OS X:
Clang: 9.0.0
Clang, C++11: 9.0.0
Clang, C++14: 9.0.0
Clang, C++1z: 9.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
Visual C++: 7.1, 8.0, 9.0, 10.0, 11.0, 12.0, 14.0, 14.1
Android:
Clang: 3.6, 3.7, 3.8
GCC: 4.9, 5.4
GCC, C++14: 6.2
FreeBSD:
Clang: 4.0.0
Clang, C++11: 4.0.0
Clang, C++14: 4.0.0
Clang, C++1z: 4.0.0
QNX:
QCC, C++0x: 4.4.2
QCC, C++11: 4.7.3
Boost's additional test compilers include:
Linux:
Clang: 3.0, 3.8.1, 4.0.1, 5.0.1
Clang, C++0x: 3.0
Clang, C++11: 3.0, 3.1, 3.2, 3.3, 3.4, 4.0.1, 5.0.1
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.1
Clang, C++17: 5.0.1
GCC: 4.4.7, 4.5.3, 4.6.3, 4.7.2, 5.4.0, 7.2.0
GCC, C++0x: 4.4.7
GCC, C++11: 4.7.2, 4.7.3, 4.8.5, 4.9.4, 5.4.0, 6.4.0, 7.1.0, 7.2.0
GCC, C++14: 5.4.1, 6.3.0, 6.4.0, 7.1.0, 7.2.0, 7.2.1, 8.0.0
GCC, C++17: 7.2.0
Intel: 18.0
OS X:
Clang: 9.0.0
Clang, C++11: 9.0.0
Clang, C++14: 9.0.0
Clang, C++1z: 9.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, 7.1.0
Visual C++: 7.1, 8.0, 9.0, 10.0, 11.0, 12.0, 14.0, 14.1
Android:
Clang: 3.6, 3.7, 3.8
GCC: 4.9, 5.4
GCC, C++14: 6.2
FreeBSD:
Clang: 4.0.0
Clang, C++11: 4.0.0
Clang, C++14: 4.0.0
Clang, C++1z: 4.0.0
QNX:
QCC, C++0x: 4.4.2
QCC, C++11: 4.7.3
Acknowledgements
Beman Dawes, Daniel James,
Vladimir Prus and Marshall Clow managed this release.
[Less]
|
Posted
over 6 years
ago
Note about
the new Visual Studio release
Visual Studio 15.5 was released too late for us to test this release with it.
New Libraries
Beast:
Portable HTTP, WebSocket,
... [More]
and network operations using only C++11 and Boost.Asio, from Vinnie Falco.
CallableTraits:
A spiritual
successor to Boost.FunctionTypes, Boost.CallableTraits is a header-only
C++11 library for the compile-time inspection and manipulation of all 'callable'
types. Additional support for C++17 features, from Barrett Adair.
Mp11:
A C++11 metaprogramming library,
from Peter Dimov.
Updated Libraries
Asio:
Implemented interface changes to reflect the Networking TS (N4656).
See the list
of new interfaces and, where applicable, the corresponding
old interfaces that have been superseded.
The service template parameters, and the corresponding classes,
are disabled by default. For example, instead of basic_socket<Protocol,
SocketService>
we now have simply basic_socket<Protocol>. The old interface can
be enabled by defining the BOOST_ASIO_ENABLE_OLD_SERVICES
macro.
Removed previously deprecated functions.
Added support for customised handler tracking.
Added reactor-related (i.e. descriptor readiness) events to handler
tracking.
Added special "concurrency hint" values that may be used
to disable locking on a per io_context
basis.
Enabled perfect forwarding for the first ssl::stream<> constructor argument.
Added ability to release ownership of the underlying native socket.
(Requires Windows 8.1 or later when using the I/O completion port
backend.)
Atomic:
Implemented a set of experimental extended atomic operations for
integral types:
fetch_negate,
fetch_complement
- atomically replaces the value with a negated or binary complemented
value and returns the original value
opaque_<op>
- equivalent to fetch_<op> except that it doesn't
return the original value
<op>_and_test
- atomically applies <op>
and returns true
if the result is zero
bit_test_and_set,
bit_test_and_reset,
bit_test_and_complement
- atomically sets, resets or complements the specified bit
and returns the original value of the bit
Following C++17 (P0558R1),
arithmetic operations for pointers to non-object types are no longer
provided.
Also following C++17 exposed atomic<T>::value_type
and atomic<T>::difference_type member typedefs,
where applicable, to the user's code.
Improved compatibility with gcc 7. In particular, using 128-bit operations
on x86-64 should no longer require linking with libatomic (the compiler-supplied
library).
DateTime:
The library has been converted to use Boost.WinAPI as the abstraction
layer for Windows SDK.
Fixed an integral overflow that could cause incorrect results when
adding or subtracting many years from a date (see here).
Fiber:
synchronization with CUDA streams
synchronization with ROCm/HIP streams
Format:
Improvements:
Accept new conversion specifiers:
a: sets flags
fixed | scientific
(i.e. hexfloat)
b: sets flag
boolalpha
A: same as
a plus
flag uppercase
F: same as
f plus
flag uppercase
42
Accept new argument types j
and z from
ISO C99 (parsed and ignored like all others).
44
Accept new argument types I,
I32, I64, and w
from Microsoft (parsed and ignored like all others).
33
Added a development tool called format_matrix
that exercises as many different combinations of format strings
as possible and logs them to a file:
helps prevent regressions in between boost releases
allows for comparison against snprintf
Bugfixes:
36
Safely allow volatile arguments to be used with operator%
4636
Explicit clamping provided to allow MSVC /RTCc to succeed
7477
Fix compatibility with MSVC /Za
10324
Const-correct cast issue resolved
11632
Fix -fsanitize=undefined
issue in alt_sstream.hpp
Fusion:
PR#149
isspace(c)
is not a macro in Dinkum clib for VxWorks, thanks to Brian Kuhl(@kuhlenough).
PR#150
Remove circular preprocessor include, thanks to Gregor Jasny(@gjasny).
PR#151
Change base of fusion::tuple.
PR#153
Fixed compile error with std::array.
PR#154
Fixed bugs nesting and copying on c++03.
Geometry:
Improvements:
Add distance for geographic PointLike/AnyGeometry.
Bugfixes:
Fixes in results of union/intersection/difference which could
be incorrect in very complex cases
Fixes in validity of union/intersection/difference/buffer
Fixes in set and relational operations for non-cartesian coordinate
systems.
Iterator:
next()/prior()
functions now support user's iterators that don't specify nested
types such as iterator_category,
difference_type,
etc. and instead specialize std::iterator_traits
to define those types. The compiler must support C++17-compatible
std::iterator_traits for this to work.
Log:
Bug fixes:
Fixed a bug in file_collector::scan_for_files
that could cause incorrectly named log files in the target
directory after the user's application restart.
See changelog
for more details.
Math:
New Features:
Add Gauss and Gauss-Kronrod quadrature routines.
Add double-exponential (tanh-sinh, exp-sinh and sinh-sinh)
quadrature routines.
Add Chebyshev polynomial evaluation, roots, integration, differentiation,
and interpolation routines.
Multi-index Containers:
Made modify and
modify_key more robust
so that the modified element is erased if the modifier throws or
the rollback functor does not properly restore the element (full
discussion at ticket #12542). This is technically backwards
incompatible; for instance, the following code:
c.modify(c.begin(),[](auto&){throw 0;});
keeps the container c
untouched in former versions of Boost whereas now c.begin() is erased. Thanks to Jon Kalb for
raising the issue.
Maintenance fixes.
Optional:
On newer compilers optional
is now trivially-copyable for scalar Ts.
This uses a different storage (just T
rather than aligned_storage).
We require the compiler to support defaulted functions.
Changed the implementation of operator== to get rid of the -Wmaybe-uninitialized
false-positive warning from GCC.
PolyCollection:
Boost.PolyCollection has been backported to GCC 4.8 to 4.9 and Clang
3.3 to 3.6. The version of libstdc++-v3 shipped with GCC 4.8 (which
can also be used by Clang) has deficiencies that result in the following
limitations when using Boost.PolyCollection:
Stateful allocators are not properly supported.
Allocator-extended move construction decays to allocator-extended
copy construction.
Copy construction crashes if an exception is thrown during
element copying.
Maintenance fixes.
Predef:
Improved Windows Universal Platform detection. (from James E. King,
III)
Add detection for CloudABI with cloudlibc. (from James E. King, III)
Various other bug fixes.
Regex:
Bug fixes:
Numerous small fixes for security issues discovered by de-fuzzing.
Stacktrace:
Now works out-of-the-box on MinGW-w64.
Now works on MinGW (without -w64) if libbacktrace
is properly installed. See "MinGW specific notes" section
in documentation for more info.
Thread:
Bugs Fixes
#12323
windows - boost/thread/win32/mfc_thread_init.hpp has wrong
signature for _pRawDllMainOrig
#12730
windows - static threads library is incompatible with MSVC
2017 RC
#12976
Boost Thread Executors documentation mistakes
#12949
using sleep_for in a thread context without including boost/thread/thread.hpp
yields incorrect behaviour when BOOST_THREAD_HAS_CONDATTR_SET_CLOCK_MONOTONIC
is defined
#13019
ABI compatibility for BOOST_THREAD_PROVIDES_INTERRUPTIONS incomplete
#13069
Boost unit test "sync_pq_multi_thread_p_lib.exe"
hung in thread library
#13163
boost::detail::heap_new does not have a variadic variant
#13226
getpagesize() is deprecated since 199506L
#132
VS 2017.4 Preview deadlocks on Test 10964
#133
windows - Spurious timing test failures on windows
#134
VS 2017.4 Preview deadlock in sync_pq_multi_thread_p_lib.exe
#135
VS 2017.4 Preview test_scheduled_tp_p.exe deadlock
#136
VS 2017.4 Preview test_scheduler_p.exe deadlock
#137
VS 2017.4 Preview executor_ex.exe deadlock
#143
Failures on msvc-12.0
#145
Clang build error with BOOST_THREAD_ATTRIBUTE_MAY_ALIAS
New Experimental Feature
#116
[Proposal] Add APIs for deferred set_value/exception
Utility:
boost/next_prior.hpp has been moved to Boost.Iterator.
No changes needed to the user's code.
Uuid:
Improvements:
26
Refactored name_generator
to support a configurable hash provider concept and provide
an optional MD5 hash implementation per RFC-4122. This will
make it easier to support whatever becomes the next standard
hash algorithm.
34
Added RFC-4122 namespaces in boost::uuids::ns.
Bugfixes:
8630
11482
12253
Various deficiencies in string_generator
were resolved.
10665
name_generator::operator() is now const, matching docs.
Detail headers were moved into the detail subdirectory. No
changes needed to user's code, however you may get build warnings
if you use the old header location.
Variant:
boost::apply_visitor now does perfect
forwarding of visitables #6971. Great thanks to Levon Tarakchyan
for implementing this feature.
Compilers Tested
Boost's primary test compilers are:
Linux:
Clang: 3.0, 4.0.1, 5.0.1
Clang, C++0x: 3.0
Clang, C++11: 3.0, 3.1, 3.2, 3.3, 3.4, 4.0.1, 5.0.1
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.1
Clang, C++17: 5.0.1
GCC: 4.4.7, 4.5.3, 4.6.3, 4.7.2, 5.4.0, 7.2.0
GCC, C++0x: 4.4.7
GCC, C++11: 4.7.2, 4.7.3, 4.8.5, 4.9.4, 6.4.0, 7.1.0, 7.2.0
GCC, C++14: 5.4.1, 6.3.0, 6.4.0, 7.1.0, 7.2.0, 7.2.1
GCC, C++17: 7.2.0
Intel: 18.0
OS X:
Clang: 9.0.0
Clang, C++11: 9.0.0
Clang, C++14: 9.0.0
Clang, C++1z: 9.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
Visual C++: 7.1, 8.0, 9.0, 10.0, 11.0, 12.0, 14.0, 14.1
Android:
Clang: 3.6, 3.7, 3.8
GCC: 4.9, 5.4
GCC, C++14: 6.2
FreeBSD:
Clang: 4.0.0
Clang, C++11: 4.0.0
Clang, C++14: 4.0.0
Clang, C++1z: 4.0.0
QNX:
QCC, C++0x: 4.4.2
QCC, C++11: 4.7.3
Boost's additional test compilers include:
Linux:
Clang: 3.0, 3.8.1, 4.0.1, 5.0.1
Clang, C++0x: 3.0
Clang, C++11: 3.0, 3.1, 3.2, 3.3, 3.4, 4.0.1, 5.0.1
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.1
Clang, C++17: 5.0.1
GCC: 4.4.7, 4.5.3, 4.6.3, 4.7.2, 5.4.0, 7.2.0
GCC, C++0x: 4.4.7
GCC, C++11: 4.7.2, 4.7.3, 4.8.5, 4.9.4, 5.4.0, 6.4.0, 7.1.0, 7.2.0
GCC, C++14: 5.4.1, 6.3.0, 6.4.0, 7.1.0, 7.2.0, 7.2.1, 8.0.0
GCC, C++17: 7.2.0
Intel: 18.0
OS X:
Clang: 9.0.0
Clang, C++11: 9.0.0
Clang, C++14: 9.0.0
Clang, C++1z: 9.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, 7.1.0
Visual C++: 7.1, 8.0, 9.0, 10.0, 11.0, 12.0, 14.0, 14.1
Android:
Clang: 3.6, 3.7, 3.8
GCC: 4.9, 5.4
GCC, C++14: 6.2
FreeBSD:
Clang: 4.0.0
Clang, C++11: 4.0.0
Clang, C++14: 4.0.0
Clang, C++1z: 4.0.0
QNX:
QCC, C++0x: 4.4.2
QCC, C++11: 4.7.3
Acknowledgements
Beman Dawes, Daniel James,
Vladimir Prus and Marshall Clow managed this release.
[Less]
|
Posted
over 6 years
ago
Note about
the new Visual Studio release
Visual Studio 15.5 was released too late for us to test this release with it.
New Libraries
Beast:
Portable HTTP, WebSocket,
... [More]
and network operations using only C++11 and Boost.Asio, from Vinnie Falco.
CallableTraits:
A spiritual
successor to Boost.FunctionTypes, Boost.CallableTraits is a header-only
C++11 library for the compile-time inspection and manipulation of all 'callable'
types. Additional support for C++17 features, from Barrett Adair.
Mp11:
A C++11 metaprogramming library,
from Peter Dimov.
Updated Libraries
Asio:
Implemented interface changes to reflect the Networking TS (N4656).
See the list
of new interfaces and, where applicable, the corresponding
old interfaces that have been superseded.
The service template parameters, and the corresponding classes,
are disabled by default. For example, instead of basic_socket<Protocol,
SocketService>
we now have simply basic_socket<Protocol>. The old interface can
be enabled by defining the BOOST_ASIO_ENABLE_OLD_SERVICES
macro.
Removed previously deprecated functions.
Added support for customised handler tracking.
Added reactor-related (i.e. descriptor readiness) events to handler
tracking.
Added special "concurrency hint" values that may be used
to disable locking on a per io_context
basis.
Enabled perfect forwarding for the first ssl::stream<> constructor argument.
Added ability to release ownership of the underlying native socket.
(Requires Windows 8.1 or later when using the I/O completion port
backend.)
Atomic:
Implemented a set of experimental extended atomic operations for
integral types:
fetch_negate,
fetch_complement
- atomically replaces the value with a negated or binary complemented
value and returns the original value
opaque_<op>
- equivalent to fetch_<op> except that it doesn't
return the original value
<op>_and_test
- atomically applies <op>
and returns true
if the result is zero. Note:
The result of these operations will change to the opposite
in Boost 1.67. The code that uses these functions will need
to be updated.
bit_test_and_set,
bit_test_and_reset,
bit_test_and_complement
- atomically sets, resets or complements the specified bit
and returns the original value of the bit
Following C++17 (P0558R1),
arithmetic operations for pointers to non-object types are no longer
provided.
Also following C++17 exposed atomic<T>::value_type
and atomic<T>::difference_type member typedefs,
where applicable, to the user's code.
Improved compatibility with gcc 7. In particular, using 128-bit operations
on x86-64 should no longer require linking with libatomic (the compiler-supplied
library).
DateTime:
The library has been converted to use Boost.WinAPI as the abstraction
layer for Windows SDK.
Fixed an integral overflow that could cause incorrect results when
adding or subtracting many years from a date (see here).
Fiber:
synchronization with CUDA streams
synchronization with ROCm/HIP streams
Format:
Improvements:
Accept new conversion specifiers:
a: sets flags
fixed | scientific
(i.e. hexfloat)
b: sets flag
boolalpha
A: same as
a plus
flag uppercase
F: same as
f plus
flag uppercase
42
Accept new argument types j
and z from
ISO C99 (parsed and ignored like all others).
44
Accept new argument types I,
I32, I64, and w
from Microsoft (parsed and ignored like all others).
33
Added a development tool called format_matrix
that exercises as many different combinations of format strings
as possible and logs them to a file:
helps prevent regressions in between boost releases
allows for comparison against snprintf
Bugfixes:
36
Safely allow volatile arguments to be used with operator%
4636
Explicit clamping provided to allow MSVC /RTCc to succeed
7477
Fix compatibility with MSVC /Za
10324
Const-correct cast issue resolved
11632
Fix -fsanitize=undefined
issue in alt_sstream.hpp
Fusion:
PR#149
isspace(c)
is not a macro in Dinkum clib for VxWorks, thanks to Brian Kuhl(@kuhlenough).
PR#150
Remove circular preprocessor include, thanks to Gregor Jasny(@gjasny).
PR#151
Change base of fusion::tuple.
PR#153
Fixed compile error with std::array.
PR#154
Fixed bugs nesting and copying on c++03.
Geometry:
Improvements:
Add distance for geographic PointLike/AnyGeometry.
Bugfixes:
Fixes in results of union/intersection/difference which could
be incorrect in very complex cases
Fixes in validity of union/intersection/difference/buffer
Fixes in set and relational operations for non-cartesian coordinate
systems.
Iterator:
next()/prior()
functions now support user's iterators that don't specify nested
types such as iterator_category,
difference_type,
etc. and instead specialize std::iterator_traits
to define those types. The compiler must support C++17-compatible
std::iterator_traits for this to work.
Log:
Bug fixes:
Fixed a bug in file_collector::scan_for_files
that could cause incorrectly named log files in the target
directory after the user's application restart.
See changelog
for more details.
Math:
New Features:
Add Gauss and Gauss-Kronrod quadrature routines.
Add double-exponential (tanh-sinh, exp-sinh and sinh-sinh)
quadrature routines.
Add Chebyshev polynomial evaluation, roots, integration, differentiation,
and interpolation routines.
Multi-index Containers:
Made modify and
modify_key more robust
so that the modified element is erased if the modifier throws or
the rollback functor does not properly restore the element (full
discussion at ticket #12542). This is technically backwards
incompatible; for instance, the following code:
c.modify(c.begin(),[](auto&){throw 0;});
keeps the container c
untouched in former versions of Boost whereas now c.begin() is erased. Thanks to Jon Kalb for
raising the issue.
Maintenance fixes.
Optional:
On newer compilers optional
is now trivially-copyable for scalar Ts.
This uses a different storage (just T
rather than aligned_storage).
We require the compiler to support defaulted functions.
Changed the implementation of operator== to get rid of the -Wmaybe-uninitialized
false-positive warning from GCC.
PolyCollection:
Boost.PolyCollection has been backported to GCC 4.8 to 4.9 and Clang
3.3 to 3.6. The version of libstdc++-v3 shipped with GCC 4.8 (which
can also be used by Clang) has deficiencies that result in the following
limitations when using Boost.PolyCollection:
Stateful allocators are not properly supported.
Allocator-extended move construction decays to allocator-extended
copy construction.
Copy construction crashes if an exception is thrown during
element copying.
Maintenance fixes.
Predef:
Improved Windows Universal Platform detection. (from James E. King,
III)
Add detection for CloudABI with cloudlibc. (from James E. King, III)
Various other bug fixes.
Regex:
Bug fixes:
Numerous small fixes for security issues discovered by de-fuzzing.
Stacktrace:
Now works out-of-the-box on MinGW-w64.
Now works on MinGW (without -w64) if libbacktrace
is properly installed. See "MinGW specific notes" section
in documentation for more info.
Thread:
Bugs Fixes
#12323
windows - boost/thread/win32/mfc_thread_init.hpp has wrong
signature for _pRawDllMainOrig
#12730
windows - static threads library is incompatible with MSVC
2017 RC
#12976
Boost Thread Executors documentation mistakes
#12949
using sleep_for in a thread context without including boost/thread/thread.hpp
yields incorrect behaviour when BOOST_THREAD_HAS_CONDATTR_SET_CLOCK_MONOTONIC
is defined
#13019
ABI compatibility for BOOST_THREAD_PROVIDES_INTERRUPTIONS incomplete
#13069
Boost unit test "sync_pq_multi_thread_p_lib.exe"
hung in thread library
#13163
boost::detail::heap_new does not have a variadic variant
#13226
getpagesize() is deprecated since 199506L
#132
VS 2017.4 Preview deadlocks on Test 10964
#133
windows - Spurious timing test failures on windows
#134
VS 2017.4 Preview deadlock in sync_pq_multi_thread_p_lib.exe
#135
VS 2017.4 Preview test_scheduled_tp_p.exe deadlock
#136
VS 2017.4 Preview test_scheduler_p.exe deadlock
#137
VS 2017.4 Preview executor_ex.exe deadlock
#143
Failures on msvc-12.0
#145
Clang build error with BOOST_THREAD_ATTRIBUTE_MAY_ALIAS
New Experimental Feature
#116
[Proposal] Add APIs for deferred set_value/exception
Utility:
boost/next_prior.hpp has been moved to Boost.Iterator.
No changes needed to the user's code.
Uuid:
Improvements:
26
Refactored name_generator
to support a configurable hash provider concept and provide
an optional MD5 hash implementation per RFC-4122. This will
make it easier to support whatever becomes the next standard
hash algorithm.
34
Added RFC-4122 namespaces in boost::uuids::ns.
Bugfixes:
8630
11482
12253
Various deficiencies in string_generator
were resolved.
10665
name_generator::operator() is now const, matching docs.
Detail headers were moved into the detail subdirectory. No
changes needed to user's code, however you may get build warnings
if you use the old header location.
Variant:
boost::apply_visitor now does perfect
forwarding of visitables #6971. Great thanks to Levon Tarakchyan
for implementing this feature.
Compilers Tested
Boost's primary test compilers are:
Linux:
Clang: 3.0, 4.0.1, 5.0.1
Clang, C++0x: 3.0
Clang, C++11: 3.0, 3.1, 3.2, 3.3, 3.4, 4.0.1, 5.0.1
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.1
Clang, C++17: 5.0.1
GCC: 4.4.7, 4.5.3, 4.6.3, 4.7.2, 5.4.0, 7.2.0
GCC, C++0x: 4.4.7
GCC, C++11: 4.7.2, 4.7.3, 4.8.5, 4.9.4, 6.4.0, 7.1.0, 7.2.0
GCC, C++14: 5.4.1, 6.3.0, 6.4.0, 7.1.0, 7.2.0, 7.2.1
GCC, C++17: 7.2.0
Intel: 18.0
OS X:
Clang: 9.0.0
Clang, C++11: 9.0.0
Clang, C++14: 9.0.0
Clang, C++1z: 9.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
Visual C++: 7.1, 8.0, 9.0, 10.0, 11.0, 12.0, 14.0, 14.1
Android:
Clang: 3.6, 3.7, 3.8
GCC: 4.9, 5.4
GCC, C++14: 6.2
FreeBSD:
Clang: 4.0.0
Clang, C++11: 4.0.0
Clang, C++14: 4.0.0
Clang, C++1z: 4.0.0
QNX:
QCC, C++0x: 4.4.2
QCC, C++11: 4.7.3
Boost's additional test compilers include:
Linux:
Clang: 3.0, 3.8.1, 4.0.1, 5.0.1
Clang, C++0x: 3.0
Clang, C++11: 3.0, 3.1, 3.2, 3.3, 3.4, 4.0.1, 5.0.1
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.1
Clang, C++17: 5.0.1
GCC: 4.4.7, 4.5.3, 4.6.3, 4.7.2, 5.4.0, 7.2.0
GCC, C++0x: 4.4.7
GCC, C++11: 4.7.2, 4.7.3, 4.8.5, 4.9.4, 5.4.0, 6.4.0, 7.1.0, 7.2.0
GCC, C++14: 5.4.1, 6.3.0, 6.4.0, 7.1.0, 7.2.0, 7.2.1, 8.0.0
GCC, C++17: 7.2.0
Intel: 18.0
OS X:
Clang: 9.0.0
Clang, C++11: 9.0.0
Clang, C++14: 9.0.0
Clang, C++1z: 9.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, 7.1.0
Visual C++: 7.1, 8.0, 9.0, 10.0, 11.0, 12.0, 14.0, 14.1
Android:
Clang: 3.6, 3.7, 3.8
GCC: 4.9, 5.4
GCC, C++14: 6.2
FreeBSD:
Clang: 4.0.0
Clang, C++11: 4.0.0
Clang, C++14: 4.0.0
Clang, C++1z: 4.0.0
QNX:
QCC, C++0x: 4.4.2
QCC, C++11: 4.7.3
Acknowledgements
Beman Dawes, Daniel James,
Vladimir Prus and Marshall Clow managed this release.
[Less]
|
Posted
over 6 years
ago
Note about
the new Visual Studio release
Visual Studio 15.5 was released too late for us to test this release with it.
New Libraries
Beast:
Portable HTTP, WebSocket,
... [More]
and network operations using only C++11 and Boost.Asio, from Vinnie Falco.
CallableTraits:
A spiritual
successor to Boost.FunctionTypes, Boost.CallableTraits is a header-only
C++11 library for the compile-time inspection and manipulation of all 'callable'
types. Additional support for C++17 features, from Barrett Adair.
Mp11:
A C++11 metaprogramming library,
from Peter Dimov.
Updated Libraries
Asio:
Implemented interface changes to reflect the Networking TS (N4656).
See the list
of new interfaces and, where applicable, the corresponding
old interfaces that have been superseded.
The service template parameters, and the corresponding classes,
are disabled by default. For example, instead of basic_socket<Protocol,
SocketService>
we now have simply basic_socket<Protocol>. The old interface can
be enabled by defining the BOOST_ASIO_ENABLE_OLD_SERVICES
macro.
Removed previously deprecated functions.
Added support for customised handler tracking.
Added reactor-related (i.e. descriptor readiness) events to handler
tracking.
Added special "concurrency hint" values that may be used
to disable locking on a per io_context
basis.
Enabled perfect forwarding for the first ssl::stream<> constructor argument.
Added ability to release ownership of the underlying native socket.
(Requires Windows 8.1 or later when using the I/O completion port
backend.)
Atomic:
Implemented a set of experimental extended atomic operations for
integral types:
fetch_negate,
fetch_complement
- atomically replaces the value with a negated or binary complemented
value and returns the original value
opaque_<op>
- equivalent to fetch_<op> except that it doesn't
return the original value
<op>_and_test
- atomically applies <op>
and returns true
if the result is zero. Note:
The result of these operations will change to the opposite
in Boost 1.67. The code that uses these functions will need
to be updated.
bit_test_and_set,
bit_test_and_reset,
bit_test_and_complement
- atomically sets, resets or complements the specified bit
and returns the original value of the bit
Following C++17 (P0558R1),
arithmetic operations for pointers to non-object types are no longer
provided.
Also following C++17 exposed atomic<T>::value_type
and atomic<T>::difference_type member typedefs,
where applicable, to the user's code.
Improved compatibility with gcc 7. In particular, using 128-bit operations
on x86-64 should no longer require linking with libatomic (the compiler-supplied
library).
DateTime:
The library has been converted to use Boost.WinAPI as the abstraction
layer for Windows SDK.
Fixed an integral overflow that could cause incorrect results when
adding or subtracting many years from a date (see here).
Fiber:
synchronization with CUDA streams
synchronization with ROCm/HIP streams
Format:
Improvements:
Accept new conversion specifiers:
a: sets flags
fixed | scientific
(i.e. hexfloat)
b: sets flag
boolalpha
A: same as
a plus
flag uppercase
F: same as
f plus
flag uppercase
42
Accept new argument types j
and z from
ISO C99 (parsed and ignored like all others).
44
Accept new argument types I,
I32, I64, and w
from Microsoft (parsed and ignored like all others).
33
Added a development tool called format_matrix
that exercises as many different combinations of format strings
as possible and logs them to a file:
helps prevent regressions in between boost releases
allows for comparison against snprintf
Bugfixes:
36
Safely allow volatile arguments to be used with operator%
4636
Explicit clamping provided to allow MSVC /RTCc to succeed
7477
Fix compatibility with MSVC /Za
10324
Const-correct cast issue resolved
11632
Fix -fsanitize=undefined
issue in alt_sstream.hpp
Fusion:
PR#149
isspace(c)
is not a macro in Dinkum clib for VxWorks, thanks to Brian Kuhl(@kuhlenough).
PR#150
Remove circular preprocessor include, thanks to Gregor Jasny(@gjasny).
PR#151
Change base of fusion::tuple.
PR#153
Fixed compile error with std::array.
PR#154
Fixed bugs nesting and copying on c++03.
Geometry:
Improvements:
Add distance for geographic PointLike/AnyGeometry.
Bugfixes:
Fixes in results of union/intersection/difference which could
be incorrect in very complex cases
Fixes in validity of union/intersection/difference/buffer
Fixes in set and relational operations for non-cartesian coordinate
systems.
Iterator:
next()/prior()
functions now support user's iterators that don't specify nested
types such as iterator_category,
difference_type,
etc. and instead specialize std::iterator_traits
to define those types. The compiler must support C++17-compatible
std::iterator_traits for this to work.
Log:
Bug fixes:
Fixed a bug in file_collector::scan_for_files
that could cause incorrectly named log files in the target
directory after the user's application restart.
See changelog
for more details.
Math:
New Features:
Add Gauss and Gauss-Kronrod quadrature routines.
Add double-exponential (tanh-sinh, exp-sinh and sinh-sinh)
quadrature routines.
Add Chebyshev polynomial evaluation, roots, integration, differentiation,
and interpolation routines.
Multi-index Containers:
Made modify and
modify_key more robust
so that the modified element is erased if the modifier throws or
the rollback functor does not properly restore the element (full
discussion at ticket #12542). This is technically backwards
incompatible; for instance, the following code:
c.modify(c.begin(),[](auto&){throw 0;});
keeps the container c
untouched in former versions of Boost whereas now c.begin() is erased. Thanks to Jon Kalb for
raising the issue.
Maintenance fixes.
Optional:
On newer compilers optional
is now trivially-copyable for scalar Ts.
This uses a different storage (just T
rather than aligned_storage).
We require the compiler to support defaulted functions.
Changed the implementation of operator== to get rid of the -Wmaybe-uninitialized
false-positive warning from GCC.
PolyCollection:
Boost.PolyCollection has been backported to GCC 4.8 to 4.9 and Clang
3.3 to 3.6. The version of libstdc++-v3 shipped with GCC 4.8 (which
can also be used by Clang) has deficiencies that result in the following
limitations when using Boost.PolyCollection:
Stateful allocators are not properly supported.
Allocator-extended move construction decays to allocator-extended
copy construction.
Copy construction crashes if an exception is thrown during
element copying.
Maintenance fixes.
Predef:
Improved Windows Universal Platform detection. (from James E. King,
III)
Add detection for CloudABI with cloudlibc. (from James E. King, III)
Various other bug fixes.
Regex:
Bug fixes:
Numerous small fixes for security issues discovered by de-fuzzing.
Stacktrace:
Now works out-of-the-box on MinGW-w64.
Now works on MinGW (without -w64) if libbacktrace
is properly installed. See "MinGW specific notes" section
in documentation for more info.
Thread:
Bugs Fixes
#12323
windows - boost/thread/win32/mfc_thread_init.hpp has wrong
signature for _pRawDllMainOrig
#12730
windows - static threads library is incompatible with MSVC
2017 RC
#12976
Boost Thread Executors documentation mistakes
#12949
using sleep_for in a thread context without including boost/thread/thread.hpp
yields incorrect behaviour when BOOST_THREAD_HAS_CONDATTR_SET_CLOCK_MONOTONIC
is defined
#13019
ABI compatibility for BOOST_THREAD_PROVIDES_INTERRUPTIONS incomplete
#13069
Boost unit test "sync_pq_multi_thread_p_lib.exe"
hung in thread library
#13163
boost::detail::heap_new does not have a variadic variant
#13226
getpagesize() is deprecated since 199506L
#132
VS 2017.4 Preview deadlocks on Test 10964
#133
windows - Spurious timing test failures on windows
#134
VS 2017.4 Preview deadlock in sync_pq_multi_thread_p_lib.exe
#135
VS 2017.4 Preview test_scheduled_tp_p.exe deadlock
#136
VS 2017.4 Preview test_scheduler_p.exe deadlock
#137
VS 2017.4 Preview executor_ex.exe deadlock
#143
Failures on msvc-12.0
#145
Clang build error with BOOST_THREAD_ATTRIBUTE_MAY_ALIAS
New Experimental Feature
#116
[Proposal] Add APIs for deferred set_value/exception
Utility:
boost/next_prior.hpp has been moved to Boost.Iterator.
No changes needed to the user's code.
Uuid:
Improvements:
26
Refactored name_generator
to support a configurable hash provider concept and provide
an optional MD5 hash implementation per RFC-4122. This will
make it easier to support whatever becomes the next standard
hash algorithm.
34
Added RFC-4122 namespaces in boost::uuids::ns.
Bugfixes:
8630
11482
12253
Various deficiencies in string_generator
were resolved.
10665
name_generator::operator() is now const, matching docs.
Detail headers were moved into the detail subdirectory. No
changes needed to user's code, however you may get build warnings
if you use the old header location.
Variant:
boost::apply_visitor now does perfect
forwarding of visitables #6971. Great thanks to Levon Tarakchyan
for implementing this feature.
Compilers Tested
Boost's primary test compilers are:
Linux:
Clang: 3.0, 4.0.1, 5.0.1
Clang, C++0x: 3.0
Clang, C++11: 3.0, 3.1, 3.2, 3.3, 3.4, 4.0.1, 5.0.1
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.1
Clang, C++17: 5.0.1
GCC: 4.4.7, 4.5.3, 4.6.3, 4.7.2, 5.4.0, 7.2.0
GCC, C++0x: 4.4.7
GCC, C++11: 4.7.2, 4.7.3, 4.8.5, 4.9.4, 6.4.0, 7.1.0, 7.2.0
GCC, C++14: 5.4.1, 6.3.0, 6.4.0, 7.1.0, 7.2.0, 7.2.1
GCC, C++17: 7.2.0
Intel: 18.0
OS X:
Clang: 9.0.0
Clang, C++11: 9.0.0
Clang, C++14: 9.0.0
Clang, C++1z: 9.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
Visual C++: 7.1, 8.0, 9.0, 10.0, 11.0, 12.0, 14.0, 14.1
Android:
Clang: 3.6, 3.7, 3.8
GCC: 4.9, 5.4
GCC, C++14: 6.2
FreeBSD:
Clang: 4.0.0
Clang, C++11: 4.0.0
Clang, C++14: 4.0.0
Clang, C++1z: 4.0.0
QNX:
QCC, C++0x: 4.4.2
QCC, C++11: 4.7.3
Boost's additional test compilers include:
Linux:
Clang: 3.0, 3.8.1, 4.0.1, 5.0.1
Clang, C++0x: 3.0
Clang, C++11: 3.0, 3.1, 3.2, 3.3, 3.4, 4.0.1, 5.0.1
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.1
Clang, C++17: 5.0.1
GCC: 4.4.7, 4.5.3, 4.6.3, 4.7.2, 5.4.0, 7.2.0
GCC, C++0x: 4.4.7
GCC, C++11: 4.7.2, 4.7.3, 4.8.5, 4.9.4, 5.4.0, 6.4.0, 7.1.0, 7.2.0
GCC, C++14: 5.4.1, 6.3.0, 6.4.0, 7.1.0, 7.2.0, 7.2.1, 8.0.0
GCC, C++17: 7.2.0
Intel: 18.0
OS X:
Clang: 9.0.0
Clang, C++11: 9.0.0
Clang, C++14: 9.0.0
Clang, C++1z: 9.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, 7.1.0
Visual C++: 7.1, 8.0, 9.0, 10.0, 11.0, 12.0, 14.0, 14.1
Android:
Clang: 3.6, 3.7, 3.8
GCC: 4.9, 5.4
GCC, C++14: 6.2
FreeBSD:
Clang: 4.0.0
Clang, C++11: 4.0.0
Clang, C++14: 4.0.0
Clang, C++1z: 4.0.0
QNX:
QCC, C++0x: 4.4.2
QCC, C++11: 4.7.3
Acknowledgements
Beman Dawes, Daniel James,
Vladimir Prus and Marshall Clow managed this release.
[Less]
|
Posted
over 6 years
ago
Note about
the new Visual Studio release
Visual Studio 15.5 was released too late for us to test this release with it.
New Libraries
Beast:
Portable HTTP, WebSocket,
... [More]
and network operations using only C++11 and Boost.Asio, from Vinnie Falco.
CallableTraits:
A spiritual
successor to Boost.FunctionTypes, Boost.CallableTraits is a header-only
C++11 library for the compile-time inspection and manipulation of all 'callable'
types. Additional support for C++17 features, from Barrett Adair.
Mp11:
A C++11 metaprogramming library,
from Peter Dimov.
Updated Libraries
Asio:
Implemented interface changes to reflect the Networking TS (N4656).
See the list
of new interfaces and, where applicable, the corresponding
old interfaces that have been superseded.
The service template parameters, and the corresponding classes,
are disabled by default. For example, instead of basic_socket<Protocol,
SocketService>
we now have simply basic_socket<Protocol>. The old interface can
be enabled by defining the BOOST_ASIO_ENABLE_OLD_SERVICES
macro.
Removed previously deprecated functions.
Added support for customised handler tracking.
Added reactor-related (i.e. descriptor readiness) events to handler
tracking.
Added special "concurrency hint" values that may be used
to disable locking on a per io_context
basis.
Enabled perfect forwarding for the first ssl::stream<> constructor argument.
Added ability to release ownership of the underlying native socket.
(Requires Windows 8.1 or later when using the I/O completion port
backend.)
Atomic:
Implemented a set of experimental extended atomic operations for
integral types:
fetch_negate,
fetch_complement
- atomically replaces the value with a negated or binary complemented
value and returns the original value
opaque_<op>
- equivalent to fetch_<op> except that it doesn't
return the original value
<op>_and_test
- atomically applies <op>
and returns true
if the result is zero
bit_test_and_set,
bit_test_and_reset,
bit_test_and_complement
- atomically sets, resets or complements the specified bit
and returns the original value of the bit
Following C++17 (P0558R1),
arithmetic operations for pointers to non-object types are no longer
provided.
Also following C++17 exposed atomic<T>::value_type
and atomic<T>::difference_type member typedefs,
where applicable, to the user's code.
Improved compatibility with gcc 7. In particular, using 128-bit operations
on x86-64 should no longer require linking with libatomic (the compiler-supplied
library).
DateTime:
The library has been converted to use Boost.WinAPI as the abstraction
layer for Windows SDK.
Fixed an integral overflow that could cause incorrect results when
adding or subtracting many years from a date (see here).
Fiber:
synchronization with CUDA streams
synchronization with ROCm/HIP streams
Format:
Improvements:
Accept new conversion specifiers:
a: sets flags
fixed | scientific
(i.e. hexfloat)
b: sets flag
boolalpha
A: same as
a plus
flag uppercase
F: same as
f plus
flag uppercase
42
Accept new argument types j
and z from
ISO C99 (parsed and ignored like all others).
44
Accept new argument types I,
I32, I64, and w
from Microsoft (parsed and ignored like all others).
33
Added a development tool called format_matrix
that exercises as many different combinations of format strings
as possible and logs them to a file:
helps prevent regressions in between boost releases
allows for comparison against snprintf
Bugfixes:
36
Safely allow volatile arguments to be used with operator%
4636
Explicit clamping provided to allow MSVC /RTCc to succeed
7477
Fix compatibility with MSVC /Za
10324
Const-correct cast issue resolved
11632
Fix -fsanitize=undefined
issue in alt_sstream.hpp
Fusion:
PR#149
isspace(c)
is not a macro in Dinkum clib for VxWorks, thanks to Brian Kuhl(@kuhlenough).
PR#150
Remove circular preprocessor include, thanks to Gregor Jasny(@gjasny).
PR#151
Change base of fusion::tuple.
PR#153
Fixed compile error with std::array.
PR#154
Fixed bugs nesting and copying on c++03.
Geometry:
Improvements:
Add distance for geographic PointLike/AnyGeometry.
Bugfixes:
Fixes in results of union/intersection/difference which could
be incorrect in very complex cases
Fixes in validity of union/intersection/difference/buffer
Fixes in set and relational operations for non-cartesian coordinate
systems.
Iterator:
next()/prior()
functions now support user's iterators that don't specify nested
types such as iterator_category,
difference_type,
etc. and instead specialize std::iterator_traits
to define those types. The compiler must support C++17-compatible
std::iterator_traits for this to work.
Log:
Bug fixes:
Fixed a bug in file_collector::scan_for_files
that could cause incorrectly named log files in the target
directory after the user's application restart.
See changelog
for more details.
Math:
New Features:
Add Gauss and Gauss-Kronrod quadrature routines.
Add double-exponential (tanh-sinh, exp-sinh and sinh-sinh)
quadrature routines.
Add Chebyshev polynomial evaluation, roots, integration, differentiation,
and interpolation routines.
Multi-index Containers:
Made modify and
modify_key more robust
so that the modified element is erased if the modifier throws or
the rollback functor does not properly restore the element (full
discussion at ticket #12542). This is technically backwards
incompatible; for instance, the following code:
c.modify(c.begin(),[](auto&){throw 0;});
keeps the container c
untouched in former versions of Boost whereas now c.begin() is erased. Thanks to Jon Kalb for
raising the issue.
Maintenance fixes.
Optional:
On newer compilers optional
is now trivially-copyable for scalar Ts.
This uses a different storage (just T
rather than aligned_storage).
We require the compiler to support defaulted functions.
Changed the implementation of operator== to get rid of the -Wmaybe-uninitialized
false-positive warning from GCC.
PolyCollection:
Boost.PolyCollection has been backported to GCC 4.8 to 4.9 and Clang
3.3 to 3.6. The version of libstdc++-v3 shipped with GCC 4.8 (which
can also be used by Clang) has deficiencies that result in the following
limitations when using Boost.PolyCollection:
Stateful allocators are not properly supported.
Allocator-extended move construction decays to allocator-extended
copy construction.
Copy construction crashes if an exception is thrown during
element copying.
Maintenance fixes.
Predef:
Improved Windows Universal Platform detection. (from James E. King,
III)
Add detection for CloudABI with cloudlibc. (from James E. King, III)
Various other bug fixes.
Regex:
Bug fixes:
Numerous small fixes for security issues discovered by de-fuzzing.
Stacktrace:
Now works out-of-the-box on MinGW-w64.
Now works on MinGW (without -w64) if libbacktrace
is properly installed. See "MinGW specific notes" section
in documentation for more info.
Thread:
Bugs Fixes
#12323
windows - boost/thread/win32/mfc_thread_init.hpp has wrong
signature for _pRawDllMainOrig
#12730
windows - static threads library is incompatible with MSVC
2017 RC
#12976
Boost Thread Executors documentation mistakes
#12949
using sleep_for in a thread context without including boost/thread/thread.hpp
yields incorrect behaviour when BOOST_THREAD_HAS_CONDATTR_SET_CLOCK_MONOTONIC
is defined
#13019
ABI compatibility for BOOST_THREAD_PROVIDES_INTERRUPTIONS incomplete
#13069
Boost unit test "sync_pq_multi_thread_p_lib.exe"
hung in thread library
#13163
boost::detail::heap_new does not have a variadic variant
#13226
getpagesize() is deprecated since 199506L
#132
VS 2017.4 Preview deadlocks on Test 10964
#133
windows - Spurious timing test failures on windows
#134
VS 2017.4 Preview deadlock in sync_pq_multi_thread_p_lib.exe
#135
VS 2017.4 Preview test_scheduled_tp_p.exe deadlock
#136
VS 2017.4 Preview test_scheduler_p.exe deadlock
#137
VS 2017.4 Preview executor_ex.exe deadlock
#143
Failures on msvc-12.0
#145
Clang build error with BOOST_THREAD_ATTRIBUTE_MAY_ALIAS
New Experimental Feature
#116
[Proposal] Add APIs for deferred set_value/exception
Utility:
boost/next_prior.hpp has been moved to Boost.Iterator.
No changes needed to the user's code.
Uuid:
Improvements:
26
Refactored name_generator
to support a configurable hash provider concept and provide
an optional MD5 hash implementation per RFC-4122. This will
make it easier to support whatever becomes the next standard
hash algorithm.
34
Added RFC-4122 namespaces in boost::uuids::ns.
Bugfixes:
8630
11482
12253
Various deficiencies in string_generator
were resolved.
10665
name_generator::operator() is now const, matching docs.
Detail headers were moved into the detail subdirectory. No
changes needed to user's code, however you may get build warnings
if you use the old header location.
Variant:
boost::apply_visitor now does perfect
forwarding of visitables #6971. Great thanks to Levon Tarakchyan
for implementing this feature.
Compilers Tested
Boost's primary test compilers are:
Linux:
Clang: 3.0, 4.0.1, 5.0.1
Clang, C++0x: 3.0
Clang, C++11: 3.0, 3.1, 3.2, 3.3, 3.4, 4.0.1, 5.0.1
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.1
Clang, C++17: 5.0.1
GCC: 4.4.7, 4.5.3, 4.6.3, 4.7.2, 5.4.0, 7.2.0
GCC, C++0x: 4.4.7
GCC, C++11: 4.7.2, 4.7.3, 4.8.5, 4.9.4, 6.4.0, 7.1.0, 7.2.0
GCC, C++14: 5.4.1, 6.3.0, 6.4.0, 7.1.0, 7.2.0, 7.2.1
GCC, C++17: 7.2.0
Intel: 18.0
OS X:
Clang: 9.0.0
Clang, C++11: 9.0.0
Clang, C++14: 9.0.0
Clang, C++1z: 9.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
Visual C++: 7.1, 8.0, 9.0, 10.0, 11.0, 12.0, 14.0, 14.1
Android:
Clang: 3.6, 3.7, 3.8
GCC: 4.9, 5.4
GCC, C++14: 6.2
FreeBSD:
Clang: 4.0.0
Clang, C++11: 4.0.0
Clang, C++14: 4.0.0
Clang, C++1z: 4.0.0
QNX:
QCC, C++0x: 4.4.2
QCC, C++11: 4.7.3
Boost's additional test compilers include:
Linux:
Clang: 3.0, 3.8.1, 4.0.1, 5.0.1
Clang, C++0x: 3.0
Clang, C++11: 3.0, 3.1, 3.2, 3.3, 3.4, 4.0.1, 5.0.1
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.1
Clang, C++17: 5.0.1
GCC: 4.4.7, 4.5.3, 4.6.3, 4.7.2, 5.4.0, 7.2.0
GCC, C++0x: 4.4.7
GCC, C++11: 4.7.2, 4.7.3, 4.8.5, 4.9.4, 5.4.0, 6.4.0, 7.1.0, 7.2.0
GCC, C++14: 5.4.1, 6.3.0, 6.4.0, 7.1.0, 7.2.0, 7.2.1, 8.0.0
GCC, C++17: 7.2.0
Intel: 18.0
OS X:
Clang: 9.0.0
Clang, C++11: 9.0.0
Clang, C++14: 9.0.0
Clang, C++1z: 9.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, 7.1.0
Visual C++: 7.1, 8.0, 9.0, 10.0, 11.0, 12.0, 14.0, 14.1
Android:
Clang: 3.6, 3.7, 3.8
GCC: 4.9, 5.4
GCC, C++14: 6.2
FreeBSD:
Clang: 4.0.0
Clang, C++11: 4.0.0
Clang, C++14: 4.0.0
Clang, C++1z: 4.0.0
QNX:
QCC, C++0x: 4.4.2
QCC, C++11: 4.7.3
Acknowledgements
Beman Dawes, Daniel James,
Vladimir Prus and Marshall Clow managed this release.
[Less]
|
Posted
over 6 years
ago
Fixes in 1.65.1
Config:
Version macro changes for CUDA.
Update last known MSVC
... [More]
version.
MSVC 14.11 supports structured bindings.
Context:
Return a continuation from functions executed by resume_with.
Fiber:
Return a continuation from functions executed by resume_with.
Smart Pointers:
Fix Visual C++ version checks.
Fix compilation for NVCC with host compiler clang.
Stacktrace:
Update build testing file to detail with a MinGW issue.
Change preprocessor file extensions to work with the installation
system.
Support FreeBSD and other OSs that do not define _GNU_SOURCE
but have _Unwind_Backtrace
function.
Thread:
Fix bug in boost::condition_variable
on Windows (#130).
Compilers Tested
Boost's primary test compilers are:
Linux:
Clang: 3.0, 4.0.1, 5.0.0
Clang, C++11: 3.0, 3.1, 3.2, 3.3, 3.4, 4.0.1, 5.0.0
Clang, C++14: 3.5.0, 3.6.0, 3.7.1, 3.8.0, 3.9.1, 4.0.0, 5.0.0
Clang, C++17: 5.0.0
Clang, C++1z: 4.0.0
GCC: 4.4.7, 4.5.3, 4.6.3, 4.7.2, 5.4.0, 7.1.0
GCC, C++11: 4.4.7, 4.7.2, 4.7.3, 4.8.5, 4.9.4, 5.4.0, 6.4.0, 7.1.0
GCC, C++14: 5.4.0, 5.4.1, 6.3.0, 6.4.0, 7.1.0, 7.2.0
GCC, C++17: 7.1.0
GCC, C++1z: 6.3.0
Intel: 17.0
OS X:
Clang: 8.1.0
Clang, C++11: 8.1.0
Clang, C++14: 8.1.0
Clang, C++1z: 8.1.0
Windows:
GCC: 3.4.5, 4.1.2, 4.2.4, 4.3.3, 4.4.0, 4.5.4
GCC, C++11: 4.6.4, 4.7.3, 4.8.1
GCC, C++14: 4.9.3, 5.1.0, 5.2.0, 5.3.0, 6.1.0, 6.2.0, 6.3.0, 6.4.0,
7.1.0
Visual C++: 7.1, 8.0, 9.0, 10.0, 11.0, 12.0, 14.0, 14.1
Android:
Clang: 3.6, 3.7, 3.8
GCC: 4.9, 5.4
GCC, C++14: 6.2
FreeBSD:
Clang: 3.8.0
Clang, C++11: 3.8.0
Clang, C++14: 3.8.0
Clang, C++1z: 3.8.0
QNX:
QCC, C++11: 4.4.2
SunOS:
Oracle Solaris Studio: 12.5_next, 12.5
Oracle Solaris Studio, C++11: , 12.5_next, 12.5
Acknowledgements
Beman Dawes, Daniel James,
Vladimir Prus and Marshall Clow managed this release.
New Libraries in
1.65.0
PolyCollection:
Fast
containers of polymorphic objects, from Joaquín M López Muñoz.
Stacktrace:
Gather, store,
copy and print backtraces, from Antony Polukhin.
Note: Library has issue
with MinGW and may produce empty backtraces with that compiler.
Removed Libraries
in 1.65.0
TR1
Updated Libraries
in 1.65.0
Asio:
Changed to require g++ versions >= 4.7 to use
standard atomics, to fix a linker error when using g++
4.6 (#13121).
Enabled use of constexpr
and variadic templates with recent MSVC versions.
Fixed a race condition in the Linux epoll backend, which may occur
when a socket or descriptor is closed while another thread is blocked
on epoll.
Eliminated use of deprecated auto_ptr.
Fixed misplaced use of asio_handler_is_continuation
result in reactive async_accept
implementation.
Changed to use poll.h
rather than sys/poll.h on some modern POSIX platforms
(#12419).
Fixed MSVC intellisense detection.
Disabled use of the __thread
keyword extension for android/clang/x86 targets.
Context:
Improvements:
call/cc supports ucontext-API (swapcontext)
call/cc supports Windows-Fiber-API
call/cc supports on demand growing (segmented/split) stacks
Bugfixes:
#12719: context test cases and examples segmentation fault
when built with mingw-w64 toolchain
#52: Failing to build callcc test with g++-4.9
important:
required bug fix 420554fe9ac01482990e8ae314f4f7ba81010c9a
not included in 1.65
Config:
Added BOOST_NO_CXX11_POINTER_TRAITS,
BOOST_NO_CXX17_FOLD_EXPRESSIONS,
BOOST_NO_CXX17_INLINE_VARIABLES,
BOOST_NO_CXX17_STRUCTURED_BINDINGS
defect detection.
BOOST_FALLTHROUGH support for GCC 7 and above. (Glen Fernandes)
Core:
Implemented pointer_traits
for C++03 and higher, that implements P0653r0
(Glen Fernandes). This implementation is now used by Align, Circular
Buffer, Fiber, Geometry, among other libraries.
Added BOOST_TEST_GT
and BOOST_TEST_GE
to Lightweight Test.
Coroutine2:
supports ucontext-API (swapcontext)
supports Windows-Fiber-API
#13064: different behavior coroutine and coroutine2
DLL:
Fix PE parsing on non Windows platforms.
Fiber:
Improvements:
hardware transactional memory (Intel TSX) supported
NUMA supported
ucontext-API (swapcontext) supported
Windows-Fiber-API supported
on demand growing stacks
Bugfixes:
#121: failing to build static lib with GCC 4.8 and C++11
#123: assertion failure in schedule_from_remote
#125: erratic crashes in testsuite
#126: incorrect std::memory_order value in compare_exchange_strong?
important:
required bug fix 63f1041f0e484e64dec437a0fa780ea2463abda2
not included in 1.65
Fusion:
MSVC 14.1 supports variadic containers, such as fusion::vector,
fusion::deque, fusion::map,
fusion::set, and fusion::tuple.
(#12986)
Geometry:
Improvements:
Add correct() overload taking area strategy
Add is_convex() overload taking side strategy
Add missing relational operations (covered_by, crosses, equals,
etc.) for MultiPoint/AnyGeometry
Solved issues:
12410
Lack of support of geographic coordinate system in correct()
13035
Wrong result of non-cartesian intersection strategies for segments
near poles.
13057
Wrong result of intersects() for linestrings caused by numerical
issue in disjoint() for boxes.
Bugfixes:
Fix is_valid which could return false for multipolygons where
an interior ring touches another interior ring
Fix is_valid which could return false for multipolygons where
a polygon was located in an interior ring, all touching each
other
Fix union which could produce invalid results (for some cases,
this needs to define BOOST_GEOMETRY_INCLUDE_SELF_TURNS)
Fix intersection (idem), but some cases are still not yet valid
Fix difference (idem), but some cases are still not yet valid
Fix propagation of area strategy into the internals of various
algorithms from intersection strategy
Fix uninitialized variable in relate and reference to temporary
in overlay
Fix error in disjoint for geographic Segment/Box
Fix handling of non-cartesian geometries in various algorithms
Hash:
Support for char16_t,
char32_t, u16string, u32string.
Log:
General changes:
Improved compatibility with Solaris.
See changelog
for more details.
Phoenix:
Corrected some documentation. (PR#50)
phoenix::erase with associative container
returns iterator in C++11 mode. (#7423)
std::set and std::multiset
should be worked with predefined lazy functions. (PR#52)
Disable phoenix::random_shuffle in C++17. (PR#53)
Don't forward declare, include instead. (#11875)
Predef:
Fix Intel C/C++ version 9999 detection to be 12.1.0.
Addition of BOOST_PREDEF_WORKAROUND
and BOOST_PREDEF_TESTED_AT
macros for defect workarounds and detection.
Add ARM64 MSVC SIMD detection. (from Minmin Gong)
Add detection of iOS simulator vs device as a platform choice. (from
Ruslan Baratov)
Fix MinGW incorrect header guard. (from Ruslan Baratov)
Program Options:
Support for storing values into boost::optional,
thanks to Ed Catmur (#7495,
PR#18)
Parsing of implicit options can now use the value from the next token.
Since 1.59, unless the value of implicit option was specified in
the same token as the option itself, the implicit value was used.
That proved inconvenient, and now we again check the next token and
use it as value if it's not an option itself. (#25)
Python:
eval(),
exec(),
and exec_statement() now allow char
const *
arguments, in addition to boost::python::str.
The boost::python::numeric API has been removed, as
it is being obsoleted by boost::python::numpy.
Fix some build issues when using Python3 with MSVC.
Smart Pointers:
New class templateatomic_shared_ptr,
that provides thread-safe atomic pointer operations over shared_ptr. (Peter Dimov)
New class template local_shared_ptr,
where the reference count is updated with non-atomic operations.
(Peter Dimov)
More optimizations in allocate_shared
and make_shared for
arrays. (Glen Fernandes)
Documentation has been completely rewritten in Asciidoc format.
Test:
Boost.test v3.6 see the Change
log section for more details.
New feature:
C++17 compatibility (tested on VS2017), thanks to Daniela
Engert
Direct comparison of C-arrays in BOOST_TEST
Better global fixtures mechanism, and spitting of responsibilities
with BOOST_TEST_GLOBAL_FIXTURE
for global fixtures and BOOST_TEST_GLOBAL_CONFIGURATION
for global initialization (compile time configuration).
Improved support for fixtures (setup
/ teardown
member function) which enables better teardown time checks
Breaking changes
Some API changes for the loggers
Deprecating BOOST_GLOBAL_FIXTURE
in favor of BOOST_TEST_GLOBAL_FIXTURE
and BOOST_TEST_GLOBAL_CONFIGURATION
(see above)
Bug fixes
Trac tickets #5282, #5563, #11471, #11962,
#12228
Trac tickets #12631, #13011
Pull request PR106
Thread:
Important Regression on Windows:
#130
windows: Bug in boost::condition_variable on Windows Please,
merge these two patches
https://github.com/boostorg/thread/commit/fdc0cbcd8ce8f34a19c7cdaf6f1fa679f0a49657
https://github.com/boostorg/thread/commit/395e3d786bc1dce9c60eb84da85f5845a2c1fb3d
Bug fixes
#6787
boost::thread::sleep() hangs if system time is rolled back
#12519
boost::thread::try_join_for does not return after timeout
#12874
future<> extension constructor must be under BOOST_THREAD_PROVIDES_FUTURE_UNWRAP
#12888
Linking with boost thread does not work on mingw/gcc 4.4
#12958
sync_bounded_queue::wait_pull_front( lve ) might throw
#13077
Linking to static 64bit libboost_thread fails DLL initialization
#13155
log doesn't build on a system with pthreads
#121
on_tls_prepare is broken under VS2017
TypeIndex:
Include if required, thanks to
Ed Catmur #13009.
Use native hash_code() when possible on GCC-like compilers
#13027.
Fix ctti_type_index
for GCC 7 and later, thanks to Benjamin Buch PR16.
Typeof:
Fix compilation error with clang-cl ticket
11821.
Unordered:
Use the same data structure for unordered_set
and unordered_multiset,
and forunordered_map
and unordered_multimap.
This is required for C++17, so that nodes can be merged and extracted
between compatible containers.
Add deprecated attributes to long deprecated functions.
Improved use of allocator_traits
construct and destroy on C++11 compilers, using
piecewise pair construction when appropriate.
Fewer workarounds on newer Oracle compilers.
Avoid dereferencing pointers to uninitialized memory (PR
#5).
Utility:
Improved compatibility of boost::next/boost::prior with SFINAE-unfriendly iterators.
#10847, #13002.
Variant:
r-value overload for boost::get
was added by Albert Sverdlov #13018.
Missing include fro <boost/variant/polymorphic_get.hpp>
header was added by Adam Badura #13037.
boost::make_variant_over was fixed and
now works with views and other Forward Sequences (thanks to Mikhail
Maksimov for the fix) #8554, #10041, PR#35.
[Less]
|
Posted
over 6 years
ago
Fixes in 1.65.1
Config:
Version macro changes for CUDA.
Update last known MSVC
... [More]
version.
MSVC 14.11 supports structured bindings.
Context:
Return a continuation from functions executed by resume_with.
Fiber:
Return a continuation from functions executed by resume_with.
Smart Pointers:
Fix Visual C++ version checks.
Fix compilation for NVCC with host compiler clang.
Stacktrace:
Update build testing file to detail with a MinGW issue.
Change preprocessor file extensions to work with the installation
system.
Support FreeBSD and other OSs that do not define _GNU_SOURCE
but have _Unwind_Backtrace
function.
Thread:
Fix bug in boost::condition_variable
on Windows (#130).
Compilers Tested
Boost's primary test compilers are:
Linux:
Clang: 3.0, 4.0.1, 5.0.0
Clang, C++11: 3.0, 3.1, 3.2, 3.3, 3.4, 4.0.1, 5.0.0
Clang, C++14: 3.5.0, 3.6.0, 3.7.1, 3.8.0, 3.9.1, 4.0.0, 5.0.0
Clang, C++17: 5.0.0
Clang, C++1z: 4.0.0
GCC: 4.4.7, 4.5.3, 4.6.3, 4.7.2, 5.4.0, 7.1.0
GCC, C++11: 4.4.7, 4.7.2, 4.7.3, 4.8.5, 4.9.4, 5.4.0, 6.4.0, 7.1.0
GCC, C++14: 5.4.0, 5.4.1, 6.3.0, 6.4.0, 7.1.0, 7.2.0
GCC, C++17: 7.1.0
GCC, C++1z: 6.3.0
Intel: 17.0
OS X:
Clang: 8.1.0
Clang, C++11: 8.1.0
Clang, C++14: 8.1.0
Clang, C++1z: 8.1.0
Windows:
GCC: 3.4.5, 4.1.2, 4.2.4, 4.3.3, 4.4.0, 4.5.4
GCC, C++11: 4.6.4, 4.7.3, 4.8.1
GCC, C++14: 4.9.3, 5.1.0, 5.2.0, 5.3.0, 6.1.0, 6.2.0, 6.3.0, 6.4.0,
7.1.0
Visual C++: 7.1, 8.0, 9.0, 10.0, 11.0, 12.0, 14.0, 14.1
Android:
Clang: 3.6, 3.7, 3.8
GCC: 4.9, 5.4
GCC, C++14: 6.2
FreeBSD:
Clang: 3.8.0
Clang, C++11: 3.8.0
Clang, C++14: 3.8.0
Clang, C++1z: 3.8.0
QNX:
QCC, C++11: 4.4.2
SunOS:
Oracle Solaris Studio: 12.5_next, 12.5
Oracle Solaris Studio, C++11: , 12.5_next, 12.5
Acknowledgements
Beman Dawes, Daniel James,
Vladimir Prus and Marshall Clow managed this release.
New Libraries in
1.65.0
PolyCollection:
Fast
containers of polymorphic objects, from Joaquín M López Muñoz.
Stacktrace:
Gather, store,
copy and print backtraces, from Antony Polukhin.
Note: Library has issue
with MinGW and may produce empty backtraces with that compiler.
Removed Libraries
in 1.65.0
TR1
Updated Libraries
in 1.65.0
Asio:
Changed to require g++ versions >= 4.7 to use
standard atomics, to fix a linker error when using g++
4.6 (#13121).
Enabled use of constexpr
and variadic templates with recent MSVC versions.
Fixed a race condition in the Linux epoll backend, which may occur
when a socket or descriptor is closed while another thread is blocked
on epoll.
Eliminated use of deprecated auto_ptr.
Fixed misplaced use of asio_handler_is_continuation
result in reactive async_accept
implementation.
Changed to use poll.h
rather than sys/poll.h on some modern POSIX platforms
(#12419).
Fixed MSVC intellisense detection.
Disabled use of the __thread
keyword extension for android/clang/x86 targets.
Context:
Improvements:
call/cc supports ucontext-API (swapcontext)
call/cc supports Windows-Fiber-API
call/cc supports on demand growing (segmented/split) stacks
Bugfixes:
#12719: context test cases and examples segmentation fault
when built with mingw-w64 toolchain
#52: Failing to build callcc test with g++-4.9
important:
required bug fix 420554fe9ac01482990e8ae314f4f7ba81010c9a
not included in 1.65
Config:
Added BOOST_NO_CXX11_POINTER_TRAITS,
BOOST_NO_CXX17_FOLD_EXPRESSIONS,
BOOST_NO_CXX17_INLINE_VARIABLES,
BOOST_NO_CXX17_STRUCTURED_BINDINGS
defect detection.
BOOST_FALLTHROUGH support for GCC 7 and above. (Glen Fernandes)
Core:
Implemented pointer_traits
for C++03 and higher, that implements P0653r0
(Glen Fernandes). This implementation is now used by Align, Circular
Buffer, Fiber, Geometry, among other libraries.
Added BOOST_TEST_GT
and BOOST_TEST_GE
to Lightweight Test.
Coroutine2:
supports ucontext-API (swapcontext)
supports Windows-Fiber-API
#13064: different behavior coroutine and coroutine2
DLL:
Fix PE parsing on non Windows platforms.
Fiber:
Improvements:
hardware transactional memory (Intel TSX) supported
NUMA supported
ucontext-API (swapcontext) supported
Windows-Fiber-API supported
on demand growing stacks
Bugfixes:
#121: failing to build static lib with GCC 4.8 and C++11
#123: assertion failure in schedule_from_remote
#125: erratic crashes in testsuite
#126: incorrect std::memory_order value in compare_exchange_strong?
important:
required bug fix 63f1041f0e484e64dec437a0fa780ea2463abda2
not included in 1.65
Fusion:
MSVC 14.1 supports variadic containers, such as fusion::vector,
fusion::deque, fusion::map,
fusion::set, and fusion::tuple.
(#12986)
Geometry:
Improvements:
Add correct() overload taking area strategy
Add is_convex() overload taking side strategy
Add missing relational operations (covered_by, crosses, equals,
etc.) for MultiPoint/AnyGeometry
Solved issues:
12410
Lack of support of geographic coordinate system in correct()
13035
Wrong result of non-cartesian intersection strategies for segments
near poles.
13057
Wrong result of intersects() for linestrings caused by numerical
issue in disjoint() for boxes.
Bugfixes:
Fix is_valid which could return false for multipolygons where
an interior ring touches another interior ring
Fix is_valid which could return false for multipolygons where
a polygon was located in an interior ring, all touching each
other
Fix union which could produce invalid results (for some cases,
this needs to define BOOST_GEOMETRY_INCLUDE_SELF_TURNS)
Fix intersection (idem), but some cases are still not yet valid
Fix difference (idem), but some cases are still not yet valid
Fix propagation of area strategy into the internals of various
algorithms from intersection strategy
Fix uninitialized variable in relate and reference to temporary
in overlay
Fix error in disjoint for geographic Segment/Box
Fix handling of non-cartesian geometries in various algorithms
Hash:
Support for char16_t,
char32_t, u16string, u32string.
Log:
General changes:
Improved compatibility with Solaris.
See changelog
for more details.
Phoenix:
Corrected some documentation. (PR#50)
phoenix::erase with associative container
returns iterator in C++11 mode. (#7423)
std::set and std::multiset
should be worked with predefined lazy functions. (PR#52)
Disable phoenix::random_shuffle in C++17. (PR#53)
Don't forward declare, include instead. (#11875)
Predef:
Fix Intel C/C++ version 9999 detection to be 12.1.0.
Addition of BOOST_PREDEF_WORKAROUND
and BOOST_PREDEF_TESTED_AT
macros for defect workarounds and detection.
Add ARM64 MSVC SIMD detection. (from Minmin Gong)
Add detection of iOS simulator vs device as a platform choice. (from
Ruslan Baratov)
Fix MinGW incorrect header guard. (from Ruslan Baratov)
Program Options:
Support for storing values into boost::optional,
thanks to Ed Catmur (#7495,
PR#18)
Parsing of implicit options can now use the value from the next token.
Since 1.59, unless the value of implicit option was specified in
the same token as the option itself, the implicit value was used.
That proved inconvenient, and now we again check the next token and
use it as value if it's not an option itself. (#25)
Python:
eval(),
exec(),
and exec_statement() now allow char
const *
arguments, in addition to boost::python::str.
The boost::python::numeric API has been removed, as
it is being obsoleted by boost::python::numpy.
Fix some build issues when using Python3 with MSVC.
Smart Pointers:
New class templateatomic_shared_ptr,
that provides thread-safe atomic pointer operations over shared_ptr. (Peter Dimov)
New class template local_shared_ptr,
where the reference count is updated with non-atomic operations.
(Peter Dimov)
More optimizations in allocate_shared
and make_shared for
arrays. (Glen Fernandes)
Documentation has been completely rewritten in Asciidoc format.
Test:
Boost.test v3.6 see the Change
log section for more details.
New feature:
C++17 compatibility (tested on VS2017), thanks to Daniela
Engert
Direct comparison of C-arrays in BOOST_TEST
Better global fixtures mechanism, and spitting of responsibilities
with BOOST_TEST_GLOBAL_FIXTURE
for global fixtures and BOOST_TEST_GLOBAL_CONFIGURATION
for global initialization (compile time configuration).
Improved support for fixtures (setup
/ teardown
member function) which enables better teardown time checks
Breaking changes
Some API changes for the loggers
Deprecating BOOST_GLOBAL_FIXTURE
in favor of BOOST_TEST_GLOBAL_FIXTURE
and BOOST_TEST_GLOBAL_CONFIGURATION
(see above)
Bug fixes
Trac tickets #5282, #5563, #11471, #11962,
#12228
Trac tickets #12631, #13011
Pull request PR106
Thread:
Important Regression on Windows:
#130
windows: Bug in boost::condition_variable on Windows Please,
merge these two patches
https://github.com/boostorg/thread/commit/fdc0cbcd8ce8f34a19c7cdaf6f1fa679f0a49657
https://github.com/boostorg/thread/commit/395e3d786bc1dce9c60eb84da85f5845a2c1fb3d
Bug fixes
#6787
boost::thread::sleep() hangs if system time is rolled back
#12519
boost::thread::try_join_for does not return after timeout
#12874
future<> extension constructor must be under BOOST_THREAD_PROVIDES_FUTURE_UNWRAP
#12888
Linking with boost thread does not work on mingw/gcc 4.4
#12958
sync_bounded_queue::wait_pull_front( lve ) might throw
#13077
Linking to static 64bit libboost_thread fails DLL initialization
#13155
log doesn't build on a system with pthreads
#121
on_tls_prepare is broken under VS2017
TypeIndex:
Include if required, thanks to
Ed Catmur #13009.
Use native hash_code() when possible on GCC-like compilers
#13027.
Fix ctti_type_index
for GCC 7 and later, thanks to Benjamin Buch PR16.
Typeof:
Fix compilation error with clang-cl ticket
11821.
Unordered:
Use the same data structure for unordered_set
and unordered_multiset,
and forunordered_map
and unordered_multimap.
This is required for C++17, so that nodes can be merged and extracted
between compatible containers.
Add deprecated attributes to long deprecated functions.
Improved use of allocator_traits
construct and destroy on C++11 compilers, using
piecewise pair construction when appropriate.
Fewer workarounds on newer Oracle compilers.
Avoid dereferencing pointers to uninitialized memory (PR
#5).
Utility:
Improved compatibility of boost::next/boost::prior with SFINAE-unfriendly iterators.
#10847, #13002.
Variant:
r-value overload for boost::get
was added by Albert Sverdlov #13018.
Missing include fro <boost/variant/polymorphic_get.hpp>
header was added by Adam Badura #13037.
boost::make_variant_over was fixed and
now works with views and other Forward Sequences (thanks to Mikhail
Maksimov for the fix) #8554, #10041, PR#35.
[Less]
|
Posted
over 6 years
ago
Fixes in 1.65.1
Config:
Version macro changes for CUDA.
Update last known MSVC
... [More]
version.
MSVC 14.11 supports structured bindings.
Context:
Return a continuation from functions executed by resume_with.
Fiber:
Return a continuation from functions executed by resume_with.
Smart Pointers:
Fix Visual C++ version checks.
Fix compilation for NVCC with host compiler clang.
Stacktrace:
Update build testing file to detail with a MinGW issue.
Change preprocessor file extensions to work with the installation
system.
Support FreeBSD and other OSs that do not define _GNU_SOURCE
but have _Unwind_Backtrace
function.
Thread:
Fix bug in boost::condition_variable
on Windows (#130).
Compilers Tested
Boost's primary test compilers are:
Linux:
Clang: 3.0, 4.0.1, 5.0.0
Clang, C++11: 3.0, 3.1, 3.2, 3.3, 3.4, 4.0.1, 5.0.0
Clang, C++14: 3.5.0, 3.6.0, 3.7.1, 3.8.0, 3.9.1, 4.0.0, 5.0.0
Clang, C++17: 5.0.0
Clang, C++1z: 4.0.0
GCC: 4.4.7, 4.5.3, 4.6.3, 4.7.2, 5.4.0, 7.1.0
GCC, C++11: 4.4.7, 4.7.2, 4.7.3, 4.8.5, 4.9.4, 5.4.0, 6.4.0, 7.1.0
GCC, C++14: 5.4.0, 5.4.1, 6.3.0, 6.4.0, 7.1.0, 7.2.0
GCC, C++17: 7.1.0
GCC, C++1z: 6.3.0
Intel: 17.0
OS X:
Clang: 8.1.0
Clang, C++11: 8.1.0
Clang, C++14: 8.1.0
Clang, C++1z: 8.1.0
Windows:
GCC: 3.4.5, 4.1.2, 4.2.4, 4.3.3, 4.4.0, 4.5.4
GCC, C++11: 4.6.4, 4.7.3, 4.8.1
GCC, C++14: 4.9.3, 5.1.0, 5.2.0, 5.3.0, 6.1.0, 6.2.0, 6.3.0, 6.4.0,
7.1.0
Visual C++: 7.1, 8.0, 9.0, 10.0, 11.0, 12.0, 14.0, 14.1
Android:
Clang: 3.6, 3.7, 3.8
GCC: 4.9, 5.4
GCC, C++14: 6.2
FreeBSD:
Clang: 3.8.0
Clang, C++11: 3.8.0
Clang, C++14: 3.8.0
Clang, C++1z: 3.8.0
QNX:
QCC, C++11: 4.4.2
SunOS:
Oracle Solaris Studio: 12.5_next, 12.5
Oracle Solaris Studio, C++11: , 12.5_next, 12.5
Acknowledgements
Beman Dawes, Daniel James,
Vladimir Prus and Marshall Clow managed this release.
New Libraries in
1.65.0
PolyCollection:
Fast
containers of polymorphic objects, from Joaquín M López Muñoz.
Stacktrace:
Gather, store,
copy and print backtraces, from Antony Polukhin.
Note: Library has issue
with MinGW and may produce empty backtraces with that compiler.
Updated Libraries
in 1.65.0
Asio:
Changed to require g++ versions >= 4.7 to use
standard atomics, to fix a linker error when using g++
4.6 (#13121).
Enabled use of constexpr
and variadic templates with recent MSVC versions.
Fixed a race condition in the Linux epoll backend, which may occur
when a socket or descriptor is closed while another thread is blocked
on epoll.
Eliminated use of deprecated auto_ptr.
Fixed misplaced use of asio_handler_is_continuation
result in reactive async_accept
implementation.
Changed to use poll.h
rather than sys/poll.h on some modern POSIX platforms
(#12419).
Fixed MSVC intellisense detection.
Disabled use of the __thread
keyword extension for android/clang/x86 targets.
Context:
Improvements:
call/cc supports ucontext-API (swapcontext)
call/cc supports Windows-Fiber-API
call/cc supports on demand growing (segmented/split) stacks
Bugfixes:
#12719: context test cases and examples segmentation fault
when built with mingw-w64 toolchain
#52: Failing to build callcc test with g++-4.9
important:
required bug fix 420554fe9ac01482990e8ae314f4f7ba81010c9a
not included in 1.65
Config:
Added BOOST_NO_CXX11_POINTER_TRAITS,
BOOST_NO_CXX17_FOLD_EXPRESSIONS,
BOOST_NO_CXX17_INLINE_VARIABLES,
BOOST_NO_CXX17_STRUCTURED_BINDINGS
defect detection.
BOOST_FALLTHROUGH support for GCC 7 and above. (Glen Fernandes)
Core:
Implemented pointer_traits
for C++03 and higher, that implements P0653r0
(Glen Fernandes). This implementation is now used by Align, Circular
Buffer, Fiber, Geometry, among other libraries.
Added BOOST_TEST_GT
and BOOST_TEST_GE
to Lightweight Test.
Coroutine2:
supports ucontext-API (swapcontext)
supports Windows-Fiber-API
#13064: different behavior coroutine and coroutine2
DLL:
Fix PE parsing on non Windows platforms.
Fiber:
Improvements:
hardware transactional memory (Intel TSX) supported
NUMA supported
ucontext-API (swapcontext) supported
Windows-Fiber-API supported
on demand growing stacks
Bugfixes:
#121: failing to build static lib with GCC 4.8 and C++11
#123: assertion failure in schedule_from_remote
#125: erratic crashes in testsuite
#126: incorrect std::memory_order value in compare_exchange_strong?
important:
required bug fix 63f1041f0e484e64dec437a0fa780ea2463abda2
not included in 1.65
Fusion:
MSVC 14.1 supports variadic containers, such as fusion::vector,
fusion::deque, fusion::map,
fusion::set, and fusion::tuple.
(#12986)
Geometry:
Improvements:
Add correct() overload taking area strategy
Add is_convex() overload taking side strategy
Add missing relational operations (covered_by, crosses, equals,
etc.) for MultiPoint/AnyGeometry
Solved issues:
12410
Lack of support of geographic coordinate system in correct()
13035
Wrong result of non-cartesian intersection strategies for segments
near poles.
13057
Wrong result of intersects() for linestrings caused by numerical
issue in disjoint() for boxes.
Bugfixes:
Fix is_valid which could return false for multipolygons where
an interior ring touches another interior ring
Fix is_valid which could return false for multipolygons where
a polygon was located in an interior ring, all touching each
other
Fix union which could produce invalid results (for some cases,
this needs to define BOOST_GEOMETRY_INCLUDE_SELF_TURNS)
Fix intersection (idem), but some cases are still not yet valid
Fix difference (idem), but some cases are still not yet valid
Fix propagation of area strategy into the internals of various
algorithms from intersection strategy
Fix uninitialized variable in relate and reference to temporary
in overlay
Fix error in disjoint for geographic Segment/Box
Fix handling of non-cartesian geometries in various algorithms
Hash:
Support for char16_t,
char32_t, u16string, u32string.
Log:
General changes:
Improved compatibility with Solaris.
See changelog
for more details.
Phoenix:
Corrected some documentation. (PR#50)
phoenix::erase with associative container
returns iterator in C++11 mode. (#7423)
std::set and std::multiset
should be worked with predefined lazy functions. (PR#52)
Disable phoenix::random_shuffle in C++17. (PR#53)
Don't forward declare, include instead. (#11875)
Predef:
Fix Intel C/C++ version 9999 detection to be 12.1.0.
Addition of BOOST_PREDEF_WORKAROUND
and BOOST_PREDEF_TESTED_AT
macros for defect workarounds and detection.
Add ARM64 MSVC SIMD detection. (from Minmin Gong)
Add detection of iOS simulator vs device as a platform choice. (from
Ruslan Baratov)
Fix MinGW incorrect header guard. (from Ruslan Baratov)
Program Options:
Support for storing values into boost::optional,
thanks to Ed Catmur (#7495,
PR#18)
Parsing of implicit options can now use the value from the next token.
Since 1.59, unless the value of implicit option was specified in
the same token as the option itself, the implicit value was used.
That proved inconvenient, and now we again check the next token and
use it as value if it's not an option itself. (#25)
Python:
eval(),
exec(),
and exec_statement() now allow char
const *
arguments, in addition to boost::python::str.
The boost::python::numeric API has been removed, as
it is being obsoleted by boost::python::numpy.
Fix some build issues when using Python3 with MSVC.
Smart Pointers:
New class templateatomic_shared_ptr,
that provides thread-safe atomic pointer operations over shared_ptr. (Peter Dimov)
New class template local_shared_ptr,
where the reference count is updated with non-atomic operations.
(Peter Dimov)
More optimizations in allocate_shared
and make_shared for
arrays. (Glen Fernandes)
Documentation has been completely rewritten in Asciidoc format.
Test:
Boost.test v3.6 see the Change
log section for more details.
New feature:
C++17 compatibility (tested on VS2017), thanks to Daniela
Engert
Direct comparison of C-arrays in BOOST_TEST
Better global fixtures mechanism, and spitting of responsibilities
with BOOST_TEST_GLOBAL_FIXTURE
for global fixtures and BOOST_TEST_GLOBAL_CONFIGURATION
for global initialization (compile time configuration).
Improved support for fixtures (setup
/ teardown
member function) which enables better teardown time checks
Breaking changes
Some API changes for the loggers
Deprecating BOOST_GLOBAL_FIXTURE
in favor of BOOST_TEST_GLOBAL_FIXTURE
and BOOST_TEST_GLOBAL_CONFIGURATION
(see above)
Bug fixes
Trac tickets #5282, #5563, #11471, #11962,
#12228
Trac tickets #12631, #13011
Pull request PR106
Thread:
Important Regression on Windows:
#130
windows: Bug in boost::condition_variable on Windows Please,
merge these two patches
https://github.com/boostorg/thread/commit/fdc0cbcd8ce8f34a19c7cdaf6f1fa679f0a49657
https://github.com/boostorg/thread/commit/395e3d786bc1dce9c60eb84da85f5845a2c1fb3d
Bug fixes
#6787
boost::thread::sleep() hangs if system time is rolled back
#12519
boost::thread::try_join_for does not return after timeout
#12874
future<> extension constructor must be under BOOST_THREAD_PROVIDES_FUTURE_UNWRAP
#12888
Linking with boost thread does not work on mingw/gcc 4.4
#12958
sync_bounded_queue::wait_pull_front( lve ) might throw
#13077
Linking to static 64bit libboost_thread fails DLL initialization
#13155
log doesn't build on a system with pthreads
#121
on_tls_prepare is broken under VS2017
TypeIndex:
Include if required, thanks to
Ed Catmur #13009.
Use native hash_code() when possible on GCC-like compilers
#13027.
Fix ctti_type_index
for GCC 7 and later, thanks to Benjamin Buch PR16.
Typeof:
Fix compilation error with clang-cl ticket
11821.
Unordered:
Use the same data structure for unordered_set
and unordered_multiset,
and forunordered_map
and unordered_multimap.
This is required for C++17, so that nodes can be merged and extracted
between compatible containers.
Add deprecated attributes to long deprecated functions.
Improved use of allocator_traits
construct and destroy on C++11 compilers, using
piecewise pair construction when appropriate.
Fewer workarounds on newer Oracle compilers.
Avoid dereferencing pointers to uninitialized memory (PR
#5).
Utility:
Improved compatibility of boost::next/boost::prior with SFINAE-unfriendly iterators.
#10847, #13002.
Variant:
r-value overload for boost::get
was added by Albert Sverdlov #13018.
Missing include fro <boost/variant/polymorphic_get.hpp>
header was added by Adam Badura #13037.
boost::make_variant_over was fixed and
now works with views and other Forward Sequences (thanks to Mikhail
Maksimov for the fix) #8554, #10041, PR#35.
[Less]
|
Posted
over 6 years
ago
Fixes in 1.65.1
Config:
Version macro changes for CUDA.
Update last known MSVC
... [More]
version.
MSVC 14.11 supports structured bindings.
Context:
Return a continuation from functions executed by resume_with.
Fiber:
Return a continuation from functions executed by resume_with.
Smart Pointers:
Fix Visual C++ version checks.
Fix compilation for NVCC with host compiler clang.
Stacktrace:
Update build testing file to detail with a MinGW issue.
Change preprocessor file extensions to work with the installation
system.
Support FreeBSD and other OSs that do not define _GNU_SOURCE
but have _Unwind_Backtrace
function.
Thread:
Fix bug in boost::condition_variable
on Windows (#130).
Compilers Tested
Boost's primary test compilers are:
Linux:
Clang: 3.0, 4.0.1, 5.0.0
Clang, C++11: 3.0, 3.1, 3.2, 3.3, 3.4, 4.0.1, 5.0.0
Clang, C++14: 3.5.0, 3.6.0, 3.7.1, 3.8.0, 3.9.1, 4.0.0, 5.0.0
Clang, C++17: 5.0.0
Clang, C++1z: 4.0.0
GCC: 4.4.7, 4.5.3, 4.6.3, 4.7.2, 5.4.0, 7.1.0
GCC, C++11: 4.4.7, 4.7.2, 4.7.3, 4.8.5, 4.9.4, 5.4.0, 6.4.0, 7.1.0
GCC, C++14: 5.4.0, 5.4.1, 6.3.0, 6.4.0, 7.1.0, 7.2.0
GCC, C++17: 7.1.0
GCC, C++1z: 6.3.0
Intel: 17.0
OS X:
Clang: 8.1.0
Clang, C++11: 8.1.0
Clang, C++14: 8.1.0
Clang, C++1z: 8.1.0
Windows:
GCC: 3.4.5, 4.1.2, 4.2.4, 4.3.3, 4.4.0, 4.5.4
GCC, C++11: 4.6.4, 4.7.3, 4.8.1
GCC, C++14: 4.9.3, 5.1.0, 5.2.0, 5.3.0, 6.1.0, 6.2.0, 6.3.0, 6.4.0,
7.1.0
Visual C++: 7.1, 8.0, 9.0, 10.0, 11.0, 12.0, 14.0, 14.1
Android:
Clang: 3.6, 3.7, 3.8
GCC: 4.9, 5.4
GCC, C++14: 6.2
FreeBSD:
Clang: 3.8.0
Clang, C++11: 3.8.0
Clang, C++14: 3.8.0
Clang, C++1z: 3.8.0
QNX:
QCC, C++11: 4.4.2
SunOS:
Oracle Solaris Studio: 12.5_next, 12.5
Oracle Solaris Studio, C++11: , 12.5_next, 12.5
Acknowledgements
Beman Dawes, Daniel James,
Vladimir Prus and Marshall Clow managed this release.
New Libraries in
1.65.0
PolyCollection:
Fast
containers of polymorphic objects, from Joaquín M López Muñoz.
Stacktrace:
Gather, store,
copy and print backtraces, from Antony Polukhin.
Note: Library has issue
with MinGW and may produce empty backtraces with that compiler.
Updated Libraries
in 1.65.0
Asio:
Changed to require g++ versions >= 4.7 to use
standard atomics, to fix a linker error when using g++
4.6 (#13121).
Enabled use of constexpr
and variadic templates with recent MSVC versions.
Fixed a race condition in the Linux epoll backend, which may occur
when a socket or descriptor is closed while another thread is blocked
on epoll.
Eliminated use of deprecated auto_ptr.
Fixed misplaced use of asio_handler_is_continuation
result in reactive async_accept
implementation.
Changed to use poll.h
rather than sys/poll.h on some modern POSIX platforms
(#12419).
Fixed MSVC intellisense detection.
Disabled use of the __thread
keyword extension for android/clang/x86 targets.
Context:
Improvements:
call/cc supports ucontext-API (swapcontext)
call/cc supports Windows-Fiber-API
call/cc supports on demand growing (segmented/split) stacks
Bugfixes:
#12719: context test cases and examples segmentation fault
when built with mingw-w64 toolchain
#52: Failing to build callcc test with g++-4.9
important:
required bug fix 420554fe9ac01482990e8ae314f4f7ba81010c9a
not included in 1.65
Config:
Added BOOST_NO_CXX11_POINTER_TRAITS,
BOOST_NO_CXX17_FOLD_EXPRESSIONS,
BOOST_NO_CXX17_INLINE_VARIABLES,
BOOST_NO_CXX17_STRUCTURED_BINDINGS
defect detection.
BOOST_FALLTHROUGH support for GCC 7 and above. (Glen Fernandes)
Core:
Implemented pointer_traits
for C++03 and higher, that implements P0653r0
(Glen Fernandes). This implementation is now used by Align, Circular
Buffer, Fiber, Geometry, among other libraries.
Added BOOST_TEST_GT
and BOOST_TEST_GE
to Lightweight Test.
Coroutine2:
supports ucontext-API (swapcontext)
supports Windows-Fiber-API
#13064: different behavior coroutine and coroutine2
DLL:
Fix PE parsing on non Windows platforms.
Fiber:
Improvements:
hardware transactional memory (Intel TSX) supported
NUMA supported
ucontext-API (swapcontext) supported
Windows-Fiber-API supported
on demand growing stacks
Bugfixes:
#121: failing to build static lib with GCC 4.8 and C++11
#123: assertion failure in schedule_from_remote
#125: erratic crashes in testsuite
#126: incorrect std::memory_order value in compare_exchange_strong?
important:
required bug fix 63f1041f0e484e64dec437a0fa780ea2463abda2
not included in 1.65
Fusion:
MSVC 14.1 supports variadic containers, such as fusion::vector,
fusion::deque, fusion::map,
fusion::set, and fusion::tuple.
(#12986)
Geometry:
Improvements:
Add correct() overload taking area strategy
Add is_convex() overload taking side strategy
Add missing relational operations (covered_by, crosses, equals,
etc.) for MultiPoint/AnyGeometry
Solved issues:
12410
Lack of support of geographic coordinate system in correct()
13035
Wrong result of non-cartesian intersection strategies for segments
near poles.
13057
Wrong result of intersects() for linestrings caused by numerical
issue in disjoint() for boxes.
Bugfixes:
Fix is_valid which could return false for multipolygons where
an interior ring touches another interior ring
Fix is_valid which could return false for multipolygons where
a polygon was located in an interior ring, all touching each
other
Fix union which could produce invalid results (for some cases,
this needs to define BOOST_GEOMETRY_INCLUDE_SELF_TURNS)
Fix intersection (idem), but some cases are still not yet valid
Fix difference (idem), but some cases are still not yet valid
Fix propagation of area strategy into the internals of various
algorithms from intersection strategy
Fix uninitialized variable in relate and reference to temporary
in overlay
Fix error in disjoint for geographic Segment/Box
Fix handling of non-cartesian geometries in various algorithms
Hash:
Support for char16_t,
char32_t, u16string, u32string.
Log:
General changes:
Improved compatibility with Solaris.
See changelog
for more details.
Phoenix:
Corrected some documentation. (PR#50)
phoenix::erase with associative container
returns iterator in C++11 mode. (#7423)
std::set and std::multiset
should be worked with predefined lazy functions. (PR#52)
Disable phoenix::random_shuffle in C++17. (PR#53)
Don't forward declare, include instead. (#11875)
Predef:
Fix Intel C/C++ version 9999 detection to be 12.1.0.
Addition of BOOST_PREDEF_WORKAROUND
and BOOST_PREDEF_TESTED_AT
macros for defect workarounds and detection.
Add ARM64 MSVC SIMD detection. (from Minmin Gong)
Add detection of iOS simulator vs device as a platform choice. (from
Ruslan Baratov)
Fix MinGW incorrect header guard. (from Ruslan Baratov)
Program Options:
Support for storing values into boost::optional,
thanks to Ed Catmur (#7495,
PR#18)
Parsing of implicit options can now use the value from the next token.
Since 1.59, unless the value of implicit option was specified in
the same token as the option itself, the implicit value was used.
That proved inconvenient, and now we again check the next token and
use it as value if it's not an option itself. (#25)
Python:
eval(),
exec(),
and exec_statement() now allow char
const *
arguments, in addition to boost::python::str.
The boost::python::numeric API has been removed, as
it is being obsoleted by boost::python::numpy.
Fix some build issues when using Python3 with MSVC.
Smart Pointers:
New class templateatomic_shared_ptr,
that provides thread-safe atomic pointer operations over shared_ptr. (Peter Dimov)
New class template local_shared_ptr,
where the reference count is updated with non-atomic operations.
(Peter Dimov)
More optimizations in allocate_shared
and make_shared for
arrays. (Glen Fernandes)
Documentation has been completely rewritten in Asciidoc format.
Test:
Boost.test v3.6 see the Change
log section for more details.
New feature:
C++17 compatibility (tested on VS2017), thanks to Daniela
Engert
Direct comparison of C-arrays in BOOST_TEST
Better global fixtures mechanism, and spitting of responsibilities
with BOOST_TEST_GLOBAL_FIXTURE
for global fixtures and BOOST_TEST_GLOBAL_CONFIGURATION
for global initialization (compile time configuration).
Improved support for fixtures (setup
/ teardown
member function) which enables better teardown time checks
Breaking changes
Some API changes for the loggers
Deprecating BOOST_GLOBAL_FIXTURE
in favor of BOOST_TEST_GLOBAL_FIXTURE
and BOOST_TEST_GLOBAL_CONFIGURATION
(see above)
Bug fixes
Trac tickets #5282, #5563, #11471, #11962,
#12228
Trac tickets #12631, #13011
Pull request PR106
Thread:
Important Regression on Windows:
#130
windows: Bug in boost::condition_variable on Windows Please,
merge these two patches
https://github.com/boostorg/thread/commit/fdc0cbcd8ce8f34a19c7cdaf6f1fa679f0a49657
https://github.com/boostorg/thread/commit/395e3d786bc1dce9c60eb84da85f5845a2c1fb3d
Bug fixes
#6787
boost::thread::sleep() hangs if system time is rolled back
#12519
boost::thread::try_join_for does not return after timeout
#12874
future<> extension constructor must be under BOOST_THREAD_PROVIDES_FUTURE_UNWRAP
#12888
Linking with boost thread does not work on mingw/gcc 4.4
#12958
sync_bounded_queue::wait_pull_front( lve ) might throw
#13077
Linking to static 64bit libboost_thread fails DLL initialization
#13155
log doesn't build on a system with pthreads
#121
on_tls_prepare is broken under VS2017
TypeIndex:
Include if required, thanks to
Ed Catmur #13009.
Use native hash_code() when possible on GCC-like compilers
#13027.
Fix ctti_type_index
for GCC 7 and later, thanks to Benjamin Buch PR16.
Typeof:
Fix compilation error with clang-cl ticket
11821.
Unordered:
Use the same data structure for unordered_set
and unordered_multiset,
and forunordered_map
and unordered_multimap.
This is required for C++17, so that nodes can be merged and extracted
between compatible containers.
Add deprecated attributes to long deprecated functions.
Improved use of allocator_traits
construct and destroy on C++11 compilers, using
piecewise pair construction when appropriate.
Fewer workarounds on newer Oracle compilers.
Avoid dereferencing pointers to uninitialized memory (PR
#5).
Utility:
Improved compatibility of boost::next/boost::prior with SFINAE-unfriendly iterators.
#10847, #13002.
Variant:
r-value overload for boost::get
was added by Albert Sverdlov #13018.
Missing include fro <boost/variant/polymorphic_get.hpp>
header was added by Adam Badura #13037.
boost::make_variant_over was fixed and
now works with views and other Forward Sequences (thanks to Mikhail
Maksimov for the fix) #8554, #10041, PR#35.
[Less]
|