本家リリースノート:
- https://github.com/boostorg/website/blob/master/feed/history/boost_1_88_0.qbk
- http://www.boost.org/users/history/version_1_88_0.html
リポジトリは以下:
リポジトリからのビルド方法は、egtraさんのブログを参照:
新ライブラリ
なし
更新ライブラリ
- Array
- Asio
- Assert
- Beast
- Conversion
- DLL
- Geomery
- Graph
- Locale
- Lockfree
- Log
- Mp11
- MySQL
- Nowide
- PolyCollection
- SmartPtr
- Stacktreace
- TypeIndex
- Unordered
- Variant2
Array
- ドキュメントをAsciiDocに変換した(Christian Mazakas氏)
- 必要な場合に
noexcept
とconstexpr
を追加した - 廃止された関数を非推奨とした
- 廃止されたコンパイラワークアラウンドを削除した
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::span
をboost::asio::buffer
関数に渡した際に生じた曖昧なオーバーロード問題を修正した- 非推奨のbuffer機能の削除後に残っていた一部の偽のマクロ定義を削除した
- ファイルオープン時の
file_base::flags
の使用について明確化するドキュメントを追加した - 利用可能なランタイム設定オプションについての概要ドキュメントを追加した
- 完了トークンとして
deferred
がデフォルトで使用されるように、概要ドキュメントを更新した async_result
のドキュメントを更新し、現在の型要件がトレイトの特殊化部分に置かれていることを反映した
Assert
BOOST_ASSERT_HANDLER_IS_NORETURN
が定義されている場合、boost::assertion_failed
とboost::assertion_failed_msg
はBOOST_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_code
はstd::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::deque
をstd::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_t
とchar32_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
connection
とany_connection
の操作ごとのキャンセルに関する競争条件を修正。以前のバージョンでは、中間の非同期操作が完了した後、しかしそのハンドラが呼び出される前にキャンセル信号が発生した場合、信号は無視されていた。これはもはやそうではなくなった field
のコンストラクタとstd::string_view
からの代入は、C++20ではなくC++17で利用可能になった。これらの関数は、C++20でのみ利用可能な標準の機能テストマクロによってガードされていました。これらはBoost.Configと同等のものに置き換えられた- C++20のコルーチンを用いたHTTPサーバーの例を追加
- 同期コードと非同期コードのインターフェイスに関するドキュメントページを追加。これはレースコンディションを含んだ同期接続プールのスニペットを置き換える
- 他のいくつかの例とドキュメントページを改善
Nowide
- GitHub #191
getenv
をスレッドセーフにした
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: