最終更新日時:
が更新

履歴 編集

Boost 1.80.0リリースノート

本家リリースノート:

リポジトリは以下:

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

既知の問題

  • Boost.Filesystemのdirectory iteratorが、Windows 10より前のバージョンでネットワーク共有の構築に失敗する場合がある
  • Boost.FilesystemがWindowsにおいて、weakly_canonical が「\\\\?\\」プレフィックスで始まるパスの処理に失敗する
  • Boost.Filesystemにおいて、*at APIをサポートしていないPOSIXシステム上でインクルードが不足しているためにコンパイルに失敗する

更新ライブラリ

更新ツール

Asio

  • C++11の新たな形式のasync_resultを有効にするために、すべての非同期操作に推論の後置戻り値型を追加
  • appendprependas_tupledeferredboost::asio名前空間に移動し、C++11と互換性を持たせた
  • experimental::parallel_groupをC++11と互換性を持たせた
  • std::spanなどの連続性のあるコンテナのbuffer()オーバーロードを追加
  • awaitable<>ベースのコルーチン機能が、関数オブジェクトとしてパッケージ化された操作を直接co_awaitできる機能を追加
  • spawn()を完了トークンベースの非同期操作に変更し、キャンセルのサポートを追加。basic_yield_contextトークンは、ムーブのみ可能な型および可変個の戻り値型をサポートするようになった。C++11以降をターゲットとする場合、spawn()basic_yield_contextはBoost.Contextで直接実装される
  • is_async_operationトレイトとasync_operationコンセプトを追加
  • completion_signature_ofトレイトを追加
  • posix descriptor、シリアルポート、パイプ、Windowsのobject_handle、Windowsのストリームハンドル、およびWindowsランダムアクセスハンドルを変換ムーブ構築・代入する機能を追加
  • パイプ、Windowsストリームハンドル、およびWindowsランダムアクセスハンドルにrelease()メンバ関数を追加
  • ドキュメント化されたEndpoint型要件に従って、data()メンバ関数からvoidポインタを返すEndpoint実装のサポートを有効にした
  • experimental::promiseall()race()は、experimental::parallel_groupがこの機能をカバーしているため、削除した
  • 同期操作と非同期操作によって生成される例外とエラーコードにsource locationを追加
  • OpenSSL 3.0.4 以降との互換性を修正
  • -masm=intelとの互換性を修正
  • socketのshutdown()呼び出しが、同じソケット上の特定の他の同期操作に関してスレッドセーフであることを明示的にした
  • executor型のみが異なるI/O オブジェクトのムーブ構築を最適化
  • clang/libc++のstd::invoke_resultの検出を修正
  • experimental::parallel_group初期化が引数を転送する代わりに誤ってムーブする問題を修正
  • post()dispatch()defer()の実装におけるシーケンスの問題を修正
  • awaitable<>の実装を修正し、待機中の初期関数 (initiation function) から現在の完了ハンドラを介して例外を伝播するように修正
  • GCC 7でのstd::aligned_allocの検出を修正
  • 新しいコンパイラ (C++23) で間もなく非推奨となるstd::aligned_storageを使用しないよう修正
  • 古いAppleプラットフォームのstd::aligned_allocの検出を修正
  • experimental::coro実装から誤ったアサーションを削除
  • Intel C++でビルドする際のQt定義のマクロに対する防御を追加
  • Windowsでselect_reactorの実装を変更し、インタラプタのソケットの再作成に失敗したために発生した例外がio_context::run()を介して伝播できるようにした
  • さまざまなコンパイラの警告を修正した
  • 新しいasync_result形式を使用するために、すべての合成操作の例とC++11タイムアウトの例を更新
  • C++20の合成操作とコルーチンの例を追加
  • 詳細はRevision Historyを参照

Atomic

  • GitHub #59 ARM, AArch32, AArch64ターゲット向けのエンディアンチェックの移植性を改善
  • GitHub #61 MSVC 14.0 (Visual Studio 2015) のC++17 modeでのコンパイルを修正

