最終更新日時:
が更新

履歴 編集

Boost 1.88.0リリースノート

本家リリースノート:

リポジトリは以下:

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

新ライブラリ

なし

更新ライブラリ

Array

  • ドキュメントをAsciiDocに変換した(Christian Mazakas氏)
  • 必要な場合にnoexceptconstexprを追加した
  • 廃止された関数を非推奨とした
  • 廃止されたコンパイラワークアラウンドを削除した
  • array<T, 0>::begin(), cbegin(), end(), cend()nullptrを返すように変更し、constexprを有効にした。これはstd::arrayの挙動と一致する
  • ローカルのhash_valueオーバーロードを削除した。boost::hashは配列のような型をネイティブにサポートする
  • array<T, 0>は現在、={}で初期化することができる
  • operator<=>を追加した
  • to_arrayを追加した

Asio

  • local::basic_endpointメンバ関数のいくつかにnoexcept修飾子を追加し、ip::basic_endpointと整合性を持たせた
  • boost::asio::configクラスの整数値の処理を修正した
  • experimental::ranged_parallel_groupでの「ムーブ後の使用エラー (use-after-move error)」を修正した
  • experimental::promiseの実装における誤ったデフォルトテンプレート引数を修正した
  • io_uring実装を修正し、フォーク後に内部descriptorをリアクターに再登録しようとすることがないようにした
  • thread_poolのデフォルトコンストラクタで初期化されていないメンバを修正した
  • std::spanboost::asio::buffer関数に渡した際に生じた曖昧なオーバーロード問題を修正した
  • 非推奨のbuffer機能の削除後に残っていた一部の偽のマクロ定義を削除した
  • ファイルオープン時のfile_base::flagsの使用について明確化するドキュメントを追加した
  • 利用可能なランタイム設定オプションについての概要ドキュメントを追加した
  • 完了トークンとしてdeferredがデフォルトで使用されるように、概要ドキュメントを更新した
  • async_resultのドキュメントを更新し、現在の型要件がトレイトの特殊化部分に置かれていることを反映した

Assert

  • BOOST_ASSERT_HANDLER_IS_NORETURNが定義されている場合、boost::assertion_failedboost::assertion_failed_msgBOOST_NORETURNとして宣言される

Beast

  • 修正
    • iequals関数での範囲外アクセスを修正
  • 改善点
    • SSLの例をアップデートし、ピア証明書のホスト名を検証するよう修正
    • CMakeListsをリファクタリング
    • 例からBoost.Scopeへの依存関係を削除
    • WebSocketのピアへのpingがアクティビティとしてカウントされるよう修正
  • ドキュメンテーション
    • Unixドメインソケットの新しい例を追加
    • ドキュメントにSSL/TLS証明書セクションを追加
    • websocket::stream::async_closeのドキュメントを改善
  • 謝辞
    • Morten M. Neergaard氏

Conversion

  • サンプルコードとライブラリコードに、現代的なC++を使用するようにした

DLL

  • GitHub #82 boost::dll::shared_libraryへの native_handle_tからのコンストラクタを追加 (Tiago Matos氏に感謝)
  • Spirit, SmartPtr, Move, TypeTraits, Functionなど他のBoostライブラリへの依存関係を排除で、DLLのコンパイルが軽量化した
  • APIでのstd::error_code&boost::system::error_code&の代わりに使われるようになった。boost::system::error_codestd::error_code&に変換可能なため破壊的な変更ではない
  • boost::dll:import_*関数がstd::shared_ptrを返すように変更。古い挙動を復元するためにBOOST_DLL_USE_BOOST_SHARED_PTRを定義した。ただし、このマクロは今後のリリースで削除される予定
  • サンプルとライブラリコードで現代的なC++を使用
  • boost::dll::library_infoが壊れたバイナリの場合は常に例外を送出するよう修正。ドキュメントを更新してテストを追加
  • RTLD_NODELETEが欠けている理由と.release()メソッドがない理由をFAQで説明を追加。可能なワークアラウンドを提供する
  • ライブラリのビルドと使用に関する情報を更新。CMakeターゲットはプラットフォームに必要な場合に「-ldl」でリンクすること
  • Windows OSの長いパスに対するdetail::path_from_handle実装を修正
  • ドキュメントでboost/dll/smart_*部分が実験的で未完成であることを強調
  • boost/dll/smart_*部分の多数のマングリング問題を修正

