最終更新日時:
が更新

履歴 編集

Boost 1.62.0リリースノート

本家リリースノート:

リポジトリは以下:

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

新ライブラリ

  • Fiber

    • ユーザースレッド/ファイバーのフレームワーク
  • QVM

    • グラフィック処理、ビデオゲーム、シミュレーションアプリケーションなどで必要となる、2、3、4次元の静的なサイズを持つクォータニオン、ベクトル、行列を操作するためのジェネリックライブラリ

更新ライブラリ

Atomic

  • Oracle StudioとSPARCのサポートを改善。SPARCv8+に対するネイティブのアトミック操作を提供するようにした

Chrono

  • #11330 durationをゼロ初期化するのは、C++98モードもしくはBOOST_CHRONO_DURATION_DEFAULTS_TO_ZEROがdefineされたときのみとし、それ以外は未初期化とした
  • #11618 Chrono IO V2のドキュメントで「ios_state.hpp」というヘッダが記載されていたが、正しくは「ios_base_state.hpp」
  • #11631 Chrono IO V2でclock_stringをカスタマイズできなくなっていた問題を修正

Circular Buffer

  • #6277 デバッグ実装がデバッグモードで使用されなくなる。デバッグ実装には、通常の実装と同じレベルのスレッド安全性の保証がない。この変更によりBOOST_CB_DISABLE_DEBUGマクロは使用されなくなり、代わりにBOOST_CB_ENABLE_DEBUGマクロを定義することでデバッグ実装が有効になる。

Container

  • バグ修正
    • Trac #9481 コメントの誤字を修正
    • Trac #9689 pairpiecewise_constructを追加
    • Trac #11170 index_of()のドキュメント間違いを修正
    • Trac #11802 flat_multimapordered_range_t付きinsert()において、非デフォルトのソート順を使用した場合に挿入後の並び順がおかしくなる問題を修正
    • Trac #12117 flat_setordered_unique_range付きの挿入操作において、順序付けされていない範囲が渡されたらアサート失敗するようにした
    • Trac #12177 vector::priv_merge()のなかでuintptr_tを名前空間修飾せずに使っていたので修正
    • Trac #12183 GCC 6.1でstringの実装がstrict aliasing違反であると見なされていたので修正
    • Trac #12256 set<std::pair<int,int>>::insert()がVS2012のデバッグモードでコンパイルエラーになる問題を修正
    • Trac #12273 static_vectorsmall_vectorに、capacity()の定数版であるstatic_capacity静的メンバ定数を追加
    • Trac #12286 pmr::flat_mapがコンパイルに失敗する問題を修正
    • Trac #12296 dequeのメモリリークを修正
    • Trac #12319 flat_setは例外送出なしにムーブ構築できるべき
  • 全てのコンテナのデフォルトコンストラクタとムーブコンストラクタのnoexcept式を改訂
  • C++17のinsert_or_assign()try_emplace()mapflat_mapに実装
  • C++17のextract()insert(node)mapmultimapsetmultisetに実装

Context

  • #12215 一部のフィールドがゼロ初期化されていなかったために、Windows環境でクラッシュする問題を修正
  • #12242 MacOS上のIntel C++ Compilerでのビルドエラーを修正
  • execution_context_v1のスタック巻き戻しを修正

Coroutine

  • Coroutine2を推奨するために、Coroutineライブラリを非推奨化

Coroutine2

  • #12221 coroutine<>::push_typeのコンストラクタがコルーチン関数を実行しないようにした。Coroutine2の前メジャーバージョンであるCoroutineライブラリでは元々実行しないようになっていた。この問題のために、コンストラクタ時点でコルーチン関数が最後まで到達して実行が終了し、関数呼び出し演算子で改めてコルーチン関数を実行する際に、終了済みの関数実行を再開してしまうという動作になっていた
  • coroutine<>::push_typeの構築時に発生した例外を飲み込まないようにした

DLL

  • マングリングされたシンボルとクラスの読み込みを実装。Klemens Morgensternのコントリビュート
  • detail::aggressive_ptr_cast中の使用されない変数の警告を抑制 pull-request 9
  • 存在しないセクションを問い合わせることを許可 pull-request 32
  • テストとドキュメントの追加

Functional/Forward

  • C++11でのコンパイルエラーを修正