Filesystem

  • GitHub #234 Windowsにおいて、ERROR_ACCESS_DENIEDエラーでファイルを開くことができない場合にファイル属性をクエリするためのフォールバック実装を追加。これにより、再解析ポイントまたはシンボリックリンクではないシステムファイルおよびディレクトリに対して、statusおよびsymlink_statusが成功する可能性がある
  • GitHub #236GitHub #237 Windowsにおいて、ファイル属性のクエリ時にERROR_INVALID_PARAMETERを生成するFAT/exFATファイルシステムの回避策を追加。これは、ファイルが存在しないことを報告するstatussymlink_status、構築に失敗したdirectory iterator、およびその他の依存操作に影響する
  • GitHub #240 RTEMSでのコンパイルの問題を回避
  • Linuxにおいて、実行時にcopy_file_rangeENOSYSで失敗した場合のsendfilecopy_file実装への切り替えを修正。 sendfileフォールバックの実装は、ファイルシステムタイプのチェックをスキップするために使用され、一部のファイルシステムでは失敗する可能性があった
  • POSIX.1-2008およびWindows Vista以降で定義されたopenatおよび関連APIをサポートするPOSIXシステムにおいて、以前のリリースで実装されたCVE-2022-21658に対するremove_allの保護が改善さた。以前の修正では、特定の条件で意図しないファイルが削除される可能性があった。他のシステムは脆弱なままである

