本家リリースノート:
- https://github.com/boostorg/website-v2-docs/blob/develop/release-notes/boost_1_90_0.adoc
- https://www.boost.org/releases/1.90.0/
リポジトリは以下:
リポジトリからのビルド方法は、egtraさんのブログを参照:
新ライブラリ
- OpenMethod
- C++17以上でのオープン (マルチ) メソッドのライブラリ。作者Jean-Louis Leroy氏
更新ライブラリ
- Beast
- Bloom
- Charconv
- Compat
- Container
- Conversion
- Core
- DLL
- DynamicBitset
- Filesystem
- Flyweight
- Geometry
- GIL
- Interprocess
- JSON
- LexicalCast
- Locale
- Log
- Math
- Mp11
- MQTT5
- MSM
- Multiprecision
- MySQL
- Parser
- PFR
- Random
- Redis
- SmartPtr
- Stacktrace
- StaticString
- STLInterfaces
- Test
- TypeIndex
- URL
- Uuid
- Variant2
Beast
http::parserが非標準トレーラーフィールドを拒否する挙動をデフォルトにしたhttp::basic_parserがトレーラーフィールド専用コールバックを使用するようにしたhttp::field定数を更新flat_bufferおよびmulti_bufferにおけるアロケータのムーブ/コピー代入を修正- 部分メッセージ消費時の websocket permessage-deflate エラーを修正
http::buffer_bodyが空チャンクを無視するよう修正http::basic_fields::containsメンバ関数を追加- Boost.Preprocessor および Boost.StaticAssert への依存を削除
Bloom
- パフォーマンス向上のため、バルクモードの挿入と検索を追加
block、fast_multiblock32、fast_multiblock64における分岐なしルックアップ実装によるパフォーマンス向上(とくに成功/失敗が混在する問い合わせに効果的)
Charconv
- クロスコンパイル時の CMake における quadmath 検出を修正
- 浮動小数点版の
to_charsにおいて、十分に大きいバッファが不足と誤判定される問題を修正
Compat
to_underlying.hppを追加(Braden Ganetsky による貢献)
Container
dequeを再実装。旧実装は SGI 由来のデータ構造(libstdc++ と類似)に基づくもの。主な変更点:sizeof(deque)を 10 ワードから 4 ワードへ削減(おそらくもっとも軽量な実装)sizeof(deque::iterator)を 4 ワードから 2 ワードへ削減(libc++ と MSVC に類似)- 分割構造を持つ
dequeの高速化のため、複数の内部アルゴリズムを再実装 - デフォルト設定を微調整し、64bit プラットフォームではデフォルトブロックサイズを従来の SGI 512 バイトから 1024 バイトへ変更
- 将来的な deque 系バリエーションや最適化を容易にする実装へ改善
- バグ修正
- GitHub #248:
flat_mapにおける Boost 1.80.0 以降の挿入速度低下を修正 - GitHub #254: C++20
std::erase_ifに対応 - GitHub #293: UBSAN による非アラインアクセス警告の修正
- GitHub #294: CMake におけるヘッダオンリー Boost.Container 使用オプションの追加
- GitHub #300: Clang 20 ビルド時の警告を修正
- GitHub #304: カスタムアロケータ使用時の
small_vectorの問題を修正 - GitHub #305:
-Wstrict-prototypesに関する警告を修正 - GitHub #307: MSVC 警告 C4146(unsigned negation)全箇所の修正
- GitHub #309: Boost 1.86 での
static_vectorパフォーマンス低下の修正 - GitHub #306:
__cpp_sized_deallocation未定義によるエラーの修正 - GitHub #310:
flat_mapのemplace/emplace_hintドキュメントでの型の記載ミスを修正 - GitHub #312:
std::allocator::is_always_equal非推奨への対応 - GitHub #317: Issue #209 に対する変更の一部を都市消し(コンパイラ警告関連)
- GitHub #321:
devectorがpmrアロケータで動作しない問題の修正
- GitHub #248:
Conversion
- Boost.SmartPtr への依存を削除
Core
- GitHub #205
BOOST_TEST_THROWSおよびBOOST_TEST_NO_THROW(boost/core/lightweight_test.hpp内)の実装を変更し、if/elseブロック内使用時に一部コンパイラで警告が出る問題を回避。これに伴う副作用として、マクロ呼び出し末尾のセミコロンが必須となった - GitHub #206
boost::dataおよびboost::sizeを、コンパイラが提供する場合はそれぞれstd::data、std::sizeのエイリアスとして定義。boost::とstd::の両候補が ADL により見える状況での曖昧性を解消
DLL
- GitHub #106
std::error_codeがboost::system::error_code&に渡される場合の問題を修正(Thomas Klausner氏 による修正) - GitHub #103 CMake によるインストール問題を修正(Yury Bura氏 による修正)
size変数のシャドウイングを修正
DynamicBitset
- C++20 イテレータを追加
- 基礎となるコンテナ型の選択を可能にした
- C++20 以降での
constexpr対応を追加 push_back()、pop_back()、lowest_bit()を高速化basic_stringからのコンストラクタをexplicitに変更- いくつかの依存関係を削除
push_front()、pop_front()、find_first_off()、find_next_off()を追加。また C 文字列およびbasic_string_view(C++17 以降)からのコンストラクタを追加- ストリーム挿入子が出力中に例外発生した場合、
badbitを設定するよう変更 - ストリーム抽出演算子が内部
vector由来の例外を再送出するよう変更 - ドキュメントを MrDocs と Antora に移行
Filesystem
- GitHub #338
permissions操作の成功時に渡されたerror_codeをクリアするよう修正 - GitHub #334 Windows において、Samba 3.0.2 の共有で SMB 署名が必須の場合に
directory_iteratorのコンストラクタが “Invalid Signature” エラーで失敗する問題へ回避策を追加
Flyweight
- https://wg21.link/p0522r0 Clang 19 以降でのコンパイルエラーを P0522R0 対応により修正
Geometry
主な改善
- GitHub #1409: polyhedral surfacesに対する
is_validアルゴリズムを実装
改善点
- GitHub #1413:
convertの対応組み合わせを追加 - GitHub #1417: ドキュメント改善
- GitHub #1423:
traverseにおけるスタックオーバーフロー回避
解決した問題
- GitHub #1006:
bg::projections::detail::epsg_to_parametersによる過剰なコンパイル時間の問題を修正 - その他、複数のエラーおよび警告の修正
GIL
- 改善
- GitHub #773: ドキュメントの改善(ヒストグラムおよび誤字)、最新 Sphinx 版でのビルドを修正
- 解決した問題
- GitHub #778: Clang でのビルドを修正
Interprocess
- ドキュメントの細かな修正
- バグ修正
- GitHub #245: UBSan による実行時エラー(
boost::interprocess::mode_tのロード)を修正 - GitHub #269: ドキュメントの軽微な修正およびテンプレートパラメータ名を変更
- GitHub #245: UBSan による実行時エラー(
JSON
- Boost.Align と Boost.StaticAssert への依存を削除
- より高速なハッシュアルゴリズムへ切り替え
LexicalCast
- 浮動小数点の特殊値から整数・
boolへの変換に対するテストと修正を追加。floatからboolへのlexical_cast時に発生する警告 C4804 を修正 - GitHub #87 Boost.TypeTraits への依存を削除。主要部分を実装した Romain Geissler 氏に感謝。
- GitHub #85 暗黙変換から明示的変換への切り替えによるコンパイラ警告を回避。この修正を行った bmagistro 氏に感謝。
- GitHub #86 ドキュメントの誤りを修正。この修正を行った ivanpanch 氏に感謝。
unsigned shortからwstringへの変換においてwchar_t組み込み型が存在しない場合の退行を修正
Locale
- GitHub #266 B2 ビルドファイルを修正し、静的ライブラリのみ要求された場合に動的版 Boost ライブラリをビルドしないよう変更
- ISO8859-1/ISO8859-8 エンコーディング要求時、対応する Windows ロケールが ISO8859 をサポートしない場合に "C" ロケールではなく Windows コードページ 1252/1255 を利用可能に変更
- Cygwin の stdlib が一部長い UTF-8 シーケンスを UTF-16 へ変換する際の問題に対する回避策を有効化
Log
value_refのvisit処理における最適化漏れを修正- GitHub #252
text_file_backendにおけるログファイルローテーションの無駄な長いループを修正。ファイル名パターンにカウンタが含まれず、rotation_sizeを超えた場合に毎回同じファイルを開き続ける問題 text_file_backendにおけるファイルサイズチェックの整数オーバーフロー耐性を強化
Math
- 新サブライブラリ「逆モード自動微分(Reverse-Mode Automatic Differentiation)」を追加
- 新定数
log_piを追加 logit、logistic_sigmoid、logistic分布に適切なプロモーションポリシーを追加- 特殊関数に対する多数の修正およびエッジケース対応
Mp11
- 固定サイズリストで
mp_reverse_foldが動作するよう更新
MQTT5
- Boost.Spirit への依存を削除
- GitHub #38 自動再接続が限定的なホワイトリストではなく 任意のトランスポート層エラー を契機に発動するよう変更
- Logger インタフェースに
at_transport_errorコールバックを追加
MSM
- ドキュメントを刷新し、Antora を使用するようにした
- 新バックエンド
backmp11を追加。大幅なコンパイル時間短縮、API の再設計、新機能の追加。{cpp}17 が必要(詳細はドキュメントに記載) - GitHub #87:
boost::anyが Kleene イベントとして動作しなくなった問題を修正
Multiprecision
- 新しい
cpp_double_fp_backendのテストとカバレッジを大幅に強化
MySQL
- Clang 4.0 未満のサポートを非推奨化。これらのコンパイラは動作する可能性はあるが、CI ではテストされない方針へ変更
- MySQL 9.x との互換性を保証するテストを追加
- Clang 20 まで、GCC 15 までの互換性を保証するテストを追加
Parser
- GitHub #284 ムーブ専用 Callable をクロージャと併用した際の不正状態を修正
- GitHub #250
GlobalStateのパーサテンプレートパラメータにおけるconst不整合を修正 - GitHub #268 permutation parser使用時の一部ケースでの不正状態を修正
- GitHub #279 シーケンスパース時に、後続パーサが前の属性を上書きしてしまう問題を修正
- GitHub #279, GitHub #285 opt パーサが失敗しても
std::optionalに値が残る可能性があった問題を修正 - GitHub #245, GitHub #254, GitHub #255, GitHub #256 多数の実行時最適化
- GitHub #250 コンパイル時間とコードサイズの適度な削減
- GitHub #275
transformをconstexpr化 - GitHub #272
moveとforwardの扱いに関する警告緩和 - GitHub #278
if_ディレクティブの属性型に関するドキュメント誤記を修正 - GitHub #271 多数のドキュメント誤字修正
PFR
- GitHub #194 C++26 の分解束縛をパックに展開する新実装を追加。
- 既知の制限の大半を解消し、テンプレートインスタンス過多を回避
- 新実装は
BOOST_PFR_USE_CPP26マクロで有効/無効を切替可能 - PR を提出してくれた Jean-Michaël Celerier 氏に感謝
- CMake に関する複数の修正。PR を提出してくれた Alexander Grund 氏に感謝
Random
xoshiro系生成器のSeedSeqからの構築に関する問題を修正
Redis
重要な変更(キャンセル動作)
- GitHub #310, GitHub #226
async_exec()における操作単位のキャンセルサポートを改善asio::cancel_afterをサポートし、任意タイミングでキャンセル可能になった- キャンセルが他のリクエストへ干渉しない設計へ変更
- GitHub #329, GitHub #334
request::config内の以下のフラグを非推奨化cancel_on_connection_lostcancel_if_not_connected- 代替として
asio::cancel_afterの利用を推奨cancel_on_connection_lostのデフォルトをfalseに変更
- GitHub #321
cancelにoperation::resolve,connect,ssl_handshake,reconnection,health_checkを渡す方法を非推奨化。今後はcancel(operation::run)を使用すること - GitHub #319
async_run()に操作単位のキャンセルを追加
その他の機能追加/変更
- GitHub #302, GitHub #303
config::setupによるカスタムセットアップリクエストをサポート- ライブラリ生成の
HELLOを任意のリクエストに置換可能
- ライブラリ生成の
- GitHub #305
request::config::hello_with_priorityを非推奨化- 代替として
config::setupを推奨
- 代替として
- GitHub #296 Valkey との長期互換性を保証
- GitHub #341
request::append()を追加(リクエスト連結機能) - GitHub #104 ヘルスチェッカのアルゴリズムを改善
- 高負荷時の誤検知を回避
PINGはアイドル時のみ発行
- GitHub #283
config::read_buffer_append_sizeを追加(読み込みバッファ拡張制御) - GitHub #311
usage::bytes_rotatedを追加(サーバー読み取り時のコピー量測定)
バグ修正
- GitHub #287 中間でエラーを含むレスポンスを
generic_responseにパースした際の例外発生を修正 - GitHub #318
connectionおよびbasic_connectionのcancel()における競合状態を修正- キャンセルが無視される可能性を解消
-
GitHub #298 空パスワード+非デフォルトユーザー使用時の認証問題を修正
-
GitHub #290
HELLOエラー後の再接続時にHELLOが失敗し続ける問題を修正 - GitHub #297
HELLOエラーが正しくログ出力されない問題を修正
SmartPtr
- 以下の非推奨マクロを削除
BOOST_SP_ENABLE_DEBUG_HOOKSBOOST_SP_USE_STD_ALLOCATORBOOST_SP_USE_QUICK_ALLOCATOR
<boost/smart_ptr/detail/quick_allocator.hpp>を非推奨化し、将来のリリースで削除予定BOOST_NO_CXX11_HDR_ATOMICを定義する構成を非サポート化- C++11 準拠の
<atomic>を必須化
- C++11 準拠の
- 以下の非推奨マクロを無効化
BOOST_AC_USE_SPINLOCKBOOST_AC_USE_PTHREADSBOOST_SP_USE_SPINLOCKBOOST_SP_USE_PTHREADS
atomic_count、sp_counted_base、spinlockのプラットフォーム別実装を削除BOOST_NO_CXX11_HDR_MUTEXを定義する構成を非サポート化- C++11 準拠の
<mutex>を必須化
- C++11 準拠の
boost/smart_ptr/detail/内の未使用ヘッダを削除
Stacktrace
- include 漏れを修正。修正を行った Orgad Shaneh 氏に感謝
libbacktrace_impls.hppの URL を修正。Jonathan Wakely 氏に感謝
StaticString
to_static_[w]string()を C++26 のstd::to_[w]string()と整合化to_static_[w]string()内の追加バッファ使用を削除resize_and_overwrite()を追加
STLInterfaces
- GitHub #80 GCC 14 で発生する不正状態を修正
move専用 Callable をクロージャと併用した際の不正状態を修正
Test
- Windows Clang におけるいくつかの警告を修正
TypeIndex
- Boost.Core への依存を削除
- CMake でもすべてのテストを実行。修正と支援をしてくれた Alexander Grund 氏に感謝
URL
segments_viewおよびsegments_encoded_viewに定数時間のイテレータベースsubviewコンストラクタを追加- zone-id セッタを追加(例: IPv6 link-local アドレス)
- host セッタが zone-id を受け取り、伝播するよう変更
- GitHub #920
resolveが参照元フラグメントを常に正しく反映するよう修正 encoded_host_addressのアサーションが zone-id を考慮するよう修正- GitGitHub #934
BOOST_STATIC_ASSERTをBOOST_CORE_STATIC_ASSERTに置換 - GitHub #939 セグメント
subviewの 絶対意味論を保持するようリファクタリング
Uuid
string_generatorを C++14 以上でconstexpr化boost/uuid/constants.hppを追加boost/uuid/uuid_generators.hppをboost/uuid/generators.hppに改名- 旧名も互換性のため維持
Variant2
- より多くの関数を
constexpr化し、~variantも対象に追加- C++20 以前では影響はなかったが、C++20 以降では意味を持つ変更
テスト済みコンパイラ
主要なテストコンパイラ:
- 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