本家リリースノート:
- 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_FS
CMakeオプションを追加。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