GIL

  • 注意 GitHub #676 Boost 1.80.0の次かその次のリリースで、サポートする最小C++の言語バージョンをC++17に破壊的変更する計画をしている
  • 追加
    • GitHub #500 GSoC 2020: Perona-Malik anisotropic diffusionアルゴリズムを追加
    • GitHub #499 GSoC 2020: histogramクラスと関連する機能を追加
    • GitHub #514 GSoC 2020: histogramのequalization機能を追加
    • GitHub #515 GSoC 2020: histogramのマッチングアルゴリズムを追加
    • GitHub #506 GSoC 2020: 画像を水平方向(hstack)または垂直方向(vstack)にstackする機能を追加
    • GitHub #516 GSoC 2020: Adaptive Histogram Equalization (AHE) アルゴリズムを追加
    • GitHub #512 GSoC 2020: Standard Hough Transformおよびcircle rasterizationを追加
    • GitHub #512 GSoC 2020: line rasterization向けのBresenhamのアルゴリズムを追加
    • GitHub #565 GSoC 2021: 任意の角度での画像回転を追加
    • GitHub #585 GSoC 2021: Jerry Van Aken氏の「効率的な楕円描画アルゴリズム」に基づく楕円のラスタライズサポートを追加
    • GitHub #520 imageに変換可能なviewからの変換コンストラクタを追加
    • GitHub #527 inverse(boost::gil::matrix3x2<T> m)を追加
    • GitHub #541 standard morphological transformationsを追加
    • GitHub #648 for_each_pixelany_image向けのオーバーロードを追加
    • GitHub #529 C++17 polymorphic memory resourceのimageクラス向けtypedefを追加
  • 変更
    • 破壊的変更 最小C++言語バージョンの要求をC++11からC++14に変更した。現在、GILの大部分はまだC++11コンパイラでコンパイルされているが、その状態が維持される保証はなく、少なくともCC++14をサポートしていないコンパイラは現時点ではサポートされていないと見なされる
    • 破壊的変更 any_color_converted_view()を非推奨とし、将来のリリースから削除する予定。同じ機能として代わりにcolor_converted_view()を使用すること
    • 破壊的変更 GitHub #656 any_image向けのapply_operationを非推奨とし、将来のリリースから削除する予定。同じ機能として変わりにvariant2::visitを使用すること
    • GitHub #573 numeric extensionをcoreに移動
    • GitHub #636 C++17 filesystemのサポートを追加。BOOST_GIL_IO_USE_BOOST_FILESYSTEMマクロを定義して強制的にBoost.Filesystemを使用しない限り、自動的にstd::filesystemを検出して使用する
    • GitHub #655 pixel_multiply_tpixel_multiplies_tpixel_divide_tpixel_divides_tに名称変更
    • GitHub #653 io/dynamic_io_new.hppio/detail/dynamic.hppに名称変更
    • GitHub #653 construct_matched関数をboost::gil::detail名前空間に移動した。これは、他の実装の詳細としてのみ使用されていた
    • GitHub #679 packed_pixelをtrivially copyableかつassignableにした
    • GitHub #685 非推奨のlibtiff v4.3のtypedefを、C99の固定サイズ整数で置き換えた
  • 削除
  • 修正
    • GitHub #505 RGBからHSLへの変換を修正
    • GitHub #522 RGBからsigned CMYKへの変換を修正
    • GitHub #530 hsv.hppでの不要な数値キャストを削除
    • GitHub #542 homogeneous_color_baseのピクセル要素を参照するデフォルトコンストラクタを修正
    • GitHub #556 subchroma_image_viewでのローカルオブジェクトへの参照を返していた問題を修正
    • GitHub #568 diffusion.hppに不足していたインクルードガードを追加
    • GitHub #526 any_image_view<>::const_tを修正
    • GitHub #617 I/O extensionsのC++20との非互換を修正
    • GitHub #628 すべてのサンプルコードがエラーなくビルドできることを確認
    • GitHub #577 float32_tチャンネルモデルをもつimage向けのconvolve_2dを修正
    • GitHub #621 1次元以外のiterable viewに対するfor_each_pixelを修正
    • GitHub #650 PNG I/Oでのis_equal_to_sixteenの不足していたテストを修正
    • GitHub #654 2つのコンポーネントのdevicen_tを再許可。この機能はBoost 1.72.0で削除されていた
    • GitHub #649 空の次元でのimageクラスのメモリリークを修正
  • 謝辞
    • Cypre55, Samuel Debionne, Mike-Devel, Edward Diener, Peter Dimov, Omar Emara, Dhruva Gole, Nicolas Herry, Eugene K, Avinal Kumar, Gaurav Kumar, Marco Langer, Pranam Lashkari, Mateusz Łoskot, Giovanni Mascellani, Debabrata Mandal, Gopi Krishna Menon, René Ferdinand Rivera Morell, Felix Morgner, Harshit Pant, Paul92, André Schröder, Scramjet911, Siddharth, Dirk Stolle, Prathamesh Tagore, theroyn, Olzhas Zhumabek

Graph

  • バグ修正
    • GitHub #286 stoer_wagner_min_cutの、各mincutフェーズの最後に頂点がマージされないバグを修正
    • GitHub #293 strong_componentsの戻り値型の変換警告を修正
    • GitHub #232 boykov_kolmogorov_max_flow名前付きパラメータのオーバーロードのコンパイル失敗を修正
  • 全般的なコード改善
    • GitHub #260 astar_search_no_init_tree内の冗長なcombine呼び出しを削除
    • GitHub #261 d_ary_heap_indirect<>::childの冗長なchild_idx引数を削除
    • GitHub #303 traversal categoryのドキュメントを改善
  • 謝辞
    • Viktor Pti、Sebastian Brockmeyer、Etienne dg

