最終更新日時:
が更新

履歴 編集

Boost 1.84.0リリースノート

本家リリースノート:

リポジトリは以下:

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

デフォルトのターゲットWindowsバージョンを更新

Windows SDKコンポーネントを定義するために他のBoostライブラリが内部的に使用するライブラリであるBoost.WinAPIが更新され、可能な限りデフォルトでWindows 10 APIをターゲットにするようになった。これは、BoostライブラリがデフォルトでWindows 10をターゲットとし、古いWindowsバージョンでは動作しない可能性があることを意味する。これには、Boostによって配布されるビルド済みバイナリも含まれる。

影響を受けるライブラリは以下の通り:

  • Boost.Atomic
  • Boost.Beast
  • Boost.Chrono
  • Boost.DateTime
  • Boost.DLL
  • Boost.Filesystem
  • Boost.Interprocess
  • Boost.Log
  • Boost.Pool
  • Boost.Process
  • Boost.System
  • Boost.Stacktrace
  • Boost.Thread
  • Boost.UUID

これらに依存するライブラリも同様である。

ユーザーは、Boostをビルドして使用する際に、BOOST_USE_WINAPI_VERSIONまたは_WIN32_WINNTを必要なバージョン番号に定義することで、デフォルトを変更することができる。例として、Windows 7をターゲットにBoostをビルドするには、次のようなコマンドラインを使用することができる:

b2 variant=release define=BOOST_USE_WINAPI_VERSION=0x0601 stage

ただし、個々のライブラリが、サポートされるWindowsの最小バージョンについて独自の要件を持っている可能性があることに注意すること。

Windows APIバージョン番号のリストはUpdate WINVER and _WIN32_WINNTページで確認できる。

新ライブラリ

  • Cobalt
    • C++20コルーチン用の基本的なアルゴリズムと型 (作者Klemens Morgenstern氏)
  • Redis
    • Boost.Asio上に作られたRedisの非同期クライアントライブラリ (作者Marcelo Zimbres Silva氏)

更新ライブラリ

Any

  • GitHub #26 C++03のサポートを終了
  • リファレンスのドキュメント生成を修正。これにより、Boost.PFRのリファレンスによって上書きされないようになった。Peter Dimov氏のデバッグに感謝

Asio

  • 最低言語標準として C++11 を要求するように変更。C++03のサポートを終了
  • 非推奨の機能を boost::asio::execution 名前空間から削除
  • 非推奨の呼び出しフック (invocation hook) とアロケーションフック (allocation hook) を削除
  • channeltry_send_via_dispatchtry_send_n_via_dispatch 関数を追加
  • Asio のプレースホルダと std::bind の互換性を追加
  • 複数の完了シグネチャを持つチャネルの C++11 サポートを改善した。
  • channelの非同期操作と any_completion_handler の互換性を修正
  • BOOST_ASIO_USE_TS_EXECUTOR_AS_DEFAULT を使用したコンパイルと any_completion_handler の互換性を修正
  • 同じカテゴリに属する混合されたexecutorのプロパティ型を比較するために不足していた等号演算子を追加
  • std::exception_ptrで始まる完了シグネチャを持つ非同期操作で spawn ベースのスタックフルコルーチンを使用するとプログラムが終了してしまう問題を修正
  • デフォルト構築された any_completion_handler オブジェクトのassociatorにアクセスしようとするとクラッシュする問題を修正
  • デフォルトの完了トークンで動作するように ssl::stream<> クラスの async_handshake 操作を修正
  • C++11 を最小言語標準として使用するようにすべてのサンプルコードを更新

Atomic

  • C++03のサポートを終了。新たな要求はC++11以上となる
  • GitHUb #14 FreeBSDとOpenBSDで使用されている、精度を下げたx87拡張doubleのサポートを追加
  • Windows 10より古いWindowsバージョンのサポートは非推奨であり、Boost 1.87で削除される予定。

Beast

  • immediate_executorをサポート
  • 非推奨となっていたアロケーションと実行フック (invocation hook) を削除
  • transfer_opを完了する際に、明示的にstd::size_tを使用するようにした
  • BOOST_ASIO_INITFN_RESULT_TYPEBOOST_ASIO_INITFN_AUTO_RESで置き換えた
  • server-flex-awaitableのサンプルコードでparserをリセットするようにした
  • websocket::stream::async_ping/pongハンドラの要件を正しくした
  • websocket::stream::async_write_someのドキュメントを更新

Chrono

  • C++03のサポートを終了

ContainerHash

  • C++03のサポートを終了

Conversion

