本家リリースノート:
- 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
*at
API をサポートしない 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