Version 1.80.0
Version 1.80.0
August 10th, 2022 21:25 GMT
Platform | File | SHA256 Hash |
---|---|---|
unix | boost_1_80_0.tar.bz2 | 1e19565d82e43bc59209a168f5ac899d3ba471d55c7610c677d4ccf2c9c500c0 |
boost_1_80_0.tar.gz | 4b2136f98bdd1f5857f1c3dea9ac2018effe65286cf251534b6ae20cc45e1847 | |
windows | boost_1_80_0.7z | d12a2af721e22dbfb984ef061ee4c4ab2387f1904f6d65bc5acebaa34d6366ec |
boost_1_80_0.zip | e34756f63abe8ac34b35352743f17d061fcc825969a2dd8458264edb38781782 |
Known Issues
These are patches from library authors which were found too late to be fixed in the release.
-
Config
-
Filesystem
New Libraries
-
No new libraries.
Updated Libraries
-
Asio:
-
Added a deduced trailing return type to all asynchronous operations, to enable the new form of
async_result
for C++11. -
Moved
append
,prepend
,as_tuple
, anddeferred
to theboost::asio
namespace, and made them compatible with C++11. -
Made
experimental::parallel_group
compatible with C++11. -
Added
buffer()
overloads for contiguous containers, such asstd::span
. -
Added the ability for
awaitable<>
-based coroutines to directlyco_await
operations that are packaged as function objects. -
Changed
spawn()
to be a completion token-based asynchronous operation, and added support for cancellation. Thebasic_yield_context
token now supports move-only and variadic result types. When targeting C++11 and later,spawn()
andbasic_yield_context
are implemented in terms of Boost.Context directly. -
Added the
is_async_operation
trait andasync_operation
concept. -
Added the
completion_signature_of
trait. -
Added converting move construction/assignment to posix descriptors, serial ports, pipes, Windows
object_handle
, Windows stream handles, and Windows random-access handles. -
Added
release()
member functions to pipes, Windows stream handles, and Windows random-access handles. -
Enabled support for
Endpoint
implementations that returnvoid
pointers from theirdata()
member functions, as per the documentedEndpoint
type requirements. -
Removed
all()
andrace()
fromexperimental::promise
, asexperimental::parallel_group
covers this functionality. -
Added source locations to exceptions and error codes produced by the synchronous and asynchronous operations.
-
Fixed compatibility with OpenSSL 3.0.4 and later.
-
Fixed compatibility with with -masm=intel.
-
Explicitly stated that socket
shutdown()
calls are thread-safe with respect to certain other synchronous operations on the same socket. -
Optimised the move construction of I/O objects where only the executor type differs.
-
Fixed the detection of
std::invoke_result
for clang/libc++. -
Fixed an issue where
experimental::parallel_group
initiation incorrectly moved arguments instead of forwarding them. -
Fixed a sequencing issue in the implementation of
post()
,dispatch()
, anddefer()
. -
Fixed the
awaitable<>
implementation to propagate exceptions from awaited initiation functions through the current completion handler. -
Fixed detection of
std::aligned_alloc
with gcc 7. -
Changed to avoid using the soon-to-be-deprecated
std::aligned_storage
on newer compilers. -
Fixed detection of
std::aligned_alloc
for older Apple platforms. -
Removed faulty assertions from
experimental::coro
implementation. -
Added defence against Qt-defined macros when building with Intel C++.
-
Changed the implementation of the
select_reactor
, on Windows, to ensure that any exception resulting from failure to recreate its interrupter's sockets will be allowed to propagate out throughio_context::run()
. -
Fixed various compiler warnings.
-
Updated all composed operations examples, and the C++11 timeouts example, to use the new
async_result
form. -
Added composed operation and coroutine examples for C++20.
-
Consult the Revision History for further details.
-
-
Filesystem:
-
On Windows, added a fallback implementation for querying file attributes in case if the file cannot be opened with
ERROR_ACCESS_DENIED
error. This may allowstatus
andsymlink_status
to succeed for system files and directories that are not reparse points or symlinks. (#234) -
On Windows, added a workaround for FAT/exFAT filesystems that produce
ERROR_INVALID_PARAMETER
when querying file attributes. This affectedstatus
andsymlink_status
, which reported that files do not exist, and directory iterators, which failed to construct, as well as other dependent operations. (#236, #237) -
On Linux, corrected switching to
sendfile
copy_file
implementation ifcopy_file_range
failed withENOSYS
in runtime. Thesendfile
fallback implementation used to skip the filesystem type check and could fail for some filesystems. -
On POSIX systems supporting
openat
and related APIs defined in POSIX.1-2008 and on Windows Vista and later, improved protection ofremove_all
against CVE-2022-21658 that was implemented in the previous release. The previous fix could still result in removing unintended files in certain conditions. Other systems remain vulnerable.
-
-
GIL: NOTICE: We are planning BREAKING switch to C++17 as minimum required C++ language version in one or two releases after Boost 1.80 (#676)
-
Added
-
GSoC 2020: Added Perona-Malik anisotropic diffusion algorithm (PR#500)
-
GSoC 2020: Added histogram class and related functionality (PR#499)
-
GSoC 2020: Added histogram equalization feature (PR#514)
-
GSoC 2020: Added histogram matching algorithm (PR#515)
-
GSoC 2020: Added ability to stack images either horizontally (
hstack
) or vertically (vstack
) (PR#506) -
GSoC 2020: Added adaptive histogram equalization algorithm (PR#516)
-
GSoC 2020: Added Standard Hough Transform and circle rasterization (PR#512)
-
GSoC 2020: Added Bresenham's algorithm for line rasterization (PR#512)
-
GSoC 2021: Added rotation of image by arbitrary angle around its center (PR#565)
-
GSoC 2021: Added rasterization support for ellipse based on "An Efficient Ellipse-Drawing Algorithm" by Jerry Van Aken (PR#585)
-
Added
image
constructor from compatible view (PR#520) -
Added inverse function for affine
matrix3x2
(PR#527) -
Added standard morphological transformations (PR#541)
-
Added C++17 polymorphic memory resource typedefs for
image
class (PR#529)
-
-
Changed
-
BREAKING: The required minimum C++ version is changed from from C++11 to C++14. Currently, large parts of GIL still compile with a C++11 compiler. However, there is no guarantee that it stays that way, and any compilers that do not support at least C++14 are considered unsupported as of now.
-
BREAKING:
any_color_converted_view()
is deprecated and will be removed in the next release. Usecolor_converted_view()
instead, which provides the same feature. -
BREAKING:
apply_operation
forany_image
is deprecated and will be removed in the next release. Usevariant2::visit
instead, which provides the same feature. (PR#656) -
Moved numeric extension to core (PR#573)
-
Added support for C++17's
<filesystem>
(PR#636) The availability of thestd::filesystem
is detected automatically, unless theBOOST_GIL_IO_USE_BOOST_FILESYSTEM
macro is defined that forces the preference of the Boost.Filesystem. -
Moved function
construct_matched
intoboost::gil::detail
namespace as it was only used by other implementation details (PR#653) -
Made
packed_pixel
trivially copyable and assignable (PR#679) -
Replace deprecated libtiff v4.3 typedefs with C99 fixed-size integers (PR#685)
-
-
Fixed
-
Fixed conversion from RGB to HSL (PR#505)
-
Fixed conversion from RGB to signed CMYK (PR#522)
-
Removed unnecessary numeric cast in hsv.hpp (PR#530)
-
Fixed default constructor for
homogeneous_color_base
for reference pixel elements (PR#542) -
Fixed returning reference to local temporary object in
subchroma_image_view
(PR#556) -
Added missing header guards in diffusion.hpp (PR#568)
-
Fixed
any_image_view<>::const_t
(PR#526) -
Fixed C++20 incompatibilities in I/O extensions (PR#617)
-
Ensured all examples build without errors (PR#628)
-
Fixed
for_each_pixel
for non-1d iterable views (PR#621) -
Fixed:
is_equal_to_sixteen
in PNG I/O was less-than test (PR#650) -
Re-allow
devicen_t
with two components (PR#654) It was unintentionally removed in Boost 1.72 -
Fixed memory leak in
image
class for empty dimensions (PR#649)
-
-
Acknowledgements
-
Cypre55, Samuel Debionne, Mike-Devel, Edward Diener, Peter Dimov, Omar Emara, Dhruva Gole, Nicolas Herry, Eugene K, Avinal Kumar, Gaurav Kumar, Marco Langer, Pranam Lashkari, Mateusz Łoskot, Giovanni Mascellani, Debabrata Mandal, Gopi Krishna Menon, René Ferdinand Rivera Morell, Felix Morgner, Harshit Pant, Paul92, André Schröder, Scramjet911, Siddharth, Dirk Stolle, Prathamesh Tagore, theroyn, Olzhas Zhumabek
-
-
-
Graph:
-
Acknowledgements
-
Viktor Pti, Sebastian Brockmeyer, Etienne dg
-
-
Histogram:
-
Fixed segfault in
indexed
when trying to iterate over histogram with axes of zero size (physical or logical) under certain conditions -
Removed previously deprecated API
-
class
accumulators::thread_safe
: useaccumulators::count<T, true>
-
Methods
accumulators::sum::large
andaccumulators::sum::small
: useaccumulators::sum::large_part
andaccumulators::sum::small_part
-
Type alias
algorithm::reduce_option
: usealgorithm::reduce_command
-
Template function
axis::traits::static_options
: useaxis::traits::get_options
-
Template function
axis::traits::static_is_inclusive
: useaxis::traits::is_inclusive
-
Type alias
indexed::range_iterator
: useindexed::iterator
-
Type alias
indexed::accessor::reference
: useindexed::accessor::const_reference
-
-
-
JSON:
-
Added non-const
value::at
overloads. -
Added the ability to manually choose endianness of the platform.
-
Added
string::subview()
overload. -
Fixed segfault in
array::erase(it)
. -
Fixed low performance of
serialize
on libc++. -
Fixed ambigious conversion to
std::string_view
on GCC 8. -
Fixed parsing on big-endian platforms.
-
Fixed handling of comment after trailing comma.
-
-
LEAF:
-
API breaking change: throw leaf::exception(....) now becomes leaf::throw_exception(....)
-
Fixed a bug in support for a rare build configuration (exception handling enabled, diagnostics disabled)
-
Using nullptr instead of 0 throughout
-
Fixed pedantic warnings
-
-
Locale:
-
Deprecated support for C++03 and earlier, C++11 will be required in the next release
-
Provide
-sICU_LINK_LOCALE
as a temporary replacement for-sICU_LINK
which is incompatible with Boost.Regex.-sICU_LINK_LOCALE
and-sICU_LINK
are deprecated and will be replaced byICU_*_NAME
options to be compatible with Boost.Regex -
Fix UB/assertion failure in the ICU
collator
implementation when transforming empty strings -
Fix some issues related to visibility of classes in shared libraries (Unix only)
-
Fix compatibility with C++20 mode
-
Fix compatibility with
BOOST_USE_WINDOWS_H
-
Fix build failures due to missing includes
-
Handle or suppress many warnings which makes the build log cleaner
-
-
Log:
-
Bug fixes:
-
Fixed binding incorrect local address in UDP socket-based
syslog_backend
when IPv6 address is used for the syslog server. (#181) -
Added a workaround for a bug in libstdc++ from gcc 11.2. When
max_size_decor
was used on a formatting stream,std::codecvt::do_length
incorrectly accessed the input buffer and caused a buffer overflow.
-
-
See changelog for more details.
-
-
Math:
-
Deprecated C++11 support: from 2023 we will require C++14 as a minimum standard. This will mean GCC-5 or MSVC-14.1 as a minimal requirement.
-
Add
constexpr
fma support, see 734. -
Add support for the Chatterjee Correlation Coefficient, see 770.
-
Added support for the logarithm of the PDF for all the distributions.
-
Improve support for building with no exception or RTTI support.
-
Some minor bug fixes for [sub 1]F[sub 1] corner cases, see 778.
-
-
Multiprecision:
-
Mark C++11 support as deprecated: from 2023 we will move to requiring C++14 as a minimum standard level. That will drop support for GCC versions prior to 5 and MSVC prior to 14.1.
-
Fix conflict between
boost/cstdfloat.hpp
and this library. -
Clean up lots of gcc and clang warnings.
-
Fix input streaming of composite types (complex, interval rational) where there is a trailing delimeter in the stream and no whitespace.
-
Fix
constexpr
integer square root where the input is 1, 2 or 3. -
Add missing
#include
of<memory>
to float128.hpp. -
Correct 2-arg constructor for class
number
to prevent ambiguity in some cases. -
Correct and make more consistent behaviour of divide-by-zero in gmp.hpp.
-
-
Multi-index Containers:
-
Maintenance work.
-
-
Nowide:
-
Major performance improvement for Bulk I/O with files
-
basic_filebuf
: Fix wrong return value ofsync
whenfflush
failed -
basic_filebuf
: Fix possible undefined behavior in a corner case when nothing was actually written but buffer is in "write" mode -
basic_filebuf
: Limit putback of characters (i.e.pbackfail
) only allowing putback of buffered characters (may be only 1 character)
-
-
STLInterfaces:
-
Fix #53: "missing 'typename' prior to dependent type name 'C::const_iterator'"
-
Fix #54: "Concept check fails on .data() of a view on contiguous iterator_interface instantiations"
-
New additions to make it easy to write views and view adaptors that work like, and interoperate with, the ones in the standard library:
-
Add workalikes for C++23's
std::bind_back()
andstd::range_adaptor_closure
for pre-C++23 code. -
Add templates
closure
andadaptor
to make writing view adaptors easier, following the examples in P2387.
-
-
-
System:
-
When an
error_code
is converted tostd::error_code
and then back toerror_code
, the original is now restored, if possible. -
Reworked the conversion from
error_category
tostd::error_category
to avoid the one-time allocation that shows up on leak checkers. -
Added a constructor that allows replacing the source location of an
error_code
, and a correspondingassign
. -
Added a converting constructor to
result
.
-
-
Utility:
-
Added
string_view::contains
methods that were introduced in C++23. (#93) -
In
string_view
, added asserts inremove_prefix
/remove_suffix
methods to enforce the precondition that the prefix/suffix length does not exceed the string view size. The previous (undocumented) behavior of silently clamping the prefix/suffix length is deprecated and will be removed in a future release. (#92)
-
Wave: Fixed bugs:
-
#24: Line numbers wrong after conditional section
-
#160: one test fails with error C2660 and error C2440 under msvc /permissive- mode
-
#161: BOOST_WAVE_THROW_NAME_CTX does not result in a context callback and always throws
-
#162: When Boost headers are included in the preprocessed translation unit, Wave fails in boost/integer.hpp(99)
-
Updated Tools
-
Build:
-
Includes release of B2 version 4.9.2.
-
Compilers Tested
Boost's primary test compilers are:
Boost's primary test compilers are:
-
Linux:
-
Clang: 3.4, 3.5, 3.6, 3.7, 3.8, 3.9, 12.0.0, 13.0.0, 14.0.0
-
Clang, C++11: 3.4, 11.0.0, 13.0.0, 14.0.0
-
Clang, C++14: 3.5, 3.6, 3.7, 3.8, 3.9, 4.0, 5.0, 12.0.0, 13.0.0, 14.0.0
-
Clang, C++17: 6.0.1, 7.0.0, 8.0.0, 9.0.0, 10.0.0, 11.0.0, 12.0.0, 13.0.0, 14.0.0
-
Clang, C++20: 11.0.0, 12.0.0, 13.0.0, 14.0.0
-
GCC: 4.6.3, 11, 12
-
GCC, C++11: 4.7.3, 4.8.5, 11, 12
-
GCC, C++14: 5.4.0, 6.4.0, 7.3.0, 8.0.1, 9.1.0, 11, 12
-
GCC, C++17: 7.3.0, 8.0.1, 9.1.0, 11, 12
-
GCC, C++20: 8.0.1, 9.1.0, 10, 11, 12
-
-
OS X:
-
Apple Clang: 11.0.3
-
Apple Clang, C++11: 11.0.3
-
Apple Clang, C++14: 11.0.3
-
Apple Clang, C++17: 11.0.3
-
Apple Clang, C++20: 11.0.3
-
-
Windows:
-
Visual C++: 10.0, 11.0, 12.0, 14.0, 14.1, 14.2, 14.3
-
Acknowledgements
Marshall Clow, Michael Caisse and Glen Fernandes managed this release.