本家リリースノート:
- https://github.com/boostorg/website/blob/master/feed/history/boost_1_86_0.qbk
- http://www.boost.org/users/history/version_1_86_0.html
リポジトリは以下:
リポジトリからのビルド方法は、egtraさんのブログを参照:
更新ライブラリ
- Asio
- Atomic
- Beast
- Charconv
- Cobalt
- Compat
- Container
- Core
- CRC
- Filesystem
- Format
- Function
- GIL
- Graph
- Interprocess
- Intrusive
- JSON
- LexicalCast
- Leaf
- Locale
- Log
- Math
- Multiprecision
- MySQL
- Odeint
- Process
- Stacktrace
- Test
- Unordered
- UUID
- Wave
- WinAPI
更新ツール
Asio
default_completion_tokenトレイトのプライマリテンプレートを変更し、デフォルトの完了トークンとしてdeferredを選択するようにした。その結果、ほとんどの非同期操作の開始関数は、デフォルトで遅延非同期操作を返すようになったis_completion_conditionトレイトを追加し、async_read、async_read_at、async_write、async_write_atのオーバーロードに不足していたデフォルト完了トークンを追加したis_connect_conditionトレイトを追加し、完了トークンがデフォルトの場合にasync_connectのオーバーロードを曖昧さ解消するために使用した- 完了トークンアダプタ
as_tuple、bind_allocator、bind_cancellation_slot、bind_executor、bind_immediate_executor、redirect_errorを拡張し、部分的な完了トークンアダプタとして使用できるようにした cancel_afterとcancel_at完了トークンアダプタを追加した- すべての完了トークンアダプタを変更し、適応中に非同期操作のI/Oエグゼキュータが正しく伝播されることを保証した
co_composedをexperimental名前空間から移動したcomposedを追加した。これは、状態を持つ実装から開始関数オブジェクトを作成する。co_composedに似ていますが、C++20コルーチンではなく通常の関数オブジェクト用であるdetached完了トークンを変更し、複数の完了シグネチャを持つ非同期操作で動作するようにしたasync_initiateを変更し、完了シグネチャの空の可変長リストを許可した。これは、非同期操作が完了しないことを示す- 完了トークンの型を自動的に推論する
async_initiateのオーバーロードを追加した async_immediateを追加した。これは、利用可能な場合は関連する即時エグゼキュータを使用して、即座に完了する単純な非同期操作を実装するassociatorトレイトのSFINAEベースの部分特殊化を有効にした- いくつかのバグ修正、コンパイラ/プラットフォーム互換性の改善、および軽微な最適化を行った
- ドキュメントと例のさまざまな更新
- 詳細はRevision Historyを参照
Atomic
- 最近のOpenBSDバージョンでは
syscall(2)のサポートが削除されたため、OpenBSDではfutex(2)システムコールを使用するようになった
Beast
- API変更
- HTTPステータスコード418「I'm a teapot」を追加した
- 修正
read_size_hint_db()での縮小変換を修正- デフォルトの完了トークンを使用する際にあいまいになるオーバーロードを修正
http::basic_fieldsのムーブ代入演算子における誤配置されたstatic_assertを修正- WebSocketの部分的な書き込み操作での
bytes_transferredのアンダーフローを修正 websocket::stream::read_size_hint()がread_message_maxを超えないようにした- テストにおける様々な警告を修正
- 例におけるSSLシャットダウン操作のエラー処理を修正
- zlibにおけるフォールスルーケースの注釈付け
basic_stream::ops::transfer_opでの期限切れタイマーの処理を修正test::basic_streamコンストラクタオーバーロードのあいまいさを修正http::parserでの最終チャンクの部分的な解析を修正
- 改善
server_flex_awaitable例での上品なシャットダウン- awaitableの例を簡略化
- fuzzingターゲットを追加
- 一部の例での不要な
std::bindの使用を削除 ssl_streamがflat_streamを使用しないようにした
- ドキュメント
ssl_streamとflat_streamを非推奨としてマーク- スニペットと例で
net::ssl::streamを正規 (canonical) であるとした - 「SSL/TLSシャットダウン手順 (SSL/TLS Shutdown Procedure)」セクションを追加
- 謝辞
- tyler92, Ruslan Zakirov, Orgad Shaneh, Alexander Kernozhitsky
Charconv
- PPC64LEアーキテクチャのサポートを修正
- Alpine linuxのような、
<quadmath.h>ヘッダは提供するがコンパイル済みライブラリは提供しないプラットフォームのサポートを修正 - 整数型の
from_charsでの最初の文字パターンマッチングを修正 - 10より大きい基数の整数のオーバーフロー検出を修正
std::float16_tとstd::bfloat16_tの変換形式を使用する代わりにネイティブサポートを追加
Cobalt
asio::cancel_afterのサポートを追加- asioのデフォルトトークンである
asio::deferredをco_await可能にした noopユーティリティを追加- スタックフルコルーチン/ファイバーの実験的サポートを追加
- チャネルとコルーチン型の移動可能性を修正
Compat
bind_front.hpp、bind_back.hpp、invoke.hpp、mem_fn.hpp、integer_sequence.hpp、type_traits.hppを追加function_ref.hppを追加
Container
- 以下のバグ/問題を修正:
- GitHub #285: "devector<>::push_front
がclear()`後にアサート失敗する" - GitHub #280: "いくつかのコンテナが、ムーブ代入時にムーブ不可能な型をサポートしていない"
- GitHub #279: "
small_vectorがスタック空間の使用に戻れない" - GitHub #277: "boost::static_assertへの依存を削除"
- GitHub #275: "カスタムキー比較を使用するとコンパイルに失敗する"
- GitHub #273: "
flat_map/vectorが追加時にクラッシュする(メモリ破壊)" - GitHub #269: "
flat_multimap::emplaceがGCCで要素をソートしない" - GitHub #266: "32ビットで
small_vector<T>がスタック上で誤整列している" - GitHub #259: "グローバル変数"
- GitHub #245: "
flat_tree::insertordered rangeがソートを主張しない" - GitHub #241: "
flat_mapはstd::mapと同じインターフェースをサポートすべき"
- GitHub #285: "devector<>::push_front
Core
- ポインタが指定された範囲内にあるかをチェックする
pointer_in_range関数テンプレートを含むboost/core/pointer_in_range.hppヘッダを追加した - GitHub #172 抽象クラスの
type_nameを修正した - GitHub #173 ネイティブ
wchar_t型が無効化されたMSVCでのboost/core/type_name.hppのコンパイルエラーを修正した - GitHub PR #175 ネストされたクラスで
empty_valueを使用した際にコンパイルエラーを引き起こすMSVCのバグに対する回避策を追加した
CRC
- C++03のサポートを終了。C++11コンパイラが必要となる (これにはGCC 4.6以降、MSVC 10.0 (VS 2010)以降が含まれる)
- Array、Config、Integer、TypeTraitsへの依存関係を削除した。このライブラリは現在スタンドアロンである
Filesystem
is_empty操作が、同時に行われるファイルシステムの変更からより良く保護されるようになった- POSIXシステムで、通常ファイルやディレクトリ以外のファイルに対して
is_emptyを呼び出した場合、エラーを示すようになった - GitHub #313 Windowsで、シンボリックリンクではなくシンボリックリンクが参照するファイルに対して動作する
file_sizeとis_emptyを修正した - GitHub #314
directory_entry::refreshは、エントリが参照するファイルが存在しない場合に例外を投げなくなった。これによりdirectory_entry::statusとdirectory_entry::symlink_status、およびそれらに基づくメンバ関数が、同等のスタンドアロン操作と同様に振る舞うようになった。ファイルが存在しないという事実は、対応するdirectory_entry::refreshオーバーロードが返すerror_codeを通じて、あるいはdirectory_entry::statusまたはdirectory_entry::symlink_status呼び出しが返すファイルタイプがfile_type::file_not_foundであるかをテストすることで確認できる - 入力パスが相対パスの場合に、
weakly_canonicalが呼び出しで指定されたベースパスではなく現在のパスに対してパス要素の存在をテストする問題を修正した - GitHub #311 Windowsで、入力パスが
".."で始まる場合にweakly_canonicalが不正な結果パスを生成する問題を修正した
Format
- C++03のサポートを終了。C++11コンパイラが必要となる (これにはGCC 4.7以降、MSVC 12.0 (VS 2013)以降が含まれる)
Function
- Boost.TypeTraitsへの依存を削除した
- 1.85で誤って削除した
argN_type型定義を復活させた
GIL
- 追加
- GitHub PR #747
istream_deviceとostream_deviceクラスにtell()とerror()関数を追加しました
- GitHub PR #747
- 変更
- GitHub PR #726
color_converted_view関数でカスタムカラーコンバータを無視しないようにした - GitHub PR #745 WinAPIの
min()とmax()マクロとの競合に対する回避策を追加した - GitHub PR #743 GILでの
boost::filesystemの使用が、CMakeオプションBOOST_GIL_USE_BOOST_FILESYSTEMで設定可能になりました
- GitHub PR #726
- 修正
- GitHub PR #723
convolve_2dでの畳み込みを修正した - GitHub PR #725 暗くなるのを避けるためにガウシアン2Dカーネルを正規化した
- GitHub PR #746
std::wstringパスのパス文字列変換関数でのバッファサイズの誤りを修正し、std::wstringパスを使用するI/O関連関数でのバッファオーバーフローを回避した
- GitHub PR #723
- 謝辞
- Christoph Gringmuth, Christopher Kormanyos, nicolacandussi, Dirk Stolle, Olzhas Zhumabek
Graph
- メジャーアップデート: C++14が新しい最小標準となった。これは(少なくともC++11への)依存関係によって決定された部分もあるし、選択による部分もある。古い標準のサポートが必要な場合は、メンテナーに連絡してほしい
- Boost.Regexへの直接的な依存を削除した
- 共通ヘッダを明示的にインクルードしていないことによる複数のコンパイルエラーを修正した
isomorphism: ドキュメントを修正し、vertex_max_invariantパラメータを無視して上限を安価に計算するようにし、Associative Property Mapのバグを修正し、最大不変量のサイズに対する線形から g1 のサイズに対する線形に空間効率を改善したboykov_kolmogorov_max_flow: 名前付きパラメータのオーバーロードを修正したadj_list_edge_iterator: 初期化されていない可能性のある警告を修正したhawick_circuits: 探索の深さを任意に制限するパラメータを追加し、潜在的に最適でない答えを早期に返すようにしたdisjoint_sets: セット代表の冗長な検索を削除することで、link_setsのパフォーマンスを改善したmaximum_adjacency_search: リファクタリングとより多くのテストを行ったproperty:BOOST_ATTRIBUTE_NO_UNIQUE_ADDRESSを使用して無駄なスペースを削除したlabeled_graph: ラベルも実際に削除するようにremove_labeled_vertexを修正したr_c_shortest_paths: 単一解のバリアントが常に最短パスを返さないバグを修正したread_graphviz: スタックオーバーフロー(oss-fuzz issue 66719)と非キーワードサブグラフの解析を修正した- その他多数の改善: リンク切れ、typoの修正など
Interprocess
- 以下のバグを修正した:
Intrusive
- GitHub #86 コメント内の無効なUTF-8文字のバグを修正した
JSON
- GCC 5.0未満のサポートは非推奨となり、Boost 1.88.0でサポート終了する
- 例外を投げるアクセサ関数に
source_locationパラメータが追加された - 無効なUTF-16サロゲートペアを許容し、WTF-8を生成するパースオプションを追加した
system::resultを返すアクセサ関数を追加した- 直接パースにおける欠落したエラーケースを処理するようになった
LexicalCast
- 1つ以上の
\0文字を含むstd::basic_string_viewとboost::basic_string_viewの変換を修正した。この問題は1.85.0で導入された
Leaf
verbose_diagnostic_infoの実装を最適化した- バグ修正
class result<>に[[nodiscard]]を追加した
Locale
conv::utf_to_utfでカスタムアロケータのサポートを追加した- デフォルトでは例をビルドしないようにした
Log
- GitHub #231 MinGW-w64でCMakeを使用してイベントログリソースファイルをコンパイルする際の
windres.exeの問題に対する回避策を追加した
Math
- GitHub #1143 無限大でのベッセル関数の結果を修正した
- 非中心T分布の数値的安定性を改善した。scipy20693を参照
- 無限大での
float_next/float_priorの動作を修正した - 非中心ベータ分布での不要なアンダーフローを防止した。scipy20693を参照
- Heuman Lambdaの精度を改善した
- GitHub #1120 歪正規分布の根の発見を改善した
- 多くの軽微な修正とコードカバレッジの改善を行った
Multiprecision
- GitHub #618 超大きな数値で
eval_convert_to()が終了しないようにした sincの実装をBoost.Mathの動作に合わせて修正した- cpp_intの剰余演算でのゼロ除算を修正した
- GitHub #626 128ビットを超える整数のアンダーフロー動作の一貫性を修正した
MySQL
- 長い間非推奨だった関数
query、start_query、execute_statement、start_statement_execution(および非同期版)を削除した - 実験的APIへの破壊的変更:
identifierクラス(クライアント側SQLフォーマット)が削除された。代わりに新しいフォーマット指定子機能を使用すること- カスタムフォーマッタに必要なインターフェースが、新しいフォーマット指定子APIに対応するよう変更された
any_connection::async_connectは、そのconnect_params引数が操作完了まで保持されることを要求するようになったconst connect_params*を取るオーバーロードは削除された- MySQLの文字セット名にNULL文字を含めることができないため、
character_set::nameはstring_viewではなくconst char*になった any_connectionの内部バッファは64MBに制限されるようになった。それ以上の大きな行の読み書きが必要な場合は、any_connection_params::max_buffer_sizeを増やすこと。connectionとそのヘルパー型定義は制限されないany_connection_params::initial_read_buffer_sizeをinitial_buffer_sizeに名前変更したpool_params::initial_read_buffer_sizeをinitial_buffer_sizeに名前変更した
- 新しい実験的API: pipelines。パイプラインは複数のリクエストを1つのネットワークパケットにまとめることで効率を向上させることがでる。パイプラインはテキストクエリの実行、ステートメントの準備、実行、クローズ、セッション状態のリセット、接続の文字セットの設定に使用できる
- クライアント側SQLフォーマットが範囲をそのままサポートするようになった。新しい
sequence関数を使用してフォーマットをさらにカスタマイズできます。バッチ挿入やバッチ検索などのユースケースがこの機能を使用して大幅に簡素化できる - クライアント側SQLフォーマットが値のフォーマット方法を変更するフォーマット指定子をサポートするようになった。
{:i}は文字列を動的SQLの識別子としてフォーマットし、{:r}はエスケープされていない生の出力を行う - 静的インターフェース(
static_resultsとstatic_execution_state)がBoost.Pfr型をpfr_by_nameとpfr_by_positionを使用してサポートするようになった。そのような型をサポートするためにunderlying_row_tを追加した dateとdatetimeがC++20のstd::chrono::local_timeから構築され、変換できるようになった- 接続の内部バッファに制限を設定できる
any_connection_params::max_buffer_sizeを追加した - 致命的(接続を閉じて再開する必要がある)エラーコードと非致命的エラーコードを区別できる
is_fatal_errorを追加した Formattableコンセプトを満たす任意の型を参照できる型消去された参照型formattable_refを追加した- 異なる翻訳単位で
asio::coroutineを使用する他のコードと一緒にBoost.MySQLを使用した際にリリースビルドでクラッシュを引き起こす可能性があったMSVCでのODR違反を修正した
Odeint
- GitHub #82 依存関係を減らすためのCMakeオプション
BOOST_NUMERIC_ODEINT_NO_ADAPTORSを追加した - MPIのCMake検出を修正した
Process
- 古いboost.processをv1サブフォルダとインラインネームスペースに移動した。
process/*.hppv1ヘッダを非推奨にした - v2をコンパイルライブラリに変更した
- alpine linux / muslでの使用を修正した
Stacktrace
- GitHub #159 Windows用の任意の例外からスタックトレースを生成する機能を大きく追加した
std::stacktrace::from_current_exception()がWindows プラットフォームで動作するようになった。実装に貢献してくれたhuangqinjin氏に大変感謝する- 現在、POSIXとWindowsの両方で、
from_current_exception()関数は例外がスローされた時点でのスタックトレースがキャプチャされたかのように、現在の例外オブジェクトのスタックトレースを返す
- 現在、POSIXとWindowsの両方で、
- GitHub #157 めったに使用されないWindows SDKヘッダの包含を修正した。これによりWindows SDKを使用する他のコードとの競合が発生する可能性があった。この問題を修正してくれたMarat Abrarov氏に感謝
- GitHub #166 ビルドオプション
boost.stacktrace.from_exceptionがMacOSで正しく動作するようになった。修正してくれたPeter Dimov氏に感謝 - GitHub #164 アサート式のtypoを修正しました。バグ報告をしてくれたKilian Henneberger氏に感謝
- GitHub #141 シャドウイング警告を修正。バグ報告をしてくれたNigel Stewart氏に感謝
- GitHub #114 AIX用の
dladdrの最小限のサポートを追加。実装に貢献してくれたClément Chigot氏に大変感謝する - GitHub #167 プラットフォーム上で最もサポートされているBoost.Stacktraceの実装を参照するCMakeエイリアス
Boost::stacktraceを追加した。この機能を提供してくれたAlex氏に感謝 - CMakeの大幅な改善: 多数の修正、多くの新しいテストの追加、CIの改善。。すべての改善に貢献してくれたPeter Dimov氏に大変感謝する
- GitHub #72 プロセスが
PATH経由で検索される場合のaddr2lineの動作を修正た。バグ報告をしてくれたSchreischildkroete氏と修正してくれたJens Richter氏に感謝
Test
- コンフィグレーションステップでの
-Wundefを修正した - MSVCでの到達不能な
returnのコンパイルエラーを修正した
Unordered
<memory_resource>ヘッダが利用可能な場合に、コンテナのpmrエイリアスを追加した。エイリアスboost::unordered::pmr::[container]は、std::pmr::polymorphic_allocatorアロケータ型を持つboost::unordered::[container]を参照する- オープンアドレッシングと並行コンテナが、ハッシュ関数の品質に影響される統計的メトリクスを内部で計算して提供するようになった。この機能はグローバルマクロ
BOOST_UNORDERED_ENABLE_STATSで有効化される - アバランチングハッシュ関数は、埋め込まれた
value定数がtrueに設定されたis_avalanching型定義でマークする必要がある(通常、is_avalanchingをstd::true_typeとして定義する)。using is_avalanching = voidは後方互換性のために許可されているが、非推奨である - コンテナとイテレータのVisual Studio Natvisフレームワークのカスタムビジュアライゼーションを追加した。これは生ポインタを使用するアロケータを持つすべてのコンテナで動作する。このリリースでは、アロケータがファンシーポインタを使用する場合、コンテナとイテレータはサポートされない。これは後のリリースで対応される可能性がある
UUID
- メジャーアップデート
- C++03のサポートを終了。C++11コンパイラが必要となる (これにはGCC 4.8以降、MSVC 14.0 (VS 2015)以降、MinGW-w64が含まれる)
- Boostの依存関係の数を39(合計)からわずか5に減らした
- 新しいRFC 9562を反映するように更新した
- 時間ベースのUUID生成器を追加した
- その他の多く改善があります。変更履歴を参照
Wave
- vsprintfの1つの使用をより安全なvsnprintfに置き換えた
- バグ修正:
- GitHub #197: 不適切な符号付きオーバーフロー処理(未定義動作と欠落した除算チェック)を修正
WinAPI
BOOST_USE_WINAPI_VERSIONCMakeオプションを追加した。これにより、ユーザーはBoostがターゲットとするWindowsのバージョンを指定できる
BoostBook
- DTDを更新:
constructor、copy-assignment、destructor要素がmethod-group要素内で許可されるようになった - Doxygen生成ドキュメントに多くの修正と改善:
- Doxygen生成の列挙型値初期化子での重複等号を修正した
- 関数引数のアルファベット順ソートを無効にした。新しい
boost.sort.paramsXSLパラメータを1に設定することで、ソートを再度有効にできる - カスタムクラスメンバーのグループ化のサポートを追加した。Doxygenタグ
@nameと@{/@}を参照 - クラス、メソッド、列挙型、変数などへのDoxygenリファレンスのサポートを追加した(
@refタグを参照) @remarkと@importantタグのサポートを追加した@parblockタグのサポートを追加した。これは単一の段落を引数として期待するタグ(例:@returns)の下に複数の段落を配置するのに使用できる- 実装の詳細を参照するテンプレートパラメータのデフォルトが、関数パラメータのデフォルトと同様に隠蔽されるようになった
- 名前のない列挙型の表示を改善した。
@0のような合成名を表示する代わりに、名前は省略されるか、列挙型ドキュメントへのリンクを導入するために必要な場合は[unnamed]になる - "See Also"(
@sa)ブロックを"Returns"と同様にインラインで表示するように変更した - 複数の例外仕様(
@throws)の表示を修正した - 投げる動作の自由形式の説明のサポートを追加しました。
@throwsタグの後の例外タイプが"~"の場合、例外型は出力から省略され、以下の説明が"Throws"セクションに直接表示される - 戻り値の型とテンプレートパラメータの冗長なスペースを削除した
Build
テスト済みコンパイラ
主要なテストコンパイラ:
- 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