Geometry

  • 改善
    • Union : (いくつかの例外を除いて)出力が正しくなるよう修正。自己接線ポリゴン (self-tangent polygons) や共有エッジ (shared edges) も同様に修正
    • SVG : boost::variantのジオメトリをサポート
    • SVG : svgに座標をデフォルトでdoubleとして書き込むようにした
    • 新しいコンパイラでコンセプト名が衝突していたため、このライブラリで定義しているコンセプトの名前空間を名称変更
    • 球面ジオメトリと地理的ジオメトリの関係操作と集合操作で使用できる新たな球面交差戦略 (spherical intersection strategy) を追加 (これまでは、全ての座標系でデカルト交差戦略 (cartesian intersection strategy) が使用されていた)
  • 解決したチケット
    • #12189 入力のpoint typeが異なる場合の関係操作がコンパイル失敗する問題を修正
    • #12287 rtree.query()contains()述語を使用した際に不正な結果になる問題を修正

Interprocess

Intrusive

  • バグ修正
    • #11476 BOOST_NO_CXX11_DECLTYPEを定義した場合にhas_member_function_callable_with.hppがコンパイル出来なかったのを修正
    • #11994 侵入型コンテナに使用するキー抽出器が値でキーを返せるように
      • 訳註: これまでは参照を返していたため、値を返す抽出器を用いた場合に寿命の問題があった
    • #12184 clangが-Wdocumentationで発する警告を抑制
    • #12190 侵入型リストとflat_mapの組み合わせがコンパイルできなかったのを修正
      • 訳註: flat_mapはBoost.Containerが提供する連想コンテナの一種である
    • #12229 動的にキーが変化する場合にintrusive::unordered_set<T>::rehash()が動作しなかった問題の対応
      • 訳註: 通常キーが変更されることは想定されていないため、rehash()それ自体に変更は加えられなかった。代わりにfull_rehash()が追加されたのでその様な場合はそちらを使用すること
    • #12245 bstreeが静的なsize_traitsを使用していることによるデータレースを修正

Lexical-Cast

  • 正しくない静的アサーションを修正 #11759

Log

  • 新機能
    • ローカルマシンに対するプロセス間ロギングの新たなツールを追加。この実装は、resource name wrapper、プロセス間メッセージキュー、sink backendを含む
    • 新たな文字デコレーターmax_size_decorを追加。このデコレーターは、指定の長さまでフォーマッタの出力を制限できる
  • バグ修正
    • #12178 ロギングストリームが異なるログレコード間でフォーマット設定を維持できるよう修正
  • 詳細は changelog を参照

Math

  • 新機能
    • 全ての特殊関数に対して、(たとえばBoost.MultiPrecisionのmpfr_float型で)実行時に正しく精度を変更できるようにした。
  • 修正
    • tgamma_delta_ratioについて、basedeltaより小さい場合の比較を修正
    • GCC 4.4でのテスト失敗を修正

Regex

  • #12222 いくつかの不正な正規表現を解析したときのバッファオーバーランを修正
  • #12152 ライブラリビルドでのICUの検出を修正
  • #11940 大文字・小文字の区別を変更した際に発生するバグを修正
  • #11988 \x{}式で、intより広い型を許可した (たとえばchar32_tなど)

Optional

  • バグ修正
    • Trac #12179 optional_fwd.hppを最初にインクルードするとコンパイルエラーになる問題を修正

Phoenix

  • MSVC 10環境下で非順序連想コンテナの前方宣言に問題があった GitHub PR #18
  • 使用されていないプリプロセス済みファイルを削除した GitHub PR #28
  • switch_のドキュメントミスを修正 #8156
  • 非順序連想コンテナの設定をクリーンアップ GitHub PR #33
  • 未使用のプレースホルダの警告を抑制
  • 2引数を受ける数学関数に与える引数が不足していたのを修正

