最終更新日時:
が更新

履歴 編集

Boost 1.89.0リリースノート

本家リリースノート:

リポジトリは以下:

リポジトリからのビルド方法は、egtraさんのブログを参照:

新ライブラリ

  • Bloom
    • ブルームフィルタ。作者Joaquín M López Muñoz

更新ライブラリ

更新ツール

Any

  • C++20モジュールの初期サポート。詳細はドキュメントを参照

Asio

  • execution_contextio_contextthread_pool にアロケータコンストラクタ追加。指定アロケータを実行コンテキストに関連するオブジェクトの割り当てに使用する
  • タイマーキューのヒープに使うvectorの領域を予約するための新しい設定パラメータ "timer" / "heap_reserve" を追加
  • async_resolve において非同期アドレス解決をエミュレートする内部スレッド数を指定する新しい設定パラメータ "resolver" / "threads" を追加
  • 便利ヘッダ boost/asio.hpp から deadline_timerbasic_deadline_timertime_traits を削除
  • connect_pipe が作成する Windows 名前付きパイプが、複数の独立したプラグインDLL使用時の競合を回避するため、一意の名前を使用するようになった
  • BOOST_ASIO_CONCURRENCY_HINT_SAFEio_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を定義する必要がある場合がある
  • Windows CEのサポートは非推奨となり、将来のリリースで削除される予定
  • タイムアウト付き待機操作のサポートを追加
  • thread_pause操作を公開。これはスピンループのバックオフ対策として使用できる。PowerPCのサポートを追加し、thread_pauseでのAArch64のサポートを改善
  • BOOST_ATOMIC_NO_ATOMIC_FLAG_INITマクロ定義を削除。ライブラリが現在C++11を要求するため、BOOST_ATOMIC_FLAG_INITは常にサポートされる
  • アトミック列挙型のビット演算を有効化。これは列挙型がビットマスクを実装するために使用される場合に有用

Beast

  • 修正
    • async_baseimmediate_executor_typeを条件付きで定義
    • detail/cpu_info.hppに不足していたcstdintヘッダを追加
    • std::is_trivialの非推奨警告を修正
    • handshake_timeoutが読み取り中のクロージングハンドシェイクにも適用されるようになった
  • 改善点
    • detail/work_guard.hppnet::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_downcastpolymorphic_castをconstexprで使用できる機能を追加(C++20が必要)

Core

  • GitHub #199 仕様に従い、入力0に対してbit_ceilが1を返すよう修正
  • GitHub #190 boost::core::string_viewstd::formatのサポートを追加

Detail

  • BOOST_BITMASKによって生成される演算子が、列挙型の基底型を使用してビット演算を実装するようになった。演算子は可能な場合にnoexceptconstexprでマークされる
  • 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 #1404 バッファのパフォーマンス改善
    • GitHub #1405 ヘッダファイルでの静的変数と関数を回避
  • 破壊的変更
  • 問題の解決
    • GitHub #1221 整数座標を持つ直線的なマルチポリゴンとの差分が、切断された内部を持つ無効なポリゴンを生成する
    • GitHub #1295 交差での誤った結果(結果ポリゴンが入力ポリゴンの最大のものと等しい)
    • GitHub #1349 ポリゴンの差分が誤った結果を与える
    • GitHub #1382 バッファ操作が自己交差を作成する
    • エラーと警告のさまざまな修正

Hash2

  • Blake2アルゴリズム(blake2s_256blake2b_512)を追加
  • XXH3アルゴリズム(xxh3_128)を追加

Histogram

  • CMakeの最小バージョンとCMakeでのPython検出を更新
  • ドキュメントの改善
    • 暗黙的に変換できない複数の値型を受け入れる軸の作成例を追加
    • 次元ごとのデータが既に連続データとして利用可能な場合に、多次元ヒストグラムでhistogram::fillを効率的に使用する方法を示す
  • ユーザー定義リテラル演算子の非推奨形式を使用しないようにした
  • b2でのモジュラービルド構造のサポートを追加
  • 狭められた型に関するMSVCでの警告を修正
  • ビン内のすべての値を格納するコレクタアキュムレータを追加
  • 詳細名前空間のテストとクラスへの内部変更

Iterator

  • GitHub #92 無効なイテレータを生成する可能性があったfilter_iteratorのコピー/変換コンストラクタを修正
  • GitHub #93 C++26で非推奨となるstd::is_trivialiterator_facadeでの使用を削除
  • GitHub #61 iterator_facade::operator[]が条件付きで値またはプロキシを返すのではなく、常にプロキシを返すようになった。これにより、値型がトリビアルコピー可能かどうかに関係なく、ユーザーは演算子の結果に参照をバインドできる
  • iterator_facade::operator[]によって返されるプロキシが、参照された値への逆参照演算子の転送をサポートするようになった。これによりit[n]->foo()(*it[n]).foo()式がコンパイルできるようになる
  • iterator_facade::operator[]によって返されるプロキシが、代入演算子で完全転送を実装するようになった

JSON

  • ドキュメントを刷新
  • Rangeであるoptionaloptionalとして分類される
  • 基本クラスを持つ型に対して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

テスト済みコンパイラ

主要なテストコンパイラ:

  • 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

翻訳

Akira Takahashi