本家リリースノート:
- https://github.com/boostorg/website/blob/master/feed/history/boost_1_83_0.qbk
- http://www.boost.org/users/history/version_1_83_0.html
リポジトリは以下:
リポジトリからのビルド方法は、egtraさんのブログを参照:
既知の問題
- JSON
- Windows ARM環境において、組み込み命令 (intrinsics) の欠如によりコンパイルが失敗する場合がある。GitHub #926とGitHub #927、およびパッチを参照
- Unordered
- コピー代入演算子において、存在しない要素を誤って削除してしまう問題を修正。GitHub #205、およびパッチを参照
新ライブラリ
- Compat
- 後の標準C++に追加された標準コンポーネントをC++11実装した互換性ライブラリ (作者Peter Dimov氏とコントリビューターたち)
更新ライブラリ
- Any
- Atomic
- Chrono
- Compat
- Core
- DLL
- Filesystem
- Flyweight
- Geometry
- Iterator
- JSON
- Locale
- Log
- Math
- Mp11
- Multi-index
- Multiprecision
- MySQL
- Ratio
- Test
- Timer
- Unordered
- URL
- UUID
- Variant2
更新ツール
Any
- 新たなC++11クラス
boost::anys::unique_anyを追加。held typeからのコピー or ムーブ構築を必要としないboost::any(std::any) の代替クラス - ドキュメントをQuickbookに移植し、Doxygenコメントをコードで使用するようにした
Atomic
- GitHub #62
const修飾したatomic_refのコンパイルエラーを修正。const`修飾されたアトミックオブジェクトであっても、読み書き可能なメモリに存在しなければならないことに注意
Chrono
- 非推奨となっていたBoost.Ratioの使用部分を削除
Compat
latch.hppを追加。std::latchの実装 (Christian Mazakas氏の貢献に感謝)shared_lock.hppを追加。std::shared_lockの (部分的な) 実装 (Christian Mazakas氏の貢献に感謝)
Core
boost::core::type_nameに不完全型のサポートを追加boost/core/bit.hppのビット操作関数を最新のMSVCでconstexprに対応 (VS2019 update 5以降)boost/core/bit.hppにboost::core::byteswap(C++23std::byteswapの実装) を追加- yieldのプリミティブ
sp_thread_pause,sp_thread_yield,sp_thread_sleepを、SmartPtrライブラリの実装詳細からboost/core/yield_primitives.hppに移動
DLL
- GitHub #58 glibc 2.36+でのテスト失敗を修正。Đoàn Trần Công Danhのバグ報告に感謝
Filesystem
- パスで識別されるディレクトリエントリの内部キャッシュファイルの状態を更新する
directory_entry::refreshメンバ関数を追加 - [v4]
directory_entryのコンストラクタや変更関数でパスを初期化したり変更したりすると、自動的にrefreshが呼び出されるようになった。これにより、v3以前やv3ではファイルステータスのファイルシステムへの問い合わせが失敗した場合 (ファイルが存在しない場合など)、表示されなかったエラーが発生する可能性がある。この新しい動作はstd::filesystemに似ている - v4
file_statusパラメータを受け取るdirectory_entryコンストラクタとメソッドが削除された。これらの引数を取り除き、directory_entryが内部的にrefreshを呼び出すようにすることを推奨する - std::filesystem と同様に、ファイルのファイルタイプをチェックするための
directory_entryのメンバ関数を追加した - ファイルの状態を検査する関数を追加した:
is_block_file,is_character_file,is_fifo,is_socketおよびis_reparse_file - GitHub #288
recursive_directory_iteratorは、ファイルシステムのイテレート処理中に取得したファイルタイプに関する情報を再利用するようになった。これにより、パフォーマンスが向上する可能性がある - GitHub #280 標準ライブラリのファイルストリームがムーブ可能な場合、
boost/filesystem/fstream.hppで定義されたファイルストリームもムーブ可能になった - 最初の引数に
pathをとる移植可能なfopenオーバーロードを持つ新しいヘッダーboost/filesystem/cstdio.hppを追加した。この関数はstd::fopenと等価だが、Windows ではパスにネイティブのワイド文字エンコーディングを使用する - GitHub #285 汎用的な
path比較演算子がより制限されるようになり、ユーザーのコードにusing namespace boost::filesystem;ディレクティブが含まれている場合に、潜在的な曖昧さを回避できるようになった - GitHub #287 イテレータからの
pathコンストラクタがstd::initializer_list引数を取る関数のオーバーロードと干渉する可能性があった問題を修正 - GitHub #284, GitHub #286 Windows で、directory iteratorを作成する際に様々なファイルシステムから返されるエラーに対する回避策を追加
- GitHub #290 Windows で、ファイル時間の照会に必要なアクセス権を緩和
Flyweight
boost::flyweightにスマートポインタ構文 (元の値への間接参照を行うoperator*とoperator->) を追加- GitHub #12
simple_lockingで使われるミューテックスが再帰的でなかったのを修正
Geometry
- 改善
- GitHub #1140 依存関係を削除し、いくつかの箇所で boost を std に置き換えた
- GitHub #1154 不足していたヘッダを追加し、すべてのヘッダがBoostのポリシーに従って独立してコンパイルできるようにした
- GitHub #1157
calculate_point_orderでconst Ringのコンセプトをチェックする
- 解決済みの問題
- GitHub #1100
unionの修正 - GitHub #1139 異なるジオメトリタイプの修正
- GitHub #1158 凸包の修正
- GitHub #1161 頂点に極を持つジオメトリのアルゴリズム内の修正1
- 様々なエラーと警告の修正
- GitHub #1100
Iterator
is_iterator型特性を追加し、その型がイテレータ型として適格かどうかをテストできるようになった- GitHub #79
filter_iteratorは、適応されたイテレータと関数オブジェクトのムーブ構築をサポートするようになった
JSON
- このライブラリはメモリ割り当てに失敗した場合を除き、
system_errorを例外送出するようにした。ただし、メモリ割り当てに失敗した場合はstd::bad_allocが送出される - シリアライズの動作を
serialize_optionsで変更できるようになった - 文脈変換
- より正確な数値解析を行うためのパーサーオプション
- ストリーム
operator<<でparse_optionsをサポートした - JSON リテラルの
InfinityとNaNを許可するパーサーオプション - 数値のパースではなく、数値の検証のみを行うパーサーモード
- 指数が
INT_MAXより大きい数値はパーサーに受け入れられ、無限大として扱われる objectメンバ関数を強い保証をするよう修正したboost/range.hppがインクルードされている場合のend呼び出しのあいまいさを修正した- ASan の失敗を修正した
error::size_mismatchのエラーメッセージを修正したconst要素を持つタプルへの変換を修正した
Locale
- GNU gettextの動作にマッチするメッセージカタログファイルにおいて、ビット演算子/バイナリ演算子(左/右シフト、バイナリand/or/xor/not)がサポートされなくなった
- Windows の Std バックエンドは、要求されたロケールが存在しない場合、システムロケールの代わりにクラシックロケールを使用するようになった
localization_backend_manager::getは非推奨。代わりにジェネレーターを使用することto_utf/from_utf/betweenに代わる新しいコンバータークラスを追加した- フォーマット文字列の無効なインデックスに関する未定義動作を修正した
- ICU のない Windows で iso-2022-jp などへの UTF 変換を修正した
- 複数形翻訳のカウントパラメーターとして
long longを使用するようにした - いくつかのクラスのムーブと例外指定を修正した
Log
- GitHub #209
text_file_backendで、フォーマットされたログレコードのサイズがrotation_sizeの制限を超えた場合に無限ループになる可能性があった問題を修正
Math
- GitHub #921 Daubechiesスケーリング関数のフーリエ変換の数値評価を追加
- GitHub #946 統計分布に
logcdf関数を追加した - GitHub #978 C++23 の
<stdfloat>型のサポートを追加した - 様々な
-Wmaybe-uninitialized警告を修正した - GitHub #968 表現不可能な数値の
roundとtrunc関数を修正した - GitHub #976 F 分布の最頻値の計算を修正した
- GitHub #977 ベータ分布のオーバーフローを修正した
- GitHub #987 超幾何分布のオーバーフローを修正
- GitHub #997 中央値が 0 でない場合の絶対偏差の中央値の計算を修正した
Mp11
mp_from_sequence,mp_iota,mp_iota_cに offset/from パラメータを追加mp_value,mp_list_v,mp_rename_v,mp_is_value_listを追加<<boost/mp11/list.hpp>のプリミティブに値リストのサポートを追加- 値リストのサポートを
mp_repeat、mp_fill、mp_at、mp_back、mp_take、mp_pop_back、mp_drop、mp_insert、mp_eraseに追加
Multi-index
- GitHub #68 non-unique ordered indicesのRange版
insertを更新し、等価な要素の挿入順序を保持するようにした - シリアライズで
multi_index_containerのサイズの保存と読み込みにunsigned longではなくstd::size_tを使用するようになった (LLP64 データモデルではunsigned longはstd::size_tより小さい)。この変更にともない、multi_index_containerのシリアライズバージョンが 3 から 4 に変更された
Multiprecision
- GitHub #542 rational adapter divisionのバグを修正
- GitHub #552 マルチスレッド環境でのグローバルプレッションの変更の処理を修正
- GitHub #555
cpp_int::eval_convert_toの `noexcept 指定を修正
MySQL
- メジャーアップデート
- データを生成する
SELECTステートメントとOUTパラメータを持つプロシージャを含むストアドプロシージャが完全にサポートされた。これにより、セミコロンで区切られた複数のステートメントを 1 回の呼び出しで実行できるようになった - 静的に型付けされたインターフェースが追加され、Boost.Describe構造体とタプルを使用して、クエリ結果をユーザーが提供した型に解析できるようになった
- テキストクエリとプリペアドステートメントは、新しい
connection::execute関数とconnection::start_execution関数(とその非同期関数)を使って実行できるようになった。これらはconnection::query、connection::execute_statement、connection::start_query、connection::start_statement_executionの上位関数である。新しい関数により、静的インターフェースのような新しい機能にアクセスできるようになった - ビルド時間を短縮するために、独立したコンパイルモードが追加された。ソースは
boost/mysql/src.hppに含まれており、正確に1つの翻訳ユニットに含める必要がある statement::bindとconnection::executeを使用して、イテレータペアでパラメータを指定してプリペアドステートメントを実行できるようになった。これにより、コンパイル時にパラメータの数や型がわからない場合に使用できるようになったbool型、std::optional型、boost::optional型のパラメータを使用できるようになった- エラーコードを追加し、MySQL v8.0.33 および MariaDB v11.0 との互換性を確認した
- Windows の
min()とmax()マクロの潜在的な問題を修正した - すべてのアサーションが Boost.Assert を使用するようになった。
- すべての例外は Boost.ThrowException によってスローされるようになった
- 即時完了が I/O object executorを通して正しくディスパッチされるようになった
Ratio
- デフォルトの
BOOST_RATIO_VERSIONを 2 に変更した BOOST_RATIO_EXTENSIONSのサポートは非推奨となり、Boost.Ratio が標準の<ratio>ヘッダとして実装されたときに削除される予定
Test
- CIシステムに古いプラットフォームを追加した
- GitHub #353
uintptr_tの取り扱いを修正し、32 ビットシステムでも移植できるようにした - GitHub #375
Wdeprecated-copy-dtorと-Wdeprecated-copy-with-user-provided-dtorの警告を修正した - GitHub #382 C++23
<stdfloat>型のcheck_is_closeの処理を修正した
Timer
- Boost.Chrono、Boost.Systemなどへの依存を削除
BOOST_TIMER_ENABLE_DEPRECATEDが定義されていない限り、非推奨のヘッダーを無効にするようにした
Unordered
- メジャーアップデート
- オープンアドレッシングに基づく高速でスレッドセーフなハッシュマップ
boost::concurrent_flat_mapを追加した - オープンアドレッシングコンテナのイテレート処理を高速化
- オープンアドレッシングコンテナにおいて、以前はなにも返さなかった
erase(iterator)が、次の要素へのイテレータに変換可能なプロキシオブジェクトを返すようになった。これにより、返されたプロキシが使用されない場合に、パフォーマンス上のペナルティを負うことなく、典型的なit = c.erase(it)イディオムを使用できるようになった
URL
- GitHub #757
parse_queryでstring_viewを作り直さないよう修正 - GitHub #756
url_view/string_viewのコンストラクタが、url_view_baseを要求するようにした - GitHub #711
IP-literalがIPv6addrzになれるようにした
UUID
- GitHub #138 AVX ターゲット用に生成される x86 コードを改善。SSE3 ターゲットでの
lddqu命令の使用を削除した。これは Intel NetBurst CPU ではパフォーマンスが低下するが、Skylake 以降の CPU では最適である
Variant2
uses_double_storage()を追加
Build
- B2 version 4.10.1をリリース
テスト済みコンパイラ
主要なテストコンパイラ:
- 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