最終更新日時:
が更新

履歴 編集

Boost 1.82.0リリースノート

本家リリースノート:

リポジトリは以下:

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

C++03サポートの終了

以下のライブラリは、いまから2リリース後の1.84.0でC++03のサポートを終了する:

  • Align
  • Bind
  • Chrono
  • ContainerHash
  • Endian
  • Function
  • Functional
  • Io
  • Random
  • Ratio
  • SmartPtr
  • System
  • Thread
  • Timer
  • Typeof
  • Unordered

このリリース(1.82)と次のリリース(1.83)は、上記のライブラリとその依存関係の大部分でC++03をサポートする最後のリリースとなる。

古いバージョンのコンパイラでは、サポート不足やバグのためにC++11が部分的にしか実装されていないことが多いため、どのコンパイラがC++11の要件を満たしているとみなされるかは、ライブラリによって異なる場合がある。

しかし、一般的なルールとして、コンパイラがC++11のキーワードや構文をまったく認識しない場合(例:noexceptの使用、constexprの使用、=deleteされた関数を定義すると即コンパイルエラー)、コンパイラがC++11必須のヘッダーをまったく提供しない場合(例:<atomic><chrono> をインクルードしようとすると失敗する)、あるいはコンパイラがC++11の機能やヘッダを提供するがまったく使用できない場合、このコンパイラはC++11コンパイラとはみなされない。

このため、例えば14.0 (2015) 以前のMicrosoft Visual C++や、4.8以前のGCCは除外される。

新ライブラリ

  • MySql
    • Boost.AsioベースのMySQLデータベースサーバーのC++11クライアント (作者Reuben Perez)

更新ライブラリ

更新ツール

ContainerHash

  • hash_valuestd::nullopt_tに対するオーバーロードを追加
  • is_tuple_likeと、hash_valueのtuple-like型に対するオーバーロードを追加
  • stringのハッシュ化として、品質と速度の両方の改善のためにmulxp1_hashを使用するよう修正

Math

  • [C++11サポートを非推奨化] 最小の標準バージョンとしてC++14を要求する
    • 最小テストコンパイラはClang-5、GCC-5、MSVC-14.1 (2017) となる
  • 多項式評価のためのEstrin's methodを追加
  • GitHub #939 非心分布 (non-central distributions) のさまざまな問題を修正し、より大きな非心分布に対応できるようにした
  • CMake install targetを追加
  • 例外のない環境で使用できないものを無効化するために special_functions.hpp を修正
  • C++14で条件番号の計算 (condition number calculation) が動作するよう修正
  • GitHub #923 constexpr テーブル駆動関数を修正し、コードが実際には constexpr でない場合に大幅な速度低下を避けるようにした
  • GitHub #894 tanh_sinh の境界処理を改善
  • Linux arm64、s390x、Apple M1 のテストを追加し、128ビットlong doubleを扱うテストケースを修正
  • 無限大とNaNをより良く扱うためにconstexpr数学関数を改善
  • 積分器 (integrators) をconst-correctにした
  • GitHub #898 tanh_sinh の積分器がアンダーフローする問題を修正
  • いくつかのプラットフォームがまだサポートしていないため、std::cbrtを使用しないようにした
  • GitHub #892 非心t (non-central T) が偽 (spurious) の FE_INVALID 例外を発生させるのを止めた
  • 二項分布のエッジケースを修正
  • GitHub #884 ibetaの非常に小さな引数の取り扱いを改善
  • ibetaでの無限大とNaNの取り扱いを改善 [@https://github.com/boostorg/math/issues/878 874]を参照してください.
  • GitHub #781 powm1のエラーハンドリングを改善
  • 指数が超大きい (super large)、または小さいときに、root finder bracketingをより速くブラケットするよう改善
  • root finderのエッジケースを修正
  • 多くの雑多な警告を修正
  • C++17を必要とする機能を使用する際にアサーションを追加し、古い標準バージョンでコンパイラを起動したときのエラーメッセージを改善

Multi-index

  • シリアライズでcollection_size_typeの代わりにunsigned longを使用するようにし、この変更にともなってmulti_index_containerのシリアライズバージョンを2から3に上げた。collection_size_typeの値を特別扱いするカスタムアーカイブ型では、古いアーカイブの読み込みに失敗することがある。そのような場合は、読み出し操作の後方互換性を確保するためにマクロ BOOST_MULTI_INDEX_ENABLE_SERIALIZATION_COMPATIBILITY_V2 をグローバル定義する
  • メンテナンス作業

Multiprecision

  • [C++11サポートを非推奨化] 最小の標準バージョンとしてC++14を要求する
    • 最小テストコンパイラはClang-5、GCC-5、MSVC-14.1 (2017) となる
  • 新たに先行宣言のヘッダを追加
  • GitHub #479 Eigenとの相互運用性を更新し、Eigenの詳細に依存しないよう修正
  • Cmake install targetを追加
  • GitHub #499 スタンドアロンの場合の文字列からのcpp_dec_float構築を修正し、より良いエラーハンドリングを実現した
  • GitHub #530 C++17モードでの冗長な定義を削除
  • スタンドアローンの itruncltrunc のエラーハンドリングを修正
  • 8進数文字列の解析時に初期化されない可能性があるストレージを修正
  • arm64 と s390x の CI テストを追加
  • GitHub #506 powm のために不足していた式テンプレートの展開コードを追加

StaticString

  • Boost.Coreのstring_viewstd::string_viewの相互運用をできるよう修正

Test

  • いくつかの未使用変数の警告を修正
  • sprintfの非推奨の警告を修正
  • basic_cstring::rfindの未定義動作を修正
  • GitHub ActionsでのCIを追加

Unordered

  • メジャーアップデート
  • ノードベースで、オープンアドレッシングなコンテナboost::unordered_node_mapboost::unordered_node_setを追加
  • P2363で規定された異種混合ルックアップ (heterogeneous lookup) の拡張メンバ関数を追加
  • オープンアドレッシングコンテナのpost-mixing前の処理を、定数による拡張乗算 (extended multiplication by a constant) に基づく新しいアルゴリズムに置き換えた
  • emplace内部で、スタックローカル型がコンテナのアロケータを使用して適切に構築されず、uses-allocator 構築を壊していたバグを修正

URL

  • 自動的に%のエンコーディングを行うurl::formatを追加
  • URL routerの例を追加
  • set_params便利関数を追加
  • string_viewへの暗黙変換をサポート
  • パースコンストラクタをimplicitにした
  • string_token::argが仮想デストラクタとslice protectionを持つようにした
  • BOOST_URL_DISABLE_THREADSをサポート
  • 改善とバグ修正:
    • WIN32_LEAN_AND_MEANが再定義された警告を修正
    • 欠落 (absent) と空 (empty) のコンポーネントの差分比較
    • 空ポートのようなセグメントを持つ hier_part_rule を検出
    • root上で正規化した場合のセグメント比較
    • hier-part path-rootless は無効なセグメントを考慮するよう修正
    • オーバーフローした場合に、ポート番号を0にするよう修正
    • ipv4 から文字列のオーバーフローを検出するアルゴリズム

Build

  • B2バージョン4.9.4をリリース

テスト済みコンパイラ

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

  • 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