Test

  • Boost.Test v3.3
  • 新機能
    • データセット駆動の各テストケースが一意な名前を持つようにし、データセットの全てのサンプルテストを同じテストスイートで動かすようにした
    • 新たなコマンドラインスイッチ--loggerでテストロガーを設定できるようにした
    • 同時に複数のロガーを持てるようにし、それぞれのロガーがログレベルと出力ストリームを持てるようにした
    • 新たなロガーとしてJUNITを追加した。これは、Junit/xUnit互換の出力できるストリームである
    • 環境変数BOOST_TEST_RUN_FILTERSで複数のテストに対するフィルターを設定できるようにした
  • バグ修正
    • GitHub PR #81 ESXiコンパイラでBOOST_TEST_DISABLE_ALT_STACKフラグを使用できるようにした
    • #8707 Boost.TestからxUnitのXMLを出力したい
    • #8834 Boost.TestのレポートとしてXMLとHRFを生成したい
    • #11128 BB10/QNXでのビルドエラーを修正
    • #11845 データセットのテストケースに一意な名前がほしい
    • #11859 実行パラメータ中のカンマに対するハンドリングが間違っていた
    • #12024 Android環境に存在しないabi::__cxa_demangle関数に依存していた
    • #12093 GCC 4.6.3でのビルドエラーを修正
    • #12103 C標準ライブラリの実装uClibc-0.9.33.2でgetchar関数がマクロになっていたため、名前解決に失敗していた
    • #12224 MSVCでRTTIを無効にするとクラッシュする問題を修正
    • #12241 データ駆動テストでstd::tupleの範囲を指定するとコンパイルエラーになる問題を修正
    • #12257 test_case_genクラスのコンストラクタで一部のメンバ変数が初期化されない問題を修正
    • #12378 Clang 3.8でのコンパイルエラーを修正

Thread

  • Trac #12102 BOOST_THREAD_PROVIDES_INTERRUPTIONSが無効なときにcondition_variable_fwd.hppのコンパイルに失敗する問題を修正
  • Trac #12120 thread/barrier.hppのパフォーマンスを改善
  • Trac #12146 make_exceptional_future()のドキュメントが誤ってmake_exceptional()と記載していた
  • Trac #12202 shared_lockはC++14に合わせてshared_mutex.hppで定義すべきというリクエストだが、対応せず終了
  • Trac #12371 thread/future.hppのコンパイルに失敗する問題を修正
  • GitHub #88 upgrade_lockから送出される例外のメッセージにあった誤字を修正
  • GitHub #89 upgrade_to_unique_lock<>::operator=()内でムーブしていなかった問題を修正
  • GitHub #90 try_lock_wrapper<>::operator=()内でムーブしていなかった問題を修正
  • GitHub #91 locks.hppでshared_lock_guard.hppをインクルードするよう修正
  • GitHub #92 MSVC8でのコンパイルエラーを修正
  • GitHub #93 変数名が重なっていたことによるClangの警告を修正
  • GitHub #94 boost::barrier内で関数の戻り値型が正しく取得できていなかった問題を修正
  • GitHub #95 completion_latchのコンストラクタで使用していないテンプレートパラメータがあったので削除
  • GitHub #96 async_func.hppをinvoker.hppに名前変更
  • GitHub #97 sync_timed_queue<>::pull_until()内でwait_until()の戻り値と比較する型が間違っていたので修正

TypeIndex

  • ctti_type_indexはC++14環境下においてconstexprとなった
    • 実際の型名をコンパイル時にconst char*で得ることが出来るようになった
    • これにより様々な興味深い(例えば以下の様な)事をコンパイル時に実施できる
      • 名前空間を検査する
      • 辞書順で型名をソートする
      • 型がテンプレート型か検査する
      • 等々...
    • いくつかの例を提供している
  • MSVC環境下においてnoexceptを使用した場合の問題、及び型名に空白があった場合の問題を修正した(klemens-morgenstern/developよりpullした)
  • タイプミスの修正 GitHub PR #7
  • CIテストの改善

Unordered

  • 非推奨なboost::iteratorを使用している箇所を削除
  • unordered_multisetunordered_multimapの代入時における例外安全性に関する問題を修正
  • その他の詳細については changelogを参照

