本家リリースノート:
- 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において、
*atAPIをサポートしていない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