Histogram

  • (物理的または論理的に) 特定の条件下でサイズがゼロの軸を使用してヒストグラムを反復しようとしたときのindexedのセグメンテーション違反を修正
  • 非推奨となっていたAPIを削除
    • accumulators::thread_safeクラス: accumulators::count<T, true>を使用すること
    • accumulators::sum::largeメンバ関数とaccumulators::sum::smallメンバ関数: accumulators::sum::large_partメンバ関数とaccumulators::sum::small_partを使用すること
    • 型の別名algorithm::reduce_option: algorithm::reduce_commandを使用すること
    • 関数テンプレートaxis::traits::static_options: axis::traits::get_optionsを使用すること
    • 関数テンプレートaxis::traits::static_is_inclusive: axis::traits::is_inclusiveを使用すること
    • 型の別名indexed::range_iterator: indexed::iteratorを使用すること
    • 型の別名indexed::accessor::reference: indexed::accessor::const_referenceを使用すること

Iterator

  • GitHub #73 C++11以降向けに、function_output_iteratorに値書き込みの完全転送サポートを追加
  • 別のfunction_output_iteratorを逆参照した結果をfunction_output_iteratorへ書き込んだ場合に対する保護を追加

JSON

  • value::atに非constのオーバーロードを追加
  • プラットフォームのエンディアンを手動で選択する機能を追加
  • string::subview()のオーバーロードを追加
  • array::erase(it)のセグメンテーション違反を修正
  • libc++でのserializeのパフォーマンス劣化を修正
  • GCC 8でstd::string_viewへの変換があいまいになる問題を修正
  • ビッグエンディアンのプラットフォームでの構文解析を修正
  • コメント後のカンマのハンドリングを修正

LEAF

  • 破壊的変更 throw leaf::exception(....)leaf::throw_exception(....)に修正
  • サポートする稀なビルド設定でのバグを修正 (例外処理は有効だが診断は無効)
  • 0の代わりにnullptrを使用するよう修正
  • ささいな警告を修正

Locale

  • C++03以下のサポートを非推奨とした。次のリリースからはC++11を要求する
  • Boost.Regexと互換性のない-sICU_LINKの一時的な置換として-sICU_LINK_LOCALEを提供する。 -sICU_LINK_LOCALE-sICU_LINKは非推奨になり、Boost.Regexと互換性があるように ICU_*_NAMEオプションに置き換えられる
  • 空の文字列を変換する際のICU collator実装内での未定義動作とアサーション失敗を修正
  • 共有ライブラリ内のクラスの可視性に関連するいくつかの問題を修正(Unixのみ)
  • C++20モードの互換性を修正
  • BOOST_USE_WINDOWS_Hとの互換性を修正
  • インクルード不足によるビルド失敗を修正
  • 多くの警告を処理または抑制し、ビルドログをきれいにした

Log

  • バグ修正
    • GitHub #181 IPv6アドレスがsyslogサーバーに使用されている場合に、UDPソケットベースのsyslog_backendで誤ったローカルアドレスをバインドする問題を修正
    • GCC 11.2からのlibstdc++のバグに対する回避策を追加。max_size_decorがformat streamで使用された場合、std::codecvt::do_lengthが誤って入力バッファにアクセスし、バッファオーバーフローを引き起こしていた
  • 詳細はchangelogを参照

Math

  • C++11サポートを非推奨化 : 2023年からはC++14を最小C++の言語バージョンとする。これはGCC 5やMSVC 14.1を最小要求とすることを意味する
  • GitHub #734 constexprのfmaサポートを追加
  • GitHub #770 Chatterjee Correlation Coefficientのサポートを追加
  • すべての分布のPDFの対数サポートを追加
  • 例外無効、RTTI無効のビルドサポートを改善
  • GitHub #778 1F1コーナーケースの小さなバグをいくつか修正

Multiprecision

  • C++11サポートを非推奨化 : 2023年からはC++14を最小C++の言語バージョンとする。これはGCC 5やMSVC 14.1を最小要求とすることを意味する
  • boost/cstdfloat.hppとこのライブラリの衝突を修正
  • GCCとClangでの警告を修正
  • ストリームに末尾の区切り文字があり、空白がない複合型(complex、interval rational)の入力ストリーミングを修正
  • 入力が1、2、または3つであるconstexpr整数平方根を修正
  • float128.hppに不足していた#include <memory>を追加
  • あいまいさを防ぐために、numberクラスの2引数コンストラクタを修正
  • gmp.hppのゼロ除算の動作を修正し、より一貫性のあるものにした