Variant

  • #7120, #10278, #12155 variantを、variantから継承した型のオブジェクトから構築できるようにした
  • #5871, #11602 variantのテンプレートパラメータに含まれていない型のオブジェクトが代入されようとした場合に、オーバーロード解決に参加しないようにした (SFINAEフレンドリーにした)
  • #8555 C++11モードでvariantを暗黙の型変換演算子で返すとコンパイルエラーになる問題を修正
  • #11751const参照のオブジェクトを持つvariantで比較演算子がアサート失敗になる問題を修正
  • #11696 variant::operator=(variant&&)がGCCの場合だけnoexceptが付いていたので、Clangにも対応
  • #12057 Boostのヘッダファイルは、ダブルクォートではなく山カッコでインクルードするようにした
  • #12250 BOOST_VARIANT_NO_REFERENCE_SUPPORTマクロと、SFINAEをサポートしていないコンパイラのサポートをやめた
  • MPL終端イテレータの、暗黙のインスタンス化を抑制した
  • 小さな間違いをいろいろ修正 (誤字、インクルード不足)

テスト済みコンパイラ

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

  • Linux:
    • Clang: 3.0, 3.8.0
    • Clang, C++11: 3.0, 3.1, 3.2, 3.3, 3.4, 3.8.0
    • Clang, C++14: 3.5, 3.6, 3.7, 3.8.0, 3.8.1, 3.9.0
    • GCC: 4.4.7, 4.5.3, 4.6.3, 4.7.2, 5.2.0, 6.1.1
    • GCC, C++11: 4.4.7, 4.7.2, 4.7.3, 4.8.5, 4.9.3, 5.2.0, 6.1.1
    • GCC, C++14: 5.2.0, 5.3.0, 5.4.1, 6.1.1
    • Intel: 16.0
    • Intel, C++11: 16.0
    • Intel, C++14: 16.0
  • Windows:
    • GCC, C++03, mingw: 3.4.5, 4.1.2, 4.2.4, 4.3.3, 4.4.0
    • GCC, C++11, mingw: 4.6.4, 4.7.3, 4.8.1
    • GCC, C++14, mingw: 6.1.0
    • Visual C++: 7.1, 8.0, 9.0, 10.0, 11.0, 12.0, 14.0
  • Android:
    • Clang: 3.6, 3.7, 3.8
    • GCC: 4.9, 5.4, 6.1
  • FreeBSD:
    • Clang: 3.4.1, 3.7
    • GCC: 4.8.5, 5.4.0, 6.1.1
  • QNX:
    • QCC: 4.4.2
  • SunOS:
    • Oracle Solaris Studio: 12.5
    • Oracle Solaris Studio, C++11: 12.5

追加して含まれるテストコンパイラ:

  • Linux:
    • Clang: 3.0, 3.8
    • Clang, c++11: 3.0, 3.1, 3.2, 3.3, 3.4, 3.8
    • Clang, c++14: 3.5, 3.6, 3.7, 3.8, 3.9
    • GCC: 4.4.7, 4.5.3, 4.6.3, 4.7.2, 4.8.4, 5.2.0, 6.1.1
    • GCC, C++11: 4.4.7, 4.7.2, 4.7.3, 4.8.5, 4.9.3, 5.2.0, 6.1.1
    • GCC, C++14: 5.2.0, 5.3.0, 5.4.1, 6.1.1, 7.0.0 (experimental)
    • Intel: 16.0
    • Intel, C++11: 16.0
    • Intel, C++14: 16.0
  • OS X:
    • Apple Clang: 7.3.0
    • GCC: 6.1.0
  • Windows:
    • Clang: 3.8.1
    • GCC, C++03, mingw: 3.4.5, 4.1.2, 4.2.4, 4.3.3, 4.4.0
    • GCC, C++11, mingw: 4.6.4, 4.7.3, 4.8.1
    • GCC, C++14, mingw: 4.9.3, 5.1.0, 5.2.0, 5.3.0, 6.1.0
    • GCC, cygwin: 5.4.0
    • Visual C++: 7.1, 8.0, 9.0, 10.0, 11.0, 12.0, 14.0
  • Android:
    • Clang: 3.6, 3.7, 3.8
    • GCC: 4.9, 5.4, 6.1
  • FreeBSD:
    • Clang, C++11: 3.4.1, 3.7.0
    • GCC, C++11: 4.8.5. 5.4.0, 6.1.1
  • Haiku:
    • GCC, C++11: 5.4.0
  • QNX:
    • QCC: 4.4.2
  • SunOS:
    • Oracle Solaris Studio: 12.5
    • Oracle Solaris Studio, C++11: 12.5

翻訳

Akira Takahashi, Kohei Takahashi