Core

  • GitHub #148 ユーティリティ関数 boost::swapboost::core::invoke_swap に名前が変更された
    • 新しい関数は boost/core/invoke_swap.hpp で定義されており、機能的には boost::swap と等価である。古い boost::swap という名前は後方互換性のために残されているが、非推奨であり、将来のリリースで削除される予定である。noexcept の指定は、コンパイル時の再帰によるコンパイルエラーを避けるために削除された
    • BOOST_ALLOW_DEPRECATED_SYMBOLS または BOOST_ALLOW_DEPRECATED を定義することで、移行期間中の非推奨の警告を抑制することができる
  • ヘッダ boost/swap.hppboost/utility/swap.hppboost/core/swap.hpp は非推奨であり、削除される予定である。boost/core/invoke_swap.hppに切り替えること
    • BOOST_ALLOW_DEPRECATED_HEADERS または BOOST_ALLOW_DEPRECATED を定義すると、非推奨の警告を抑制することができる

CRC

  • C++03のサポートを非推奨化した。Boost 1.86.0で削除予定

DLL

Endian

  • C++03のサポートを終了

Filesystem

  • Boost 1.82.0でアナウンスされたように、C++03のサポートは終了した。C++11以降のコンパイラが必要となる
  • GitHub #291 error_code& ec引数をとる一部の directory_entry オブザーバが、正常に戻ったときにエラーコードをクリアしていなかったのを修正した
  • GitHub #293 Windowsで日付と時刻の変換の堅牢性を改善し、1970年1月1日より前の日付のサポートを追加した
  • Boost.Filesystem 1.79.0以降で非推奨となっていたWindows CEへの対応を削除
  • boost/filesystem/string_file.hpp ヘッダを削除。このヘッダはBoost.Filesystem 1.79.0以降で非推奨となっていた
  • 非推奨化: Windows 10より古いWindowsバージョンのサポートは非推奨であり、Boost 1.87で削除される予定

Geometry

  • 解決したIssue
    • GitHub #1138 2つのpolygondifferenceを修正
    • GitHub #1183 union_の結果となるpolgonが不完全になる問題を修正
    • GitHub #1184 intersectionを修正
    • GitHub #1186 union_の不適切なinner ringの代入を修正
    • さまざまなエラーと警告を修正

Heap

  • C++03のサポートを非推奨化した。Boost 1.86.0で削除予定。新たな要求はC++14以上となる

JSON

  • ユーザー型に直接パースする機能を実装
  • optionalvariantの変換カテゴリを追加
  • イテレータの組からのコンストラクタのイテレータ要件を緩和
  • 入力バッファを超える読み込みを修正
  • 初期化子リストのコンストラクタの一貫性がない選択を修正

LEAF

  • result<T>クラスをnodiscard指定
  • メンバ型result<T>::value_typeを追加
  • verbose_diagnostic_infoはエラー処理スコープに到達するまで文字列への変換を遅延させる
  • 組み込み開発のサポートを改善
  • Visual Studio 2015との互換性を改善 (godmaycrying氏に感謝)
  • 小さなバグ修正と改善
  • GCC 4.8と4.9のサポートを終了

LexicalCast

Locale

  • to_titleのWinAPIバックエンドは、空文字列を返す代わりに、文字列を変更しないようにした
  • char8_tstd::u8stringのサポートを改善
  • GitHub #198 負の時間を使用した際の、ひとつずれるエラー (off-by-one error) を修正
  • GitHub #194 フォーマット文字列における波括弧のエスケープ処理を修正
  • GitHub #189 とくにMSVCでの、ビルドエラーと警告を修正

Lockfree

  • C++03のサポートを非推奨化した。Boost 1.86.0で削除予定。新たな要求はC++14以上となる

Log

  • C++03のサポートを終了。C++11以降のコンパイラが必要となる
  • Boost.Regex v5を使用するのに十分な適合性を持つC++11コンパイラでビルドした場合、Boost.Regex v5はヘッダのみであるため、Boost.LogはBoost.Regex組み込み済みライブラリとリンクしなくなった
  • Windows 10より古いWindowsバージョンのサポートは非推奨であり、Boost 1.87で削除される予定

Math

  • ccmath のエラー検出を改善
  • GitHub #1028 非推奨になった std::numeric_limits<>::has_denorm の使用を削除
  • GitHub #1035 非心t分布 (non-central-t distribution) が収束しないバグを修正
  • GitHub #1034 tgamma が負の整数にならないように 1F1 の Bessel 関数近似を調整
  • GitHub #1006 ibeta の偽 (spurious) のオーバーフローとゼロによる除算を回避
  • Sterling の tgamma の近似を使用する際の精度の改善。GitHub #1007で開始された作業を完了
  • GitHub #1007 大きな初期推測に対する inverse_discrete_quantile の修正
  • GitHub #1000 ニュートン法による平方根探索を改善
  • GitHub #997 中央値が0でない場合のmedian_absolute_deviationを修正した
  • cstdfloat.hppをgcc-14向けに修正
  • <stdfloat> で宣言された新しい型が動作するように更新
  • 不必要なオーバーフローや使用上の制限を避けるため、hypergeometric_distributionを32ビットではなく64ビットの整数を使用するように変更

