本家リリースノート:
- https://github.com/boostorg/website/blob/master/feed/history/boost_1_84_0.qbk
- http://www.boost.org/users/history/version_1_84_0.html
リポジトリは以下:
リポジトリからのビルド方法は、egtraさんのブログを参照:
デフォルトのターゲットWindowsバージョンを更新
Windows SDKコンポーネントを定義するために他のBoostライブラリが内部的に使用するライブラリであるBoost.WinAPIが更新され、可能な限りデフォルトでWindows 10 APIをターゲットにするようになった。これは、BoostライブラリがデフォルトでWindows 10をターゲットとし、古いWindowsバージョンでは動作しない可能性があることを意味する。これには、Boostによって配布されるビルド済みバイナリも含まれる。
影響を受けるライブラリは以下の通り:
- Boost.Atomic
- Boost.Beast
- Boost.Chrono
- Boost.DateTime
- Boost.DLL
- Boost.Filesystem
- Boost.Interprocess
- Boost.Log
- Boost.Pool
- Boost.Process
- Boost.System
- Boost.Stacktrace
- Boost.Thread
- Boost.UUID
これらに依存するライブラリも同様である。
ユーザーは、Boostをビルドして使用する際に、BOOST_USE_WINAPI_VERSIONまたは_WIN32_WINNTを必要なバージョン番号に定義することで、デフォルトを変更することができる。例として、Windows 7をターゲットにBoostをビルドするには、次のようなコマンドラインを使用することができる:
b2 variant=release define=BOOST_USE_WINAPI_VERSION=0x0601 stage
ただし、個々のライブラリが、サポートされるWindowsの最小バージョンについて独自の要件を持っている可能性があることに注意すること。
Windows APIバージョン番号のリストはUpdate WINVER and _WIN32_WINNTページで確認できる。
新ライブラリ
- Cobalt
- C++20コルーチン用の基本的なアルゴリズムと型 (作者Klemens Morgenstern氏)
- Redis
- Boost.Asio上に作られたRedisの非同期クライアントライブラリ (作者Marcelo Zimbres Silva氏)
更新ライブラリ
- Any
- Asio
- Atomic
- Beast
- Chrono
- ContainerHash
- Conversion
- Core
- CRC
- DLL
- Endian
- Filesystem
- Geometry
- Heap
- JSON
- LEAF
- LexicalCast
- Locale
- Lockfree
- Log
- Math
- Multi-index
- Multiprecision
- MySQL
- PFR
- Predef
- Random
- Ratio
- Stacktrace
- System
- Test
- Thread
- TypeIndex
- TypeOf
- Unordered
- Variant
- Wave
Any
- GitHub #26 C++03のサポートを終了
- リファレンスのドキュメント生成を修正。これにより、Boost.PFRのリファレンスによって上書きされないようになった。Peter Dimov氏のデバッグに感謝
Asio
- 最低言語標準として C++11 を要求するように変更。C++03のサポートを終了
- 非推奨の機能を
boost::asio::execution名前空間から削除 - 非推奨の呼び出しフック (invocation hook) とアロケーションフック (allocation hook) を削除
channelにtry_send_via_dispatchとtry_send_n_via_dispatch関数を追加- Asio のプレースホルダと
std::bindの互換性を追加 - 複数の完了シグネチャを持つチャネルの C++11 サポートを改善した。
channelの非同期操作とany_completion_handlerの互換性を修正BOOST_ASIO_USE_TS_EXECUTOR_AS_DEFAULTを使用したコンパイルとany_completion_handlerの互換性を修正- 同じカテゴリに属する混合されたexecutorのプロパティ型を比較するために不足していた等号演算子を追加
std::exception_ptrで始まる完了シグネチャを持つ非同期操作でspawnベースのスタックフルコルーチンを使用するとプログラムが終了してしまう問題を修正- デフォルト構築された
any_completion_handlerオブジェクトのassociatorにアクセスしようとするとクラッシュする問題を修正 - デフォルトの完了トークンで動作するように
ssl::stream<>クラスのasync_handshake操作を修正 - C++11 を最小言語標準として使用するようにすべてのサンプルコードを更新
Atomic
- C++03のサポートを終了。新たな要求はC++11以上となる
- GitHUb #14 FreeBSDとOpenBSDで使用されている、精度を下げたx87拡張
doubleのサポートを追加 - Windows 10より古いWindowsバージョンのサポートは非推奨であり、Boost 1.87で削除される予定。
Beast
immediate_executorをサポート- 非推奨となっていたアロケーションと実行フック (invocation hook) を削除
transfer_opを完了する際に、明示的にstd::size_tを使用するようにしたBOOST_ASIO_INITFN_RESULT_TYPEをBOOST_ASIO_INITFN_AUTO_RESで置き換えたserver-flex-awaitableのサンプルコードでparserをリセットするようにしたwebsocket::stream::async_ping/pongハンドラの要件を正しくしたwebsocket::stream::async_write_someのドキュメントを更新
Chrono
- C++03のサポートを終了
ContainerHash
- C++03のサポートを終了
Conversion
- GitHub #27 C++03のサポートを終了
Core
- GitHub #148 ユーティリティ関数
boost::swapはboost::core::invoke_swapに名前が変更された- 新しい関数は
boost/core/invoke_swap.hppで定義されており、機能的にはboost::swapと等価である。古いboost::swapという名前は後方互換性のために残されているが、非推奨であり、将来のリリースで削除される予定である。noexceptの指定は、コンパイル時の再帰によるコンパイルエラーを避けるために削除された BOOST_ALLOW_DEPRECATED_SYMBOLSまたはBOOST_ALLOW_DEPRECATEDを定義することで、移行期間中の非推奨の警告を抑制することができる
- 新しい関数は
- ヘッダ
boost/swap.hpp、boost/utility/swap.hpp、boost/core/swap.hppは非推奨であり、削除される予定である。boost/core/invoke_swap.hppに切り替えることBOOST_ALLOW_DEPRECATED_HEADERSまたはBOOST_ALLOW_DEPRECATEDを定義すると、非推奨の警告を抑制することができる
CRC
- C++03のサポートを非推奨化した。Boost 1.86.0で削除予定
DLL
- GitHub #66 C++03のサポートを終了
Endian
- C++03のサポートを終了
Filesystem
- Boost 1.82.0でアナウンスされたように、C++03のサポートは終了した。C++11以降のコンパイラが必要となる
- GitHub #291
error_code& ec引数をとる一部のdirectory_entryオブザーバが、正常に戻ったときにエラーコードをクリアしていなかったのを修正した - GitHub #293 Windowsで日付と時刻の変換の堅牢性を改善し、1970年1月1日より前の日付のサポートを追加した
- Boost.Filesystem 1.79.0以降で非推奨となっていたWindows CEへの対応を削除
boost/filesystem/string_file.hppヘッダを削除。このヘッダはBoost.Filesystem 1.79.0以降で非推奨となっていた- 非推奨化: Windows 10より古いWindowsバージョンのサポートは非推奨であり、Boost 1.87で削除される予定
Geometry
- 解決したIssue
- GitHub #1138 2つの
polygonのdifferenceを修正 - GitHub #1183
union_の結果となるpolygonが不完全になる問題を修正 - GitHub #1184
intersectionを修正 - GitHub #1186
union_の不適切なinner ringの代入を修正 - さまざまなエラーと警告を修正
- GitHub #1138 2つの
Heap
- C++03のサポートを非推奨化した。Boost 1.86.0で削除予定。新たな要求はC++14以上となる
JSON
- ユーザー型に直接パースする機能を実装
optionalとvariantの変換カテゴリを追加- イテレータの組からのコンストラクタのイテレータ要件を緩和
- 入力バッファを超える読み込みを修正
- 初期化子リストのコンストラクタの一貫性がない選択を修正
LEAF
result<T>クラスをnodiscard指定- メンバ型
result<T>::value_typeを追加 verbose_diagnostic_infoはエラー処理スコープに到達するまで文字列への変換を遅延させる- 組み込み開発のサポートを改善
- Visual Studio 2015との互換性を改善 (godmaycrying氏に感謝)
- 小さなバグ修正と改善
- GCC 4.8と4.9のサポートを終了
LexicalCast
- GitHub #62 C++03のサポートを終了
Locale
to_titleのWinAPIバックエンドは、空文字列を返す代わりに、文字列を変更しないようにしたchar8_tとstd::u8stringのサポートを改善- GitHub #198 負の時間を使用した際の、ひとつずれるエラー (off-by-one error) を修正
- GitHub #194 フォーマット文字列における波括弧のエスケープ処理を修正
- GitHub #189 とくにMSVCでの、ビルドエラーと警告を修正
Lockfree
- C++03のサポートを非推奨化した。Boost 1.86.0で削除予定。新たな要求はC++14以上となる
Log
- C++03のサポートを終了。C++11以降のコンパイラが必要となる
- Boost.Regex v5を使用するのに十分な適合性を持つC++11コンパイラでビルドした場合、Boost.Regex v5はヘッダのみであるため、Boost.LogはBoost.Regex組み込み済みライブラリとリンクしなくなった
- Windows 10より古いWindowsバージョンのサポートは非推奨であり、Boost 1.87で削除される予定
Math
- ccmath のエラー検出を改善
- GitHub #1028 非推奨になった
std::numeric_limits<>::has_denormの使用を削除 - GitHub #1035 非心t分布 (non-central-t distribution) が収束しないバグを修正
- GitHub #1034
tgammaが負の整数にならないように 1F1 の Bessel 関数近似を調整 - GitHub #1006
ibetaの偽 (spurious) のオーバーフローとゼロによる除算を回避 - Sterling の tgamma の近似を使用する際の精度の改善。GitHub #1007で開始された作業を完了
- GitHub #1007 大きな初期推測に対する
inverse_discrete_quantileの修正 - GitHub #1000 ニュートン法による平方根探索を改善
- GitHub #997 中央値が0でない場合の
median_absolute_deviationを修正した cstdfloat.hppをgcc-14向けに修正<stdfloat>で宣言された新しい型が動作するように更新- 不必要なオーバーフローや使用上の制限を避けるため、
hypergeometric_distributionを32ビットではなく64ビットの整数を使用するように変更
Multi-index
- GitHub #70 ADLをサポートしていない古いコンパイラにおけるシリアライズ関連のコンパイル時バグを修正
Multiprecision
- GitHub #567 テストコード中の
boost::arrayをstd::arrayに変更した - GitHub #553
cpp_int::eval_convert_toがnoexceptになるように修正 - グローバルの精度を変更すると、現在のスレッドの精度も変更されるようにした
- GitHub #540
rational_adaptorの構築のバグを修正
MySQL
connection::reset_connectionとconnection::async_reset_connectionを追加。これらの関数は、接続を閉じたり再度開いたりすることなく、セッションの状態 (プリペアドステートメント、変数、ロックなどを含む) をクリーンアップする- MySQL server v8.1.0で導入されたエラーコードを追加
- 関数のデシリアライズでのfuzzテストを追加
PFR
- [新しい大機能 : フィールド名リフレクション]。新たな関数
constexpr boost::pfr::get_name<N, T>()を追加。この関数は、集成体TのN番目のインデックスのフィールド名をstd::string_viewで返す。C++20以上を要求。この機能が使用可能な場合、BOOST_PFR_CORE_NAME_ENABLEDが値1で定義される。GitHub #129と実装アイディアにおいて、Denis Mikhailov氏、Bela Schaum氏、X-Ryl669氏に多大なる感謝 - GitHub #134 C++17で
for_each_field()をconstexprにした。Alexander Karatarakis氏に感謝
Predef
- バージョン1.15.0
- Microsoft STLの検出を追加 (Henrik Gaßmann氏)
Random
- C++03のサポートを終了
- Boost.Multiprecisionを使用したテストでのオーバーフローを修正
Ratio
- C++03のサポートを終了
BOOST_RATIO_EXTENSIONSのサポートを削除。Ratioは現在、標準<ratio>ヘッダで実装される
Stacktrace
- GitHub #139 C++03のサポートを終了。Alex氏のPRに感謝
- GitHub #138
addr2lineのpieバイナリを修正。ja2142氏のPRに感謝 - GitHub #140 MinGW-w64 12+でのビルドを修正。yhsb2k氏のPRに感謝
- GitHub #143 不足していたインクルードを追加。Francesco Ballarin氏のPRに感謝
System
result<U&, E>のサポートを追加resultにoperator|を追加resultにoperator&を追加resultにoperator&=を追加
Test
- C++03のサポートを終了
- GitHub #392 glibc 2.2 - 2.17でのPRIxPTRの使い方を修正
- GitHub #390 MSVCの警告C5263「一時オブジェクトに
std::moveを呼び出すとコピー省略が発生する」を修正
Thread
- C++03のサポートを終了
TypeIndex
- C++03のサポートを終了
BOOST_TYPE_INDEX_REGISTER_RUNTIME_CLASS((A)(B)(C)(D))の構文をBOOST_TYPE_INDEX_REGISTER_RUNTIME_CLASS(A, B, C, D)に変更- Boost.PPへの依存を削除
TypeOf
- C++03のサポートを終了
Unordered
- メジャーアップデート
boost::concurrent_flat_setを追加- 並行コンテナに
[c]visit_while操作を追加。これは実行ポリシーとして逐次処理と並列処理のどちらでも使用できる- この関数は、関数オブジェクト
fがfalseを返すかすべての要素を参照するまで、テーブルの各要素への参照で関数オブジェクトfを呼び出す
- この関数は、関数オブジェクト
boost::concurrent_flat_(map|set)からboost::unordered_flat_(map|set)への (およびその逆) 効率的なムーブ構築を追加- ルックアップのパフォーマンスを向上させるために、並行コンテナへのbulk visitationを追加
- ユーザーコードから並行コンテナへの不正な再入 (reentrancies) を検出するデバッグモードの仕組みを追加
- 全てのコンテナとそのイテレータ型に、Boost.Serializationのサポートを追加
- オープンアドレッシングと並行コンテナに、ファンシーポインタ (fancy pointer) のサポートを追加。これにより、Boost.Interprocessのアロケータを使用して共有メモリ上にコンテナを構築するというようなシナリオが可能になる
- GitHub #221 閉アドレスコンテナのローカルイテレータに対するメンバポインタ演算子のバグを修正。この問題を発見し修正してくれたvslashg氏氏の貢献に感謝
- このリリースから、
boost::unordered_[multi]setとboost::unordered_[multi]mapはC++11以降でのみ動作する
Variant
- GitHub #107 C++03のサポートを終了
- Boost.MoveとBoost.Bindへの依存を削除
Wave
- バグ修正
- GitHub #188
"#pragma\\n"と遭遇した際のセグメンテーション違反を修正
- GitHub #188
テスト済みコンパイラ
主要なテストコンパイラ:
- 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