Geometry

  • 改善点
    • GitHub #1370 球面正規化の半周期チェックを緩和
    • GitHub #1368 rtreeのspatial述語でのumbrella戦略をパス
    • GitHub #1367 横断の改善
    • GitHub #1361 整数座標を持つランダムグリッド上での集合操作をテスト
    • 複数のテストケースを追加
    • コードの一部でtypedefの代わりにusingを使用するよう修正
  • 問題の解決
    • GitHub #1364 複数の戦略を修正 (getterの追加、コンパイルエラーと警告の修正)
    • GitHub #629 座標変換と未使用パラメータの警告を避ける
    • エラーと警告の各種修正

Graph

  • バグ修正
    • maximum_weighted_matchingの実装を置換し、複数の問題を解決
    • named_graphが使用される前に初期化されているよう事前条件を設定
    • is_straight_line_drawingのカスタムジオメトリコードをBoost.Geometryに置換し、非常に小さい角度での結果が正しくなるように修正
    • undirected_dfsでのfinish_edgeへの不正なコールバックを修正
  • パフォーマンス向上
    • adjacency_list: vectorベースのストレージ内のadd_vertexからresize/reserveへの不必要な呼び出しを削除。速度計測では、グラフ構築の時間が10%改善した
    • lengauer_tarjan_dominator_tree: std::dequestd::vectorに置換し、大きなグラフでは約40%の改善を達成
  • 一般的な改良点
    • いくつかのBoostユーティリティの使用をC++14言語機能で置き換え
    • 例をC++14言語特性で現代化
    • ドキュメンテーションとビルドシステムのさまざまな修正
    • vertex_by_propertyがミュータブルなグラフを必要としなくなった
    • cycle_cancelingとClang 19のコンパイル問題を修正

Locale

  • 必要なICUバージョンを4.8.1以上に引き上げ
  • ICU 50.1のサポートを終了
  • GitHub #241 浮動小数点形式の入力文字列での整数のパースを修正
  • GitHub #246 ICUバックエンドでのuint64_t値のパースとフォーマットをサポート
  • より広いプラットフォームでのchar8_tサポート

Lockfree

  • 新たなspsc_valueを追加、トリプルバッファに基づくロックフリーのsingle-producer / single-consumer値

Log

  • C++20以降のモードでstd::codecvt<char16_t>std::codecvt<char32_t>のロケールのファセットの使用を無効化、これらはC++20で非推奨となったため、これはchar16_tchar32_tへの・からの文字コード変換がC++20以降で利用できなくなることを意味する
  • GitHub #241 CMakeとMinGW-w64を使用した時のビルド問題を修正
  • GitHub #245 text_file_backendが既存のファイルに追記するように設定された場合、アクティブに書き込まれたファイル名パターンにカウンタプレースホルダーがなく、ターゲットファイル名パターンにはあった場合、およびログファイルが直接ターゲットストレージに書き込まれた場合に使用された不正なファイルカウンタを修正

Mp11

  • 非整数値に対するmp_from_sequenceを修正 (1.83.0でオフセットサポートの影響で誤って壊れていた)