Multi-index

  • GitHub #70 ADLをサポートしていない古いコンパイラにおけるシリアライズ関連のコンパイル時バグを修正

Multiprecision

  • GitHub #567 テストコード中の boost::arraystd::array に変更した
  • GitHub #553 cpp_int::eval_convert_tonoexcept になるように修正
  • グローバルの精度を変更すると、現在のスレッドの精度も変更されるようにした
  • GitHub #540 rational_adaptor の構築のバグを修正

MySQL

  • connection::reset_connectionconnection::async_reset_connectionを追加。これらの関数は、接続を閉じたり再度開いたりすることなく、セッションの状態 (プリペアドステートメント、変数、ロックなどを含む) をクリーンアップする
  • MySQL server v8.1.0で導入されたエラーコードを追加
  • 関数のデシリアライズでのfuzzテストを追加

PFR

  • [新しい大機能 : フィールド名リフレクション]。新たな関数constexpr boost::pfr::get_name<N, T>()を追加。この関数は、集成体TN番目のインデックスのフィールド名をstd::string_viewで返す。C++20以上を要求。この機能が使用可能な場合、BOOST_PFR_CORE_NAME_ENABLEDが値1で定義される。GitHub #129と実装アイディアにおいて、Denis Mikhailov氏Bela Schaum氏X-Ryl669氏に多大なる感謝
  • GitHub #134 C++17でfor_each_field()constexprにした。Alexander Karatarakis氏に感謝

Predef

  • バージョン1.15.0
  • Microsoft STLの検出を追加 (Henrik Gaßmann氏)

Random

  • C++03のサポートを終了
  • Boost.Multiprecisionを使用したテストでのオーバーフローを修正

Ratio

  • C++03のサポートを終了
  • BOOST_RATIO_EXTENSIONSのサポートを削除。Ratioは現在、標準<ratio>ヘッダで実装される

Stacktrace

System

  • result<U&, E>のサポートを追加
  • resultoperator|を追加
  • resultoperator&を追加
  • resultoperator&=を追加

Test

  • C++03のサポートを終了
  • GitHub #392 glibc 2.2 - 2.17でのPRIxPTRの使い方を修正
  • GitHub #390 MSVCの警告C5263「一時オブジェクトにstd::moveを呼び出すとコピー省略が発生する」を修正

Thread

  • C++03のサポートを終了

TypeIndex

  • C++03のサポートを終了
  • BOOST_TYPE_INDEX_REGISTER_RUNTIME_CLASS((A)(B)(C)(D))の構文をBOOST_TYPE_INDEX_REGISTER_RUNTIME_CLASS(A, B, C, D)に変更
  • Boost.PPへの依存を削除

TypeOf

  • C++03のサポートを終了

Unordered

  • メジャーアップデート
  • boost::concurrent_flat_setを追加
  • 並行コンテナに[c]visit_while操作を追加。これは実行ポリシーとして逐次処理と並列処理のどちらでも使用できる
    • この関数は、関数オブジェクトffalseを返すかすべての要素を参照するまで、テーブルの各要素への参照で関数オブジェクトfを呼び出す
  • boost::concurrent_flat_(map|set)からboost::unordered_flat_(map|set)への (およびその逆) 効率的なムーブ構築を追加
  • ルックアップのパフォーマンスを向上させるために、並行コンテナへのbulk visitationを追加
  • ユーザーコードから並行コンテナへの不正な再入 (reentrancies) を検出するデバッグモードの仕組みを追加
  • 全てのコンテナとそのイテレータ型に、Boost.Serializationのサポートを追加
  • オープンアドレッシングと並行コンテナに、ファンシーポインタ (fancy pointer) のサポートを追加。これにより、Boost.Interprocessのアロケータを使用して共有メモリ上にコンテナを構築するというようなシナリオが可能になる
  • GitHub #221 閉アドレスコンテナのローカルイテレータに対するメンバポインタ演算子のバグを修正。この問題を発見し修正してくれたvslashg氏氏の貢献に感謝
  • このリリースから、boost::unordered_[multi]setboost::unordered_[multi]mapはC++11以降でのみ動作する

Variant

  • GitHub #107 C++03のサポートを終了
  • Boost.MoveとBoost.Bindへの依存を削除

Wave

  • バグ修正
    • GitHub #188 "#pragma\\n"と遭遇した際のセグメンテーション違反を修正

テスト済みコンパイラ

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

  • 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