Multi-index

  • メンテナンス作業

Nowide

  • ファイルを使用したbulk I/Oのパフォーマンスが大幅に向上
  • basic_filebuffflushが失敗したときのsyncの誤った戻り値を修正
  • basic_filebuf:実際には何も書き込まれなかったが、バッファがwriteモードの場合に発生する可能性があった未定義動作を修正
  • basic_filebuf:文字のputbackを制限(例としてpbackfail)。バッファリングされた文字(1文字のみ)のputbackのみを許可

Optional

  • std::hash<boost::optional<T>>の特殊化を追加。これは、そのような特殊化自体を定義するプログラムにとって重大な変更である

STLInterfaces

  • GitHub #53 依存型C::const_iteratorに不足していたtypenameを追加
  • GitHub #54 連続的なiterator_interfaceのviewのインスタンス化での.data()のコンセプトチェックが失敗する問題を修正
  • 標準ライブラリにあるものと同様に機能する、相互運用可能なviewとview adaptorをかんたんに定義できるようにする機能を追加:
    • C++23のstd::bind_back()std::range_adaptor_closureをC++23より前のバージョンで使用できるものとして追加
    • view adaptorをかんたんに定義できるようにするために、テンプレートclosureadaptorを追加 (P2387)

System

  • error_codestd::error_codeに変換されてからerror_codeに戻されるときに、可能であれば元のデータが復元されるようになった
  • リークチェッカーに表示される1回限りの割り当てを回避するために、error_categoryからstd::error_categoryへの変換を作り直した
  • error_codeのソースの場所と対応するassignを置き換えることを可能にするコンストラクタを追加
  • resultに変換コンストラクタを追加

Unordered

  • メジャーアップデート
    • 内部実装をリファクタリングし、劇的に高速化
    • HasherKeyEqualfinalにすることを許可
    • ドキュメントを更新し、新たな内部データ構造のベンチマークグラフと説明を追加

Utility

  • GitHub #91 string_view/string_refmax_sizeが誤った戻り値を返す問題を修正
  • GitHub #94 string_view::compareがいくつかの入力で例外を送出する可能性があるため、noexceptを削除
  • GitHub #96 string_view/string_refに、引数なしのsubstrのサポートを追加
  • GitHub #93 C++23から導入されるstring_view::containsメンバ関数を追加
  • GitHub #92 string_viewにおいて、remove_prefix/remove_suffixメンバ関数にアサーションを追加してprefix/suffixの長さが文字列ビューの長さを超えないという事前条件を適用。prefix/suffixの長さを静かにclampする以前の (アンドキュメントな) 動作は非推奨であり、将来のリリースから削除される予定

Wave

  • バグ修正
    • Wave #24 条件節のあとの行番号がおかしくなる問題を修正
    • Wave #160 MSVCの/permissive-モードで、テストがC2660とC2440のコンパイルエラーになる問題を修正
    • Wave #161 BOOST_WAVE_THROW_NAME_CTXがcontext callbackで戻り値を返さず、常に例外を送出してしまう問題を修正
    • Wave #162 プロプロセスされた翻訳単位にBoostのヘッダがインクルードされている場合に、Waveがboost/integer.hpp(99)で失敗する問題を修正

Build

  • B2 version 4.9.2をリリース

テスト済みコンパイラ

主要なテストコンパイラ:

  • Linux:
    • Clang: 3.4, 3.5, 3.6, 3.7, 3.8, 3.9, 12.0.0, 13.0.0, 14.0.0
    • Clang, C++11: 3.4, 11.0.0, 13.0.0, 14.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
    • 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
    • Clang, C++20: 11.0.0, 12.0.0, 13.0.0, 14.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