MySQL

  • GitHub #395 connection_poolは、セッション確立中の多くの接続が存在する場合でも、正しくリサイズするようになった。古いアルゴリズムでは、特定の条件下でプールが期待通りにリサイズされない可能性があった
  • GitHub #408 any_connection::connection_idを追加。この関数は接続のIDを取得し、その後、KILL SQLステートメントでクエリをキャンセルするために使用できる。この関数は公式のC APIのmysql_thread_idと等価である
  • GitHub #405 別の操作が進行中のconnectionまたはany_connectionで非同期操作を開始しようとすると、未定義の動作を引き起こすことがなくなった。代わりにclient_errc::operation_in_progressで失敗する
  • GitHub #448 connectionまたはany_connectionがマルチファンクション操作に従事している間に操作を開始しようとすると、潜在的に危険なパケットの不一致が発生することがなくなった。代わりにclient_errc::engaged_in_multi_functionで失敗する
  • GitHub #450 セッションが確立していない接続を使用しようとするときの診断を改善。操作はclient_errc::not_connectedで失敗する
  • GitHub #199 connectionany_connectionの操作ごとのキャンセルに関する競争条件を修正。以前のバージョンでは、中間の非同期操作が完了した後、しかしそのハンドラが呼び出される前にキャンセル信号が発生した場合、信号は無視されていた。これはもはやそうではなくなった
  • fieldのコンストラクタとstd::string_viewからの代入は、C++20ではなくC++17で利用可能になった。これらの関数は、C++20でのみ利用可能な標準の機能テストマクロによってガードされていました。これらはBoost.Configと同等のものに置き換えられた
  • C++20のコルーチンを用いたHTTPサーバーの例を追加
  • 同期コードと非同期コードのインターフェイスに関するドキュメントページを追加。これはレースコンディションを含んだ同期接続プールのスニペットを置き換える
  • 他のいくつかの例とドキュメントページを改善

Nowide

PolyCollection

  • boost::variant_collectionを追加、std::vector<std::variant<...>>と似た振る舞いをする閉じた多態コレクション

SmartPtr

  • ワイドストリーム用のoperator<<を修正 (偶然1.87.0で壊れてしまっていた)

Stacktrace

  • GitHub #198 MSVC実装で完全なモジュールパスを決定するためにGetModuleNamesを使用するよう修正 (Daniel Krügler氏に多大なる感謝)
  • GitHub #200 ベースアドレスを知らなくても後でアドレスをデコードできるように、相対アドレスを印字した。このロジックはBOOST_STACKTRACE_DISABLE_OFFSET_ADDR_BASEを定義することで無効化できる (Maciej Czarnecki氏に多大なる感謝)
  • GitHub #202 すべてのstacktraceライブラリをB2機能として公開。ビルドの制御をより良くし、どのライブラリがビルドされるかの明確な情報を提供。詳細は「Configuration and Build」セクションを参照 (Uilian Ries氏に多大なる感謝)
  • MinGWでのstacktrace_from_exceptionビルドを修正 (crhilton氏に感謝)

TypeIndex

  • 1.84で導入され、ライブラリをclang-20でビルドできないようにしたUBを修正

Unordered

  • ドキュメンテーションをAntoraを使用したマルチページフォーマットに移行

Variant2

  • インデックスに適切な最小の符号なし型を使用

テスト済みコンパイラ

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

  • Linux:
    • Clang:
    • GCC:
    • Intel:
    • QCC:
  • OS X:
    • Apple Clang:
    • GCC:
    • Intel:
  • Windows:
    • GCC, mingw:
    • Visual C++:
  • FreeBSD:
    • GCC:
  • QNX:
    • QCC:

追加で含まれるテストコンパイラ:

  • Linux:
    • Clang:
    • GCC:
    • GCC, C++11:
    • GCC, C++14:
    • Intel:
    • Intel, C++11:
  • OS X:
    • Apple Clang:
    • Apple Clang, C++11:
    • Apple Clang, C++14:
    • Clang:
    • Clang, C++11:
    • GCC:
    • Intel:
  • Windows:
    • GCC, mingw:
    • Visual C++:
  • FreeBSD:
    • GCC:
  • QNX:
    • QCC:

翻訳

Akira Takahashi