最終更新日時:
が更新

履歴 編集

Boost 1.86.0リリースノート

本家リリースノート:

リポジトリは以下:

リポジトリからのビルド方法は、egtraさんのブログを参照:

更新ライブラリ

更新ツール

Asio

  • default_completion_tokenトレイトのプライマリテンプレートを変更し、デフォルトの完了トークンとしてdeferredを選択するようにした。その結果、ほとんどの非同期操作の開始関数は、デフォルトで遅延非同期操作を返すようになった
  • is_completion_conditionトレイトを追加し、async_readasync_read_atasync_writeasync_write_atのオーバーロードに不足していたデフォルト完了トークンを追加した
  • is_connect_conditionトレイトを追加し、完了トークンがデフォルトの場合にasync_connectのオーバーロードを曖昧さ解消するために使用した
  • 完了トークンアダプタas_tuplebind_allocatorbind_cancellation_slotbind_executorbind_immediate_executorredirect_errorを拡張し、部分的な完了トークンアダプタとして使用できるようにした
  • cancel_aftercancel_at完了トークンアダプタを追加した
  • すべての完了トークンアダプタを変更し、適応中に非同期操作のI/Oエグゼキュータが正しく伝播されることを保証した
  • co_composedexperimental名前空間から移動した
  • 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_streamflat_streamを使用しないようにした
  • ドキュメント
    • ssl_streamflat_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_tstd::bfloat16_tの変換形式を使用する代わりにネイティブサポートを追加

Cobalt

  • asio::cancel_afterのサポートを追加
  • asioのデフォルトトークンであるasio::deferredco_await可能にした
  • noopユーティリティを追加
  • スタックフルコルーチン/ファイバーの実験的サポートを追加
  • チャネルとコルーチン型の移動可能性を修正

Compat

  • bind_front.hppbind_back.hppinvoke.hppmem_fn.hppinteger_sequence.hpptype_traits.hppを追加
  • function_ref.hppを追加

Container

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_sizeis_emptyを修正した
  • GitHub #314 directory_entry::refreshは、エントリが参照するファイルが存在しない場合に例外を投げなくなった。これによりdirectory_entry::statusdirectory_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_deviceostream_deviceクラスにtell()error()関数を追加しました
  • 変更
    • 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 #723 convolve_2dでの畳み込みを修正した
    • GitHub PR #725 暗くなるのを避けるためにガウシアン2Dカーネルを正規化した
    • GitHub PR #746 std::wstringパスのパス文字列変換関数でのバッファサイズの誤りを修正し、std::wstringパスを使用するI/O関連関数でのバッファオーバーフローを回避した
  • 謝辞
    • 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_viewboost::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

  • 長い間非推奨だった関数querystart_queryexecute_statementstart_statement_execution(および非同期版)を削除した
  • 実験的APIへの破壊的変更:
    • identifierクラス(クライアント側SQLフォーマット)が削除された。代わりに新しいフォーマット指定子機能を使用すること
    • カスタムフォーマッタに必要なインターフェースが、新しいフォーマット指定子APIに対応するよう変更された
    • any_connection::async_connectは、そのconnect_params引数が操作完了まで保持されることを要求するようになったconst connect_params*を取るオーバーロードは削除された
    • MySQLの文字セット名にNULL文字を含めることができないため、character_set::namestring_viewではなくconst char*になった
    • any_connectionの内部バッファは64MBに制限されるようになった。それ以上の大きな行の読み書きが必要な場合は、any_connection_params::max_buffer_sizeを増やすこと。connectionとそのヘルパー型定義は制限されない
    • any_connection_params::initial_read_buffer_sizeinitial_buffer_sizeに名前変更した
    • pool_params::initial_read_buffer_sizeinitial_buffer_sizeに名前変更した
  • 新しい実験的API: pipelines。パイプラインは複数のリクエストを1つのネットワークパケットにまとめることで効率を向上させることがでる。パイプラインはテキストクエリの実行、ステートメントの準備、実行、クローズ、セッション状態のリセット、接続の文字セットの設定に使用できる
  • クライアント側SQLフォーマットが範囲をそのままサポートするようになった。新しいsequence関数を使用してフォーマットをさらにカスタマイズできます。バッチ挿入やバッチ検索などのユースケースがこの機能を使用して大幅に簡素化できる
  • クライアント側SQLフォーマットが値のフォーマット方法を変更するフォーマット指定子をサポートするようになった。{:i}は文字列を動的SQLの識別子としてフォーマットし、{:r}はエスケープされていない生の出力を行う
  • 静的インターフェース(static_resultsstatic_execution_state)がBoost.Pfr型をpfr_by_namepfr_by_positionを使用してサポートするようになった。そのような型をサポートするためにunderlying_row_tを追加した
  • datedatetimeが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()関数は例外がスローされた時点でのスタックトレースがキャプチャされたかのように、現在の例外オブジェクトのスタックトレースを返す
  • 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_avalanchingstd::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を更新: constructorcopy-assignmentdestructor要素が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

翻訳

Akira Takahashi