本家リリースノート:
- 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::insert
ordered 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/*.hpp
v1ヘッダを非推奨にした - 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_VERSION
CMakeオプションを追加した。これにより、ユーザーはBoostがターゲットとするWindowsのバージョンを指定できる
BoostBook
- DTDを更新:
constructor
、copy-assignment
、destructor
要素がmethod-group
要素内で許可されるようになった - Doxygen生成ドキュメントに多くの修正と改善:
- Doxygen生成の列挙型値初期化子での重複等号を修正した
- 関数引数のアルファベット順ソートを無効にした。新しい
boost.sort.params
XSLパラメータを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