本家リリースノート:
- https://github.com/boostorg/website/blob/master/feed/history/boost_1_82_0.qbk
- http://www.boost.org/users/history/version_1_82_0.html
リポジトリは以下:
リポジトリからのビルド方法は、egtraさんのブログを参照:
C++03サポートの終了
以下のライブラリは、いまから2リリース後の1.84.0でC++03のサポートを終了する:
- Align
- Bind
- Chrono
- ContainerHash
- Endian
- Function
- Functional
- Io
- Random
- Ratio
- SmartPtr
- System
- Thread
- Timer
- Typeof
- Unordered
このリリース(1.82)と次のリリース(1.83)は、上記のライブラリとその依存関係の大部分でC++03をサポートする最後のリリースとなる。
古いバージョンのコンパイラでは、サポート不足やバグのためにC++11が部分的にしか実装されていないことが多いため、どのコンパイラがC++11の要件を満たしているとみなされるかは、ライブラリによって異なる場合がある。
しかし、一般的なルールとして、コンパイラがC++11のキーワードや構文をまったく認識しない場合(例:noexcept
の使用、constexpr
の使用、=delete
された関数を定義すると即コンパイルエラー)、コンパイラがC++11必須のヘッダーをまったく提供しない場合(例:<atomic>
や <chrono>
をインクルードしようとすると失敗する)、あるいはコンパイラがC++11の機能やヘッダを提供するがまったく使用できない場合、このコンパイラはC++11コンパイラとはみなされない。
このため、例えば14.0 (2015) 以前のMicrosoft Visual C++や、4.8以前のGCCは除外される。
新ライブラリ
- MySql
- Boost.AsioベースのMySQLデータベースサーバーのC++11クライアント (作者Reuben Perez)
更新ライブラリ
更新ツール
ContainerHash
hash_value
のstd::nullopt_t
に対するオーバーロードを追加is_tuple_like
と、hash_value
のtuple-like型に対するオーバーロードを追加string
のハッシュ化として、品質と速度の両方の改善のためにmulxp1_hash
を使用するよう修正
Math
- [C++11サポートを非推奨化] 最小の標準バージョンとしてC++14を要求する
- 最小テストコンパイラはClang-5、GCC-5、MSVC-14.1 (2017) となる
- 多項式評価のためのEstrin's methodを追加
- GitHub #939 非心分布 (non-central distributions) のさまざまな問題を修正し、より大きな非心分布に対応できるようにした
- CMake install targetを追加
- 例外のない環境で使用できないものを無効化するために
special_functions.hpp
を修正 - C++14で条件番号の計算 (condition number calculation) が動作するよう修正
- GitHub #923
constexpr
テーブル駆動関数を修正し、コードが実際にはconstexpr
でない場合に大幅な速度低下を避けるようにした - GitHub #894
tanh_sinh
の境界処理を改善 - Linux arm64、s390x、Apple M1 のテストを追加し、128ビット
long double
を扱うテストケースを修正 - 無限大とNaNをより良く扱うために
constexpr
数学関数を改善 - 積分器 (integrators) をconst-correctにした
- GitHub #898
tanh_sinh
の積分器がアンダーフローする問題を修正 - いくつかのプラットフォームがまだサポートしていないため、
std::cbrt
を使用しないようにした - GitHub #892 非心t (non-central T) が偽 (spurious) の
FE_INVALID
例外を発生させるのを止めた - 二項分布のエッジケースを修正
- GitHub #884
ibeta
の非常に小さな引数の取り扱いを改善 ibeta
での無限大とNaNの取り扱いを改善 [@https://github.com/boostorg/math/issues/878 874]を参照してください.- GitHub #781
powm1
のエラーハンドリングを改善 - 指数が超大きい (super large)、または小さいときに、root finder bracketingをより速くブラケットするよう改善
- root finderのエッジケースを修正
- 多くの雑多な警告を修正
- C++17を必要とする機能を使用する際にアサーションを追加し、古い標準バージョンでコンパイラを起動したときのエラーメッセージを改善
Multi-index
- シリアライズで
collection_size_type
の代わりにunsigned long
を使用するようにし、この変更にともなってmulti_index_container
のシリアライズバージョンを2から3に上げた。collection_size_type
の値を特別扱いするカスタムアーカイブ型では、古いアーカイブの読み込みに失敗することがある。そのような場合は、読み出し操作の後方互換性を確保するためにマクロBOOST_MULTI_INDEX_ENABLE_SERIALIZATION_COMPATIBILITY_V2
をグローバル定義する - メンテナンス作業
Multiprecision
- [C++11サポートを非推奨化] 最小の標準バージョンとしてC++14を要求する
- 最小テストコンパイラはClang-5、GCC-5、MSVC-14.1 (2017) となる
- 新たに先行宣言のヘッダを追加
- GitHub #479 Eigenとの相互運用性を更新し、Eigenの詳細に依存しないよう修正
- Cmake install targetを追加
- GitHub #499 スタンドアロンの場合の文字列からの
cpp_dec_float
構築を修正し、より良いエラーハンドリングを実現した - GitHub #530 C++17モードでの冗長な定義を削除
- スタンドアローンの
itrunc
とltrunc
のエラーハンドリングを修正 - 8進数文字列の解析時に初期化されない可能性があるストレージを修正
- arm64 と s390x の CI テストを追加
- GitHub #506
powm
のために不足していた式テンプレートの展開コードを追加
StaticString
- Boost.Coreの
string_view
とstd::string_view
の相互運用をできるよう修正
Test
- いくつかの未使用変数の警告を修正
sprintf
の非推奨の警告を修正basic_cstring::rfind
の未定義動作を修正- GitHub ActionsでのCIを追加
Unordered
- メジャーアップデート
- ノードベースで、オープンアドレッシングなコンテナ
boost::unordered_node_map
とboost::unordered_node_set
を追加 - P2363で規定された異種混合ルックアップ (heterogeneous lookup) の拡張メンバ関数を追加
- オープンアドレッシングコンテナのpost-mixing前の処理を、定数による拡張乗算 (extended multiplication by a constant) に基づく新しいアルゴリズムに置き換えた
emplace
内部で、スタックローカル型がコンテナのアロケータを使用して適切に構築されず、uses-allocator
構築を壊していたバグを修正
URL
- 自動的に%のエンコーディングを行う
url::format
を追加 - URL routerの例を追加
set_params
便利関数を追加string_view
への暗黙変換をサポート- パースコンストラクタをimplicitにした
string_token::arg
が仮想デストラクタとslice protectionを持つようにしたBOOST_URL_DISABLE_THREADS
をサポート- 改善とバグ修正:
WIN32_LEAN_AND_MEAN
が再定義された警告を修正- 欠落 (absent) と空 (empty) のコンポーネントの差分比較
- 空ポートのようなセグメントを持つ
hier_part_rule
を検出 - root上で正規化した場合のセグメント比較
- hier-part path-rootless は無効なセグメントを考慮するよう修正
- オーバーフローした場合に、ポート番号を0にするよう修正
- ipv4 から文字列のオーバーフローを検出するアルゴリズム
Build
- B2バージョン4.9.4をリリース
テスト済みコンパイラ
主要なテストコンパイラ:
- 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