本家リリースノート:
- https://github.com/boostorg/website/blob/master/feed/history/boost_1_80_0.qbk
- http://www.boost.org/users/history/version_1_80_0.html
リポジトリは以下:
リポジトリからのビルド方法は、egtraさんのブログを参照:
既知の問題
- Boost.Filesystemのdirectory iteratorが、Windows 10より前のバージョンでネットワーク共有の構築に失敗する場合がある
- GitHub #246, GitHub #245, およびpatchを参照
- Boost.FilesystemがWindowsにおいて、
weakly_canonical
が「\\\\?\\
」プレフィックスで始まるパスの処理に失敗する - Boost.Filesystemにおいて、
*at
APIをサポートしていないPOSIXシステム上でインクルードが不足しているためにコンパイルに失敗する
更新ライブラリ
- Asio
- Atomic
- Filesystem
- GIL
- Graph
- Histogram
- Iterator
- JSON
- LEAF
- Locale
- Log
- Math
- Multiprecision
- Multi-index
- Nowide
- Optional
- STLInterfaces
- System
- Unordered
- Utility
- Wave
更新ツール
Asio
- C++11の新たな形式の
async_result
を有効にするために、すべての非同期操作に推論の後置戻り値型を追加 append
、prepend
、as_tuple
、deferred
をboost::asio
名前空間に移動し、C++11と互換性を持たせたexperimental::parallel_group
をC++11と互換性を持たせたstd::span
などの連続性のあるコンテナのbuffer()
オーバーロードを追加awaitable<>
ベースのコルーチン機能が、関数オブジェクトとしてパッケージ化された操作を直接co_await
できる機能を追加spawn()
を完了トークンベースの非同期操作に変更し、キャンセルのサポートを追加。basic_yield_context
トークンは、ムーブのみ可能な型および可変個の戻り値型をサポートするようになった。C++11以降をターゲットとする場合、spawn()
とbasic_yield_context
はBoost.Contextで直接実装されるis_async_operation
トレイトとasync_operation
コンセプトを追加completion_signature_of
トレイトを追加- posix descriptor、シリアルポート、パイプ、Windowsの
object_handle
、Windowsのストリームハンドル、およびWindowsランダムアクセスハンドルを変換ムーブ構築・代入する機能を追加 - パイプ、Windowsストリームハンドル、およびWindowsランダムアクセスハンドルに
release()
メンバ関数を追加 - ドキュメント化された
Endpoint
型要件に従って、data()
メンバ関数からvoid
ポインタを返すEndpoint
実装のサポートを有効にした experimental::promise
のall()
とrace()
は、experimental::parallel_group
がこの機能をカバーしているため、削除した- 同期操作と非同期操作によって生成される例外とエラーコードにsource locationを追加
- OpenSSL 3.0.4 以降との互換性を修正
-masm=intel
との互換性を修正- socketの
shutdown()
呼び出しが、同じソケット上の特定の他の同期操作に関してスレッドセーフであることを明示的にした - executor型のみが異なるI/O オブジェクトのムーブ構築を最適化
- clang/libc++の
std::invoke_result
の検出を修正 experimental::parallel_group
初期化が引数を転送する代わりに誤ってムーブする問題を修正post()
、dispatch()
、defer()
の実装におけるシーケンスの問題を修正awaitable<>
の実装を修正し、待機中の初期関数 (initiation function) から現在の完了ハンドラを介して例外を伝播するように修正- GCC 7での
std::aligned_alloc
の検出を修正 - 新しいコンパイラ (C++23) で間もなく非推奨となる
std::aligned_storage
を使用しないよう修正 - 古いAppleプラットフォームの
std::aligned_alloc
の検出を修正 experimental::coro
実装から誤ったアサーションを削除- Intel C++でビルドする際のQt定義のマクロに対する防御を追加
- Windowsで
select_reactor
の実装を変更し、インタラプタのソケットの再作成に失敗したために発生した例外がio_context::run()
を介して伝播できるようにした - さまざまなコンパイラの警告を修正した
- 新しい
async_result
形式を使用するために、すべての合成操作の例とC++11タイムアウトの例を更新 - C++20の合成操作とコルーチンの例を追加
- 詳細はRevision Historyを参照
Atomic
- GitHub #59 ARM, AArch32, AArch64ターゲット向けのエンディアンチェックの移植性を改善
- GitHub #61 MSVC 14.0 (Visual Studio 2015) のC++17 modeでのコンパイルを修正
Filesystem
- GitHub #234 Windowsにおいて、
ERROR_ACCESS_DENIED
エラーでファイルを開くことができない場合にファイル属性をクエリするためのフォールバック実装を追加。これにより、再解析ポイントまたはシンボリックリンクではないシステムファイルおよびディレクトリに対して、status
およびsymlink_status
が成功する可能性がある - GitHub #236、GitHub #237 Windowsにおいて、ファイル属性のクエリ時に
ERROR_INVALID_PARAMETER
を生成するFAT/exFATファイルシステムの回避策を追加。これは、ファイルが存在しないことを報告するstatus
とsymlink_status
、構築に失敗したdirectory iterator、およびその他の依存操作に影響する - GitHub #240 RTEMSでのコンパイルの問題を回避
- Linuxにおいて、実行時に
copy_file_range
がENOSYS
で失敗した場合のsendfile
、copy_file
実装への切り替えを修正。sendfile
フォールバックの実装は、ファイルシステムタイプのチェックをスキップするために使用され、一部のファイルシステムでは失敗する可能性があった - POSIX.1-2008およびWindows Vista以降で定義された
openat
および関連APIをサポートするPOSIXシステムにおいて、以前のリリースで実装されたCVE-2022-21658に対するremove_all
の保護が改善さた。以前の修正では、特定の条件で意図しないファイルが削除される可能性があった。他のシステムは脆弱なままである
GIL
- 注意 GitHub #676 Boost 1.80.0の次かその次のリリースで、サポートする最小C++の言語バージョンをC++17に破壊的変更する計画をしている
- 追加
- GitHub #500 GSoC 2020: Perona-Malik anisotropic diffusionアルゴリズムを追加
- GitHub #499 GSoC 2020: histogramクラスと関連する機能を追加
- GitHub #514 GSoC 2020: histogramのequalization機能を追加
- GitHub #515 GSoC 2020: histogramのマッチングアルゴリズムを追加
- GitHub #506 GSoC 2020: 画像を水平方向(
hstack
)または垂直方向(vstack
)にstackする機能を追加 - GitHub #516 GSoC 2020: Adaptive Histogram Equalization (AHE) アルゴリズムを追加
- GitHub #512 GSoC 2020: Standard Hough Transformおよびcircle rasterizationを追加
- GitHub #512 GSoC 2020: line rasterization向けのBresenhamのアルゴリズムを追加
- GitHub #565 GSoC 2021: 任意の角度での画像回転を追加
- GitHub #585 GSoC 2021: Jerry Van Aken氏の「効率的な楕円描画アルゴリズム」に基づく楕円のラスタライズサポートを追加
- GitHub #520
image
に変換可能なviewからの変換コンストラクタを追加 - GitHub #527
inverse(boost::gil::matrix3x2<T> m)
を追加 - GitHub #541 standard morphological transformationsを追加
- GitHub #648
for_each_pixel
にany_image
向けのオーバーロードを追加 - GitHub #529 C++17 polymorphic memory resourceの
image
クラス向けtypedefを追加
- 変更
- 破壊的変更 最小C++言語バージョンの要求をC++11からC++14に変更した。現在、GILの大部分はまだC++11コンパイラでコンパイルされているが、その状態が維持される保証はなく、少なくともCC++14をサポートしていないコンパイラは現時点ではサポートされていないと見なされる
- 破壊的変更
any_color_converted_view()
を非推奨とし、将来のリリースから削除する予定。同じ機能として代わりにcolor_converted_view()
を使用すること - 破壊的変更 GitHub #656
any_image
向けのapply_operation
を非推奨とし、将来のリリースから削除する予定。同じ機能として変わりにvariant2::visit
を使用すること - GitHub #573 numeric extensionをcoreに移動
- GitHub #636 C++17 filesystemのサポートを追加。
BOOST_GIL_IO_USE_BOOST_FILESYSTEM
マクロを定義して強制的にBoost.Filesystemを使用しない限り、自動的にstd::filesystemを検出して使用する - GitHub #655
pixel_multiply_t
をpixel_multiplies_t
、pixel_divide_t
をpixel_divides_t
に名称変更 - GitHub #653
io/dynamic_io_new.hpp
をio/detail/dynamic.hpp
に名称変更 - GitHub #653
construct_matched
関数をboost::gil::detail
名前空間に移動した。これは、他の実装の詳細としてのみ使用されていた - GitHub #679
packed_pixel
をtrivially copyableかつassignableにした - GitHub #685 非推奨のlibtiff v4.3のtypedefを、C99の固定サイズ整数で置き換えた
- 削除
- 破壊的変更 GitHub #572 GCC 5のサポートを削除
- GitHub #627 deprecated.hppを削除
- 修正
- GitHub #505 RGBからHSLへの変換を修正
- GitHub #522 RGBからsigned CMYKへの変換を修正
- GitHub #530 hsv.hppでの不要な数値キャストを削除
- GitHub #542
homogeneous_color_base
のピクセル要素を参照するデフォルトコンストラクタを修正 - GitHub #556
subchroma_image_view
でのローカルオブジェクトへの参照を返していた問題を修正 - GitHub #568 diffusion.hppに不足していたインクルードガードを追加
- GitHub #526
any_image_view<>::const_t
を修正 - GitHub #617 I/O extensionsのC++20との非互換を修正
- GitHub #628 すべてのサンプルコードがエラーなくビルドできることを確認
- GitHub #577
float32_t
チャンネルモデルをもつimage向けのconvolve_2d
を修正 - GitHub #621 1次元以外のiterable viewに対する
for_each_pixel
を修正 - GitHub #650 PNG I/Oでの
is_equal_to_sixteen
の不足していたテストを修正 - GitHub #654 2つのコンポーネントの
devicen_t
を再許可。この機能はBoost 1.72.0で削除されていた - GitHub #649 空の次元での
image
クラスのメモリリークを修正
- 謝辞
- 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
- バグ修正
- GitHub #286
stoer_wagner_min_cut
の、各mincutフェーズの最後に頂点がマージされないバグを修正 - GitHub #293
strong_components
の戻り値型の変換警告を修正 - GitHub #232
boykov_kolmogorov_max_flow
名前付きパラメータのオーバーロードのコンパイル失敗を修正
- GitHub #286
- 全般的なコード改善
- GitHub #260
astar_search_no_init_tree
内の冗長なcombine
呼び出しを削除 - GitHub #261
d_ary_heap_indirect<>::child
の冗長なchild_idx
引数を削除 - GitHub #303 traversal categoryのドキュメントを改善
- GitHub #260
- 謝辞
- Viktor Pti、Sebastian Brockmeyer、Etienne dg
Histogram
- (物理的または論理的に) 特定の条件下でサイズがゼロの軸を使用してヒストグラムを反復しようとしたときの
indexed
のセグメンテーション違反を修正 - 非推奨となっていたAPIを削除
accumulators::thread_safe
クラス:accumulators::count<T, true>
を使用することaccumulators::sum::large
メンバ関数とaccumulators::sum::small
メンバ関数:accumulators::sum::large_part
メンバ関数とaccumulators::sum::small_part
を使用すること- 型の別名
algorithm::reduce_option
:algorithm::reduce_command
を使用すること - 関数テンプレート
axis::traits::static_options
:axis::traits::get_options
を使用すること - 関数テンプレート
axis::traits::static_is_inclusive
:axis::traits::is_inclusive
を使用すること - 型の別名
indexed::range_iterator
:indexed::iterator
を使用すること - 型の別名
indexed::accessor::reference
:indexed::accessor::const_reference
を使用すること
Iterator
- GitHub #73 C++11以降向けに、
function_output_iterator
に値書き込みの完全転送サポートを追加 - 別の
function_output_iterator
を逆参照した結果をfunction_output_iterator
へ書き込んだ場合に対する保護を追加
JSON
value::at
に非const
のオーバーロードを追加- プラットフォームのエンディアンを手動で選択する機能を追加
string::subview()
のオーバーロードを追加array::erase(it)
のセグメンテーション違反を修正- libc++での
serialize
のパフォーマンス劣化を修正 - GCC 8で
std::string_view
への変換があいまいになる問題を修正 - ビッグエンディアンのプラットフォームでの構文解析を修正
- コメント後のカンマのハンドリングを修正
LEAF
- 破壊的変更
throw leaf::exception(....)
をleaf::throw_exception(....)
に修正 - サポートする稀なビルド設定でのバグを修正 (例外処理は有効だが診断は無効)
- 0の代わりに
nullptr
を使用するよう修正 - ささいな警告を修正
Locale
- C++03以下のサポートを非推奨とした。次のリリースからはC++11を要求する
- Boost.Regexと互換性のない
-sICU_LINK
の一時的な置換として-sICU_LINK_LOCALE
を提供する。-sICU_LINK_LOCALE
と-sICU_LINK
は非推奨になり、Boost.Regexと互換性があるようにICU_*_NAME
オプションに置き換えられる - 空の文字列を変換する際のICU
collator
実装内での未定義動作とアサーション失敗を修正 - 共有ライブラリ内のクラスの可視性に関連するいくつかの問題を修正(Unixのみ)
- C++20モードの互換性を修正
BOOST_USE_WINDOWS_H
との互換性を修正- インクルード不足によるビルド失敗を修正
- 多くの警告を処理または抑制し、ビルドログをきれいにした
Log
- バグ修正
- GitHub #181 IPv6アドレスがsyslogサーバーに使用されている場合に、UDPソケットベースの
syslog_backend
で誤ったローカルアドレスをバインドする問題を修正 - GCC 11.2からのlibstdc++のバグに対する回避策を追加。
max_size_decor
がformat streamで使用された場合、std::codecvt::do_length
が誤って入力バッファにアクセスし、バッファオーバーフローを引き起こしていた
- GitHub #181 IPv6アドレスがsyslogサーバーに使用されている場合に、UDPソケットベースの
- 詳細はchangelogを参照
Math
- C++11サポートを非推奨化 : 2023年からはC++14を最小C++の言語バージョンとする。これはGCC 5やMSVC 14.1を最小要求とすることを意味する
- GitHub #734
constexpr
のfmaサポートを追加 - GitHub #770 Chatterjee Correlation Coefficientのサポートを追加
- すべての分布のPDFの対数サポートを追加
- 例外無効、RTTI無効のビルドサポートを改善
- GitHub #778 1F1コーナーケースの小さなバグをいくつか修正
Multiprecision
- C++11サポートを非推奨化 : 2023年からはC++14を最小C++の言語バージョンとする。これはGCC 5やMSVC 14.1を最小要求とすることを意味する
boost/cstdfloat.hpp
とこのライブラリの衝突を修正- GCCとClangでの警告を修正
- ストリームに末尾の区切り文字があり、空白がない複合型(complex、interval rational)の入力ストリーミングを修正
- 入力が1、2、または3つである
constexpr
整数平方根を修正 - float128.hppに不足していた
#include <memory>
を追加 - あいまいさを防ぐために、
number
クラスの2引数コンストラクタを修正 - gmp.hppのゼロ除算の動作を修正し、より一貫性のあるものにした
Multi-index
- メンテナンス作業
Nowide
- ファイルを使用したbulk I/Oのパフォーマンスが大幅に向上
basic_filebuf
:fflush
が失敗したときのsync
の誤った戻り値を修正basic_filebuf
:実際には何も書き込まれなかったが、バッファがwriteモードの場合に発生する可能性があった未定義動作を修正basic_filebuf
:文字のputbackを制限(例としてpbackfail
)。バッファリングされた文字(1文字のみ)のputbackのみを許可
Optional
std::hash<boost::optional<T>>
の特殊化を追加。これは、そのような特殊化自体を定義するプログラムにとって重大な変更である
STLInterfaces
- GitHub #53 依存型
C::const_iterator
に不足していたtypename
を追加 - GitHub #54 連続的な
iterator_interface
のviewのインスタンス化での.data()
のコンセプトチェックが失敗する問題を修正 - 標準ライブラリにあるものと同様に機能する、相互運用可能なviewとview adaptorをかんたんに定義できるようにする機能を追加:
- C++23の
std::bind_back()
とstd::range_adaptor_closure
をC++23より前のバージョンで使用できるものとして追加 - view adaptorをかんたんに定義できるようにするために、テンプレート
closure
とadaptor
を追加 (P2387)
- C++23の
System
error_code
がstd::error_code
に変換されてからerror_code
に戻されるときに、可能であれば元のデータが復元されるようになった- リークチェッカーに表示される1回限りの割り当てを回避するために、
error_category
からstd::error_category
への変換を作り直した error_code
のソースの場所と対応するassign
を置き換えることを可能にするコンストラクタを追加result
に変換コンストラクタを追加
Unordered
- メジャーアップデート
- 内部実装をリファクタリングし、劇的に高速化
Hasher
とKeyEqual
をfinal
にすることを許可- ドキュメントを更新し、新たな内部データ構造のベンチマークグラフと説明を追加
Utility
- GitHub #91
string_view
/string_ref
のmax_size
が誤った戻り値を返す問題を修正 - GitHub #94
string_view::compare
がいくつかの入力で例外を送出する可能性があるため、noexcept
を削除 - GitHub #96
string_view
/string_ref
に、引数なしのsubstr
のサポートを追加 - GitHub #93 C++23から導入される
string_view::contains
メンバ関数を追加 - GitHub #92
string_view
において、remove_prefix
/remove_suffix
メンバ関数にアサーションを追加してprefix/suffixの長さが文字列ビューの長さを超えないという事前条件を適用。prefix/suffixの長さを静かにclampする以前の (アンドキュメントな) 動作は非推奨であり、将来のリリースから削除される予定
Wave
- バグ修正
Build
- B2 version 4.9.2をリリース
テスト済みコンパイラ
主要なテストコンパイラ:
- 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