最終更新日時:
が更新

履歴 編集

Boost 1.81.0リリースノート

本家リリースノート:

リポジトリは以下:

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

新ライブラリ

  • URL
    • C++11のみを使用してURLの解析、変更、表示をするライブラリ。機能として、高速なコンパイル、強い不変条件、およびメモリフレンドリーなアプローチによる厳密なコンプライアンスが含まれる (作者Vinnie Falco, Alan de Freitas)

更新ライブラリ

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_wrapperassociated_cancellation_slot の特殊化を追加
  • I/Oオブジェクトがconst参照でexecutorを返すよう変更
  • 2 つの引数を持つすべての get 関数に対して、推論された戻り値の型を使用するよう変更
  • spawn の実装を修正し、処理されなかった例外を捕捉し、生成されたスレッドの外側で再スローするよう修正
  • 完了ハンドラが正しいexecutorを通して処理されるように spawn を修正
  • ターミナル状態の spawn スレッドオブジェクトの掃除部分を修正
  • spawnco_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_typeget_io_executor を追加
  • Windowsのオーバーラップしたハンドルに対する release() の実装を修正
  • experimental::coroの遅延待ちを有効にし、experimental::use_coroを正規化し、アロケータの取り扱いを修正
  • experimental::promise を整理し、非同期操作オブジェクトにした 
  • post/defer のオーバーロードに blocking.never を要求できるように制限を加えた
  • ディスクリプタの実装を変更し、ノンブロッキングモードの設定時に ioctlENOTTY で失敗したら、 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.hppbases.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_viewboost::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::refboost::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_pearsonutility::wilson_intervalutility::jeffreys_intervalutility::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を追加
  • parsestd::istreamのオーバーロードを追加、operator>>valueのオーバーロードを追加
  • valueに右辺値修飾のアクセッサを追加
  • Conversion traitsを再設計
  • describedなクラス、enum、std::optionalstd::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_formatdate_timehold_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_mapboost::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_fromboost::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

翻訳

Akira Takahashi