本家リリースノート:
- https://github.com/boostorg/website/blob/master/feed/history/boost_1_89_0.qbk
- http://www.boost.org/users/history/version_1_89_0.html
リポジトリは以下:
リポジトリからのビルド方法は、egtraさんのブログを参照:
新ライブラリ
- Bloom
- ブルームフィルタ。作者Joaquín M López Muñoz
更新ライブラリ
- Any
- Asio
- Atomic
- Beast
- Charconv
- Cobalt
- Compat
- ContainerHash
- Conversion
- Core
- Detail
- DLL
- Filesystem
- Geometry
- Hash2
- Histogram
- Iterator
- JSON
- Log
- Math
- MQTT5
- Multiprecision
- MySQL
- PFR
- Process
- Random
- TypeIndex
- Unordered
更新ツール
Any
- C++20モジュールの初期サポート。詳細はドキュメントを参照
Asio
execution_context、io_context、thread_poolにアロケータコンストラクタ追加。指定アロケータを実行コンテキストに関連するオブジェクトの割り当てに使用する- タイマーキューのヒープに使う
vectorの領域を予約するための新しい設定パラメータ"timer"/"heap_reserve"を追加 async_resolveにおいて非同期アドレス解決をエミュレートする内部スレッド数を指定する新しい設定パラメータ"resolver"/"threads"を追加- 便利ヘッダ
boost/asio.hppからdeadline_timer、basic_deadline_timer、time_traitsを削除 connect_pipeが作成する Windows 名前付きパイプが、複数の独立したプラグインDLL使用時の競合を回避するため、一意の名前を使用するようになったBOOST_ASIO_CONCURRENCY_HINT_SAFEをio_contextのデフォルトコンストラクタと整合性を持たせるよう変更BOOST_ASIO_CONCURRENCY_HINT_UNSAFE_IOのドキュメント修正、登録されたロックが有効なままであることを反映した- 任意の依存関係のための b2 および cmake ビルドターゲットを追加
boost::asio::detail::throw_exceptionに[[noreturn]]属性を追加co_spawnを修正し、完了ハンドラの非再入呼び出しに対する非同期操作要件を遵守させるようにしたbasic_signal_setの非同期シグナル安全性に関するドキュメント注記を追加- 異なるプラットフォームでの各種小規模コンパイルエラーを修正
- 詳細はRevision Historyを参照
Atomic
- x86、AArch32、AArch64、PPCバックエンドのasmベースにTSANインストルメンテーションを追加。これにより、スレッド同期にBoost.Atomicを使用するコードのTSANの誤検出エラーが抑制される
- Boost 1.84でのアナウンスに従い、Windows 10より古いWindowsバージョンのサポートを削除
- MinGW-w64ユーザーへの注意。MinGW-w64のWindows SDKヘッダはデフォルトで
_WIN32_WINNTを古いWindowsバージョンに定義するため、Boost.Atomicおよびそれを使用するコードをコンパイルする際に_WIN32_WINNT=0x0A00またはBOOST_USE_WINAPI_VERSION=0x0A00を定義する必要がある場合がある
- MinGW-w64ユーザーへの注意。MinGW-w64のWindows SDKヘッダはデフォルトで
- Windows CEのサポートは非推奨となり、将来のリリースで削除される予定
- タイムアウト付き待機操作のサポートを追加
thread_pause操作を公開。これはスピンループのバックオフ対策として使用できる。PowerPCのサポートを追加し、thread_pauseでのAArch64のサポートを改善BOOST_ATOMIC_NO_ATOMIC_FLAG_INITマクロ定義を削除。ライブラリが現在C++11を要求するため、BOOST_ATOMIC_FLAG_INITは常にサポートされる- アトミック列挙型のビット演算を有効化。これは列挙型がビットマスクを実装するために使用される場合に有用
Beast
- 修正
async_baseでimmediate_executor_typeを条件付きで定義detail/cpu_info.hppに不足していたcstdintヘッダを追加std::is_trivialの非推奨警告を修正handshake_timeoutが読み取り中のクロージングハンドシェイクにも適用されるようになった
- 改善点
detail/work_guard.hppをnet::executor_work_guardに置き換え- MinGWでのテストビルドの移植性の問題を修正
- ドキュメンテーション
- ドキュメントから移動されたセクションを削除
- テストから余分なログメッセージを削除
- 謝辞
- yliu1021氏
Charconv
- 整数型の
from_charsでのパフォーマンス低下を修正 - 浮動小数点型の
to_charsで指定された精度での丸めと末尾の小数点のバグを修正
Cobalt
- ジェネレータとプロミスのムーブ代入を修正
- 内部例外を修正
- IOライブラリを追加。Cobalt.ioはコンパイル済みライブラリとしてasioの大部分のサブセットを提供
Compat
move_only_function.hppを追加
ContainerHash
hash_is_avalanchingトレイトクラスを追加
Conversion
polymorphic_downcastとpolymorphic_castをconstexprで使用できる機能を追加(C++20が必要)
Core
- GitHub #199 仕様に従い、入力0に対して
bit_ceilが1を返すよう修正 - GitHub #190
boost::core::string_viewにstd::formatのサポートを追加
Detail
BOOST_BITMASKによって生成される演算子が、列挙型の基底型を使用してビット演算を実装するようになった。演算子は可能な場合にnoexceptとconstexprでマークされるBOOST_BITMASKによって生成される関数bitmask_setは非推奨としてマークされた。将来のリリースでは、BOOST_BITMASKはこの関数の生成を停止する。ユーザーは値がゼロかどうかをテストするために二重否定(!!mask)を使用することを推奨する。これはBoost.Filesystemで定義された列挙型などに影響する
DLL
- Cygwinでのコンパイルとエクスポートを修正。PR提出してくれたLuohao Wang氏に多大なる感謝!
- FreeBSDでのビルドを修正。バグ報告してくれたash氏に感謝!
- プリプロセッサオプションに合わせて
BOOST_DLL_USE_STD_FSCMakeオプションを追加。PR提出してくれたYury Bura氏に感謝!
Filesystem
- GitHub #335
path::appendで潜在的に無関係なオブジェクトへのポインタを比較することに関するASAN警告を修正
Geometry
- 主要な改善点
- GitHub #1369 トラバーサルの書き直し
- GitHub #1402 ジオメトリ多面体サーフェスを追加
- 改善点
- GitHub #1404 バッファのパフォーマンス改善
- GitHub #1405 ヘッダファイルでの静的変数と関数を回避
- 破壊的変更
- GitHub #1401 非推奨のヘッダを削除
- 問題の解決
- GitHub #1221 整数座標を持つ直線的なマルチポリゴンとの差分が、切断された内部を持つ無効なポリゴンを生成する
- GitHub #1295 交差での誤った結果(結果ポリゴンが入力ポリゴンの最大のものと等しい)
- GitHub #1349 ポリゴンの差分が誤った結果を与える
- GitHub #1382 バッファ操作が自己交差を作成する
- エラーと警告のさまざまな修正
Hash2
- Blake2アルゴリズム(
blake2s_256、blake2b_512)を追加 - XXH3アルゴリズム(
xxh3_128)を追加
Histogram
- CMakeの最小バージョンとCMakeでのPython検出を更新
- ドキュメントの改善
- 暗黙的に変換できない複数の値型を受け入れる軸の作成例を追加
- 次元ごとのデータが既に連続データとして利用可能な場合に、多次元ヒストグラムで
histogram::fillを効率的に使用する方法を示す
- ユーザー定義リテラル演算子の非推奨形式を使用しないようにした
- b2でのモジュラービルド構造のサポートを追加
- 狭められた型に関するMSVCでの警告を修正
- ビン内のすべての値を格納するコレクタアキュムレータを追加
- 詳細名前空間のテストとクラスへの内部変更
Iterator
- GitHub #92 無効なイテレータを生成する可能性があった
filter_iteratorのコピー/変換コンストラクタを修正 - GitHub #93 C++26で非推奨となる
std::is_trivialのiterator_facadeでの使用を削除 - GitHub #61
iterator_facade::operator[]が条件付きで値またはプロキシを返すのではなく、常にプロキシを返すようになった。これにより、値型がトリビアルコピー可能かどうかに関係なく、ユーザーは演算子の結果に参照をバインドできる iterator_facade::operator[]によって返されるプロキシが、参照された値への逆参照演算子の転送をサポートするようになった。これによりit[n]->foo()と(*it[n]).foo()式がコンパイルできるようになるiterator_facade::operator[]によって返されるプロキシが、代入演算子で完全転送を実装するようになった
JSON
- ドキュメントを刷新
- Rangeである
optionalはoptionalとして分類される - 基本クラスを持つ型に対してDescribedクラスサポートが有効化される
Log
BOOST_LOG_WITHOUT_ASIO設定マクロのサポートを追加。これはBoost.Asioへの依存関係を削除し、関連する機能を無効にするために使用できる- GitHub #246
text_file_backendでログファイル名を構成する際に、ファイルカウンタのロケール非依存のフォーマットを使用。これによりfile_collector::scan_for_filesでの後続のファイル名解析の失敗を修正 - GitHub #195 フィルタリング式にユーザー定義の関数オブジェクトを注入することを簡素化する新しい
wrap_filterユーティリティを追加
Math
- ビルドに明示的なC++14の
<type_traits>とconstexpr要件を追加 - さまざまなプラットフォームでのGPUサポートの修正を収集
x = 0での下側不完全ガンマ関数を修正- jSOアルゴリズムでの外部アーカイブエラーを修正
- ibetaでの数値アンダーフローを修正
- 大きなaとbの値での逆ibetaを修正
- C++26で安全にするための可変引数関数を修正
MQTT5
- GitHub #31 ブローカーリストでのURIパスの不正な解析を修正
- GitHub #33 デフォルトの最大パケットサイズが
CONNECTパケットで明示的に設定されるようになった - GitHub #33 大きな最大パケットサイズ値での高CPU使用率を修正
Multiprecision
- メジャーアップデート
- 新しいバックエンドタイプを追加:
cpp_double_fp_backend - Boost.Serializationとの名前空間の衝突を修正
MySQL
- GitHub #313
caching_sha2_password認証プラグインがTLSなしで使用できるようになった。これはMySQL 8以降のデフォルトである。このプラグインを使用しようとするプレーンテキスト接続はclient_errc::auth_plugin_requires_sslで失敗しなくなった - GitHub #468, GitHub #488 ターゲットデータベースが存在せず、
caching_sha2_passwordが使用されている場合の接続確立中にclient_errc::incomplete_messageが返される問題を修正。適切なサーバー生成の診断が返されるようになった - GitHub #469 ハンドシェイクアルゴリズムがプロトコル違反に対してより回復力を持つようになった
- GitHub #475 不足しているインクルードによるgcc-15でのビルド失敗を修正。PR提出してくれたhhoffstaette氏に感謝
- 公式ドライバに対するベンチマークを追加
- GitHub #461
metadata表現を最適化し、構築が高速になり、メモリ使用量が少なくなった
PFR
- 新しい推奨されるBoostプラクティスに従ってC++20モジュールを書き直し。詳細はドキュメントを参照
- 最新のclangコンパイラでのC++26コンパイルを修正。レポートしてくれたValery Mironov氏に感謝!
- 「長さゼロの配列」コンパイラ拡張を使用する型をサポート
- タイプミスを修正。問題を強調してくれたEgor氏に感謝!
boost::pfr::names_as_array(empty_struct{})でstd::array<std::string_view, 0>型を返すようにし、for (std::string_view name : boost::pfr::names_as_array(empty_struct{}))のコンパイルを可能にした。バグレポートしてくれたsabudilovskiy氏に多大なる感謝!
Process
- v1の
process.hppインクルードをエミュレートするv1.hppを追加 - Windowsパスエスケープの修正
- terminateとasync_waitが終了コード値の損失につながる終了コードの問題を修正
Random
beta_distributionによってNANが生成される問題を修正beta_distribution::operator()のパフォーマンスを改善
TypeIndex
- C++20モジュールの初期サポート。詳細はドキュメントを参照
Unordered
- 非推奨の
boost::unordered::hash_is_avalanchingは現在、<boost/container_hash/hash_is_avalanching.hpp>のboost::hash_is_avalanchingのusing宣言となった。代わりにそのヘッダを直接使用すること。<boost/unordered/hash_traits.hpp>は将来削除される予定 - オープンアドレシングコンテナに
pull(const_iterator)を追加。この操作により、ムーブ構築による要素の効率的な削除と取得が可能になる
Build
- B2バージョン5.3.2のリリースを含む
テスト済みコンパイラ
主要なテストコンパイラ:
- Linux:
- Clang, C++03: 3.4, 3.5, 3.6, 3.7, 3.8, 3.9, 12.0.0, 13.0.0, 14.0.0, 15.0.0
- Clang, C++11: 3.4, 11.0.0, 13.0.0, 14.0.0, 15.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, 15.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, 15.0.0
- Clang, C++20: 11.0.0, 12.0.0, 13.0.0, 14.0.0, 15.0.0
- GCC, C++03: 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, C++03: 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