本家リリースノート:
- https://github.com/boostorg/website/blob/master/feed/history/boost_1_81_0.qbk
- http://www.boost.org/users/history/version_1_81_0.html
リポジトリは以下:
リポジトリからのビルド方法は、egtraさんのブログを参照:
新ライブラリ
- URL
- C++11のみを使用してURLの解析、変更、表示をするライブラリ。機能として、高速なコンパイル、強い不変条件、およびメモリフレンドリーなアプローチによる厳密なコンプライアンスが含まれる (作者Vinnie Falco, Alan de Freitas)
更新ライブラリ
- Asio
- Beast
- Container Hash
- Core
- Describe
- DLL
- Filesystem
- Flyweight
- Fusion
- Geometry
- Histogram
- Iterator
- JSON
- LexicalCast
- Locale
- Multi-index
- Nowide
- PFR
- Stacktrace
- STLInterfaces
- System
- Unordered
- Variant
- Variant2
Asio
- 完了トークンアダプタ (completion token adapter)
consignを追加。これにより、完了ハンドラに追加の値をもたせることができる - 完了ハンドラを型消去するための
any_completion_handler<>を追加 - C++20のコルーチンを使用した、ユーザー定義の非同期処理の軽量な実装を可能にする
experimental::co_composedを追加 experimental::make_parallel_group()に範囲版のオーバーロードを追加- 完了ハンドラに関連するexecutorの型消去ラッパーである
any_completion_executorを追加 use_futureに不足していたcontextクエリを追加execution::any_executor<>とany_io_executorに例外を投げないコンストラクタのオーバーロードを追加- 空の
execution::any_executorオブジェクトの表現を最適化し、コピーとムーブのパフォーマンスを向上させた std::reference_wrapperにassociated_cancellation_slotの特殊化を追加- I/Oオブジェクトがconst参照でexecutorを返すよう変更
- 2 つの引数を持つすべての
get関数に対して、推論された戻り値の型を使用するよう変更 spawnの実装を修正し、処理されなかった例外を捕捉し、生成されたスレッドの外側で再スローするよう修正- 完了ハンドラが正しいexecutorを通して処理されるように
spawnを修正 - ターミナル状態の
spawnスレッドオブジェクトの掃除部分を修正 spawnとco_spawnの実装を修正し、正しいexecutorにキャンセルハンドラをディスパッチするよう修正dispatchの意味論を変更し、executorがそのまま使用されるよう修正execution::executeのカスタマイズポイントとsender/receiver機能を非推奨にした- C++11 の
parallel_groupサンプルを追加 - 非推奨の
resolve変換を使用しないようにサンプルコードを修正 experimental::channel_traitsの特殊化における曖昧さを修正R(error_code)シグネチャのための特化したチャンネル実装を追加async_composeのselfオブジェクトにpublicなcancelled()を追加async_composeのselfオブジェクトにio_executor_typeとget_io_executorを追加- Windowsのオーバーラップしたハンドルに対する
release()の実装を修正 experimental::coroの遅延待ちを有効にし、experimental::use_coroを正規化し、アロケータの取り扱いを修正experimental::promiseを整理し、非同期操作オブジェクトにしたpost/deferのオーバーロードにblocking.neverを要求できるように制限を加えた- ディスクリプタの実装を変更し、ノンブロッキングモードの設定時に
ioctlがENOTTYで失敗したら、fcntlにフォールバックするよう修正 sprintfの使用に関連するXcodeの非推奨警告を修正しました。- 内部スレッドで実行する場合の
select_reactor::runに渡される引数を修正 BOOST_ASIO_DISABLE_SMALL_BLOCK_RECYCLINGが定義されている場合のコンパイルエラーを修正- Clang 14以降でのC++20コルーチンサポートの検出を更新
- C++17 以降をターゲットにしている場合、標準ライブラリの機能検出を常に
std::invoke_resultを有効化するよう変更 - MSVCでの戻り値型推論の検出を修正
- 非同期操作の要件を更新し、関連するexecutorへの要件を緩和
- io_uringの実装上の注意ドキュメントを追加
- 詳細はRevision Historyを参照
Beast
buffers_generatorを追加beast::http::message_generatorを追加- AsioでBeastのbufferを使用するための
buffer_refを追加 - 操作ごとのキャンセルをサポート
- C++20 awaitのサンプルコードを追加
- WebSocketのメッセージごとの圧縮オプション
- WebSocketのタイムアウトオプションのAPI
- multiple content lengthのエラー
- デフォルトの圧縮とrebindをサポート
Container Hash
- メジャーアップデート
boost::hashの特殊化を削除し、常にhash_valueを呼び出すようにしたBOOST_HASH_NO_EXTENSIONSのサポートを削除した。拡張は常に有効になる- すべての標準コンテナをサポート。これには
std::forward_list、と非順序連想コンテナが含まれる - ユーザー定義のコンテナ (イテレータを返す
begin()/end()をもつ型) をサポート - describedなstruct / class (
BOOST_DESCRIBE_STRUCTもしくはBOOST_DESCRIBE_CLASSでアノテーションがつけられた型) をサポート hash_combineを改善- 文字列ハッシュのパフォーマンス (および結果の品質) を改善。文字列の
boost::hashは64ビットモードでSMHasherに渡すようになった - ドキュメントを、変更を反映するために大幅に改訂した
Core
empty_valueメンバをconstexprにしたflose_deleterを追加。このデリータは、std::FILEへのポインタに対してstd::fclose()を呼び出す- GitHub #129
boost/core/bit.hppのビット操作ユーティリティが、入力時に符号なし整数を明示的に要求するようになった bit_widthが入力の値の型ではなく、intを返すようにした。これはLWG3656の解決に基づく
Describe
-pedanticオプションが使用されたときにenumerators.hpp、bases.hpp、およびmembers.hppを含めることができるようにするために、BOOST_DESCRIBE_ENUMの呼び出しはmodifiers.hppから 別のヘッダーmodifier_description.hppに移動した。 その結果、modifiers.hppにはenum.hppが含まれなくなった。 この暗黙的なインクルードに依存しているコードは失敗する可能性があり、enum.hppをインクルードするように修正する必要がある
DLL
- GitHub #57 Windowsプラットフォームでの
path_from_handleの実装を修正。@SaltfishAmi氏のバグ報告に感謝
Filesystem
- [非推奨]
std::vector<char>やstd::list<wchar_t>などの文字のコンテナからのpathの構築、代入、および追加は、v3 で非推奨になり、v4で削除された。代わりに文字列型またはイテレータを使用すること - [非推奨]
boost/filesystem/path_traits.hppヘッダは非推奨となり、将来のリリースで削除される予定。このヘッダにはpathの実装の詳細が含まれており、ユーザーのコードでは使用すべきではない - 以前から非推奨だったAPIが、使用時にコンパイル警告を出力するようになった。これらの警告を抑制するために、ユーザーのコードをコンパイルする際は
BOOST_FILESYSTEM_ALLOW_DEPRECATEDマクロを定義すること - GitHub #250
*atAPI をサポートしない POSIX システムでのインクルードの不足によるコンパイルエラーを修正 - GitHub #246, GitHub #245 Windows 10より前バージョンで
directory_iteratorを構築する際にERROR_INVALID_PARAMETERを生成するネットワーク共有ファイルシステムのワークアラウンドが追加された - GitHub #247 Windowsで、パスが
"\\\\?\\"プレフィックスで始まる場合にERROR_INVALID_FUNCTIONエラーコードで失敗するweakly_canonicalを修正 - GitHub #208
pathコンストラクタ、代入および追加操作でstd::string_view、boost::string_viewおよびboost::container::string(およびそれぞれのwchar_t対応物) のサポートを追加 - イテレータのペアを使用する
pathコンストラクタ、代入および追加操作が、サポートされているパス文字タイプのいずれでもない値型のイテレータを受け入れなくなった - GitHub #255, GitHub #266 Windowsで、さまざまなマウントされたファイルシステムと 7.21 より前の Wine リリースとの
directory_iteratorの互換性を改善 - GitHub #262 Windows では、重複排除されたファイルが再解析ファイルではなく、通常のファイルとして報告されるようになりました
Flyweight
- メンテナンス作業
Fusion
- GitHub #240
fusion::identity_viewを追加 - GitHub #239
fusion::transform_viewに連想シーケンスのサポートを追加 - GitHub #237 連想シーケンスで
fusion::reverse_viewを使用した場合のコンパイルエラーを修正 - GitHub #261 Clang 13での
-Wdeprecated-copy警告を修正 - GitHub #249 依存関係の小さな再編成。Boost.Coreから
boost::refとboost::noncopyableが使用されるようになった - GitHub #245, GitHub #236 LinuxとMacOSでのclangとgccのCIテストを追加し、WindowsでのCIテストを修正した
- GitHub #234, GitHub #235, GitHub #238 ドキュメントの改善と誤字の修正
Geometry
- 解決したissue
- GitHub #1048 Index: IndexableGetterによって値でIndexableが返される場合のダングリング参照を修正
- GitHub #1076 Union: まれに1つのポリゴンが欠落している可能性があった問題を修正
- GitHub #1081 Union: 精度のために、内部のリングを見逃す可能性があった問題を修正
- バグ修正
- GitHub #1063 Intersection: 単純な球面ポリゴンの交差のバグを修正
- GitHub #1064 Formulas: 測地線直接式 (geodesic direct formulas) の一貫性の問題を修正
- GitHub #1088 Point: custom point typeのリグレッションを修正
- 不足していたインクルードファイル、警告、C++20でのコンパイルエラー、ドキュメントに関するさまざまな修正
Histogram
- メジャーアップデート
- bool値のサンプルを集積して真の割合を求め、またその分散と信頼区間 (confidence intervals) を計算する新たな
accumulator::fractionを追加 - fraction用の区間計算機を追加:
utility::clopper_pearson、utility::wilson_interval、utility::jeffreys_interval、utility::wald_interval。これらは、任意の信頼水準 (confidence level) で区間を計算できる - 信頼レベルを確率として渡す
utility::confidence_level型、およびすべての区間計算機の標準偏差の倍数を渡すutility::deviation型を追加 - 内部的な型
sub_arrayとC++20のspanを修正
Iterator
- GitHub #73
function_output_iteratorは、代入された値のラップされた関数オブジェクトへの完全転送をサポートするようになった - GitHub #75 別の
function_input_iteratorの後置インクリメントの結果からfunction_input_iteratorを構築する際のコンパイルエラーを修正 iterator_facadeに基づくイテレータの後置インクリメントの戻り値型が、operator->をサポートするようになりました。(it++)->fooは、以前にサポートされていた(*it++).fooと等価
JSON
object::stable_eraseを追加parseにstd::istreamのオーバーロードを追加、operator>>にvalueのオーバーロードを追加valueに右辺値修飾のアクセッサを追加- Conversion traitsを再設計
- describedなクラス、enum、
std::optional、std::variant、null-likeな型 (std::nullptr_t,std::nullopt_t,std::monotypeを含む) の変換をサポート valueからユーザー定義型への例外を投げない変換を追加
LexicalCast
- GitHub #50
volatile算術型をキャストする際のコンパイルエラーを修正。バグ報告を提供してくれた Giovanni Cerretani 氏に感謝 - GitHub #53 非推奨のヘッダの使用を削除。 Pull Requestを提供してくれた Michael Ford 氏に感謝
Locale
- いくつかの破壊的変更を含むメジャーアップデート
- C++11 のサポートが必要になった。C++03 以前のサポートは廃止された
- 一部のenumはenum classに変換された。名前の競合を回避する
-sICU_LINK_LOCALEと-sICU_LINKを、Boost.RegEx で行われるように、きめの細かい設定オプションに置き換える- libiconv の検出を修正し、一部のプラットフォームで Boost.Locale を (再び) ビルドできるようにしました。
std::auto_ptrの使用とサポートを削除- Windows で
wchar_tを使用してcodecvtが UTF-16 エンコーディングを想定・使用するようにした - パフォーマンスを向上:
basic_format、date_time、hold_ptrをムーブ可能にし、フォーマットキャッシュの使用を修正 - Boost.Locale をより多くの ICU バージョンと互換性を持たせるようにした (特にテスト)
- 一部のクラスの RTTI 定義を修正 (可視性の問題)
- 一部の libc++ バージョンとの ICU バックエンドの互換性を修正
- 一部の演算子の戻り値を修正して、const でない
*thisを正しく返すようにした date_timeの負のロールの int-overflow を修正- ビルドログをきれいにする多くの警告を処理または抑制
- より多くの Windows コードページのサポートを追加
- ISO-2022-JP などの Windows コードページのサポートを修正
Multi-index
- メンテナンス作業
Nowide
- MSVCのテストがビルド失敗する問題を修正
PFR
- GitHub #97 C++14モードでの集成体初期化の検出を改善しました、Denis Mikhailov氏のPull Requestに感謝
- GitHub #109 GitHub #104 clang-tidyの警告を黙らせた。Alexander Malkov氏のPull Requestに感謝
- GitHub #96 コンパイラがサポートしている場合、fold式を使用するようにした。Jean-Michaël Celerier氏のPull Requestに感謝
- メンテナンス作業
Stacktrace
- GitHub #123 このライブラリでCOMの初期化を使用しなくなった。バグ報告、説明、Pull Requestを提供してくれた Alex Guteniev 氏に感謝
BOOST_STACKTRACE_BACKTRACE_INCLUDE_FILEマクロ値を、b2 の libbacktrace の可用性を検出する際に使用できるようになりった- GitHub #118 libbacktrace の使用中に単一の
backtrace_state静的インスタンスを強制的に生成するBOOST_STACKTRACE_BACKTRACE_FORCE_STATICマクロを追加。Rasmus Thomsen氏によるバグ報告に感謝 - GitHub #116
boost/stacktrace/stacktrace.hppヘッダのみをインクルードする際に、未解決の参照を回避するようにした。バグ報告をくれた Long Deng 氏に感謝 - GitHub #122 Windowsプラットフォームで
strlenを呼び出さないようにすることで、スタックトレースの表示を最適化。Alex Guteniev氏によるバグ報告に感謝
STLInterfaces
const value_typeを持つC++20より前のイテレータの2つの不適格な形式のiterator_interface演算子を修正
System
- マクロ
BOOST_SYSTEM_DISABLE_THREADSを定義して、<mutex>の使用を無効にできるようになった (例: シングルスレッドの libstdc++) result<>にvalue_type,error_type,in_place_value,in_place_errorを追加result<>にemplace()を追加
Unordered
- メジャーアップデート
- オープンアドレッシングに基づく高速なコンテナとして
boost::unordered_flat_mapとboost::unordered_flat_setを追加 - すべてのコンテナにCTAD推論ガイドを追加
- LWG issue 2713で規定された、不足していたコンストラクタを追加
Variant
- GitHub #101 ヘッダの再帰的なインクルードを回避。Nathan Sidwell氏のバグ報告に感謝
- GitHub #96 非推奨ヘッダの使用を削除。Michael Ford氏のPull Requestに感謝
- GitHub #98 C++23モードのClangでのコンパイルエラーを修正。Ed Catmur氏のPull Requestに感謝
Variant2
boost::json::value_fromとboost::json::value_toのサポートを追加
テスト済みコンパイラ
主要なテストコンパイラ:
- Linux:
- Clang: 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: 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: 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