本家リリースノート:
- 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_
の結果となるpolgon
が不完全になる問題を修正 - 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