最終更新日時:
が更新

履歴 編集

Boost 1.61.0リリースノート

本家リリースノート:

リポジトリは以下:

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

新ライブラリ

  • Compute

    • 並列及びGPU計算のためのライブラリ
  • DLL

    • DLLとDSOを容易に扱うためのライブラリ
    • プラットフォームを横断した次の様な操作を提供する
      • ライブラリをロードする
      • 任意の関数や変数をインポートする
      • マングリングされた関数やシンボルへのエイリアスを作成する
      • セクションやエクスポートされたシンボルを問い合わせる
      • 自身をロードしたり自身に問い合わせる
      • エクスポートされたシンボルからプログラムやモジュールの場所を取得する
  • Hana

    • C++14以降必須
    • 近代的なC++のメタプログラミングライブラリ
    • 高水準での異種型シーケンスへのアルゴリズムを提供する
      • 自然な構文での型レベルでの計算や、ユーザー定義型への操作可能にする
  • Metaparse

    • C++11以降必須
    • コンパイル時構文解析器をコンパイル時に構築するためのライブラリ
      • Spiritに似ているが、Spiritがコンパイル時にパーサを構築し実行時にパースするのに対し、Metaparseはコンパイル時に構築しパースも実施する

更新ライブラリ

Any

  • テストの追加とメンテナンスの為の修正

Container

  • small_vectorに、以下のコンストラクタを追加:
    • small_vector(size_type n, default_init_t)
    • small_vector(size_type n, default_init_t, const allocator_type &a)
    • small_vector(size_type n, const value_type &v)
    • small_vector(size_type n, const value_type &v, const allocator_type &a)
    • template <class InIt> small_vector(InIt first, InIt last)
    • template <class InIt> small_vector(InIt first, InIt last, const allocator_type& a)
  • small_vectorに、基本クラスのオブジェクトを受け取るコンストラクタと代入演算子を追加。これによって異なる初期要素数のテンプレートパラメータを持つsmall_vector同士で変換ができるようになる:
    • explicit small_vector(const small_vector_base &other)
    • explicit small_vector(small_vector_base&& other)
    • small_vector& operator=(const small_vector_base &other)
    • small_vector& operator=(small_vector_base&& other)
  • バグ修正
    • Trac #11820 map::operator[ ]を使用した際のコンパイルエラーを修正
    • Trac #11856 typedef名がクラス名と衝突していたために、pool_resourceでのコンストラクタ呼び出しがコンパイルエラーになっていた問題を修正
    • Trac #11866 small_vectorが範囲をとるコンストラクタを持っていなかったので追加
    • Trac #11867 異なる初期要素数のテンプレートパラメータを持つsmall_vector同士で変換ができなかったため、変換コンストラクタを追加
    • Trac #11912 vectorのexpand_backwardsで、同じソースをムーブする可能性があったので修正
    • Trac #11957 static_vector::max_size()がキャパシティより大きかった問題を修正
    • Trac #12014 set::insert()で、const_iteratorの範囲を挿入しようとすると、オーバーロード解決があいまいでコンパイルエラーとなる問題を修正
    • GitHub #33 throw_exception()std::stringを使用できるよう、インクルードを追加。標準の<stdexcept>をインクルードするだけでは、std::stringは前方宣言しかされない場合があるため。

Context

  • #11246 未定義のシンボルがあったためMinGWでビルドできなかった問題を修正
  • #11365 VS2015RCにおいて、execution_context.hppでエラーが発生していた問題を修正
  • #11652 __cpp_lib_integer_sequenceを確認するようにした
  • #11946 x86_64/MinGW環境でクラッシュする問題を修正
  • fcontext_t: 公開APIではなくなった
  • WinFiber APIのサポートを削除した
  • execution_context: 仕様要求レベルをC++14からC++11に引き下げ
  • execution_context: 新しい実装を追加した
    • 型安全にデータを転送可能
    • スタックの先頭で関数が実行される
    • パフォーマンスを改善
    • 静的メンバのcurrent()は削除された
    • 訳者注: これまでの実装(version 1)と新しい実装(version 2)はクラス名が同一だが互換は無い

Coroutine

  • 浮動小数点数レジスタに関するアトリビュートを削除
    • 訳者注: Boost.Contextで浮動小数点数レジスタの保存を制御できなくなったことにより、浮動小数点数レジスタは常に保存されなくなった

Coroutine2

  • 浮動小数点数レジスタに関するアトリビュートを削除
    • 訳者注: Boost.Contextで浮動小数点数レジスタの保存を制御できなくなったことにより、浮動小数点数レジスタは常に保存されなくなった
  • パフォーマンスを改善
  • 仕様要求レベルをC++14からC++11に引き下げ

Fusion

  • BOOST_PP_IS_EMPTYを使用したことによる、MSVC8での大量の警告を低減 #11157
  • コンテナの変換コンストラクタとSFINAEでコンパイルエラーが発生する場合があった問題を修正 #11766
  • C++11版のfusion::vectorから末尾fusion::void_の特別扱いを削除した pull request 120
  • GCC 4.0および4.1においてICEになる問題の回避策を追加 #5808 #7229
  • GCC 3.4でfusion::convertの呼び出しが曖昧になる問題を修正 pull request 130

Geometry

新機能

  • withincovered_byの、spherical座標系とgeographic座標系でのBox/Boxの組み合わせをサポート

改善

  • オーバーレイ : コロケーション(co-location)な交差点のハンドリングを強化。handle_tangenciesclustersで置き換えた。colocated turnによる多くのバグを修正

解決したチケット

  • #9162 非デカルト座標系(cartesian)でのPoint/Arealの組み合わせに対する関係操作が不正な結果になる問題を修正
  • #10866 union_が1.56と1.57で動作していなかった問題を修正
  • #11018 MultiPolygon同士のintersectionが不正な結果になる問題を修正
  • #11576 Polygon同士のintersectionが不正な結果になる問題を修正
  • #11637 未使用パラメータの警告を修正
  • #11725 union_がholeを作ることに失敗する問題を修正
  • #11789 spherical_equatorial座標系の集合演算がアサーション失敗もしくは不正な結果になる問題を修正
  • #11917 Andoyer距離戦略(geographic distanceのデフォルト)が対蹠点について0を返す問題を修正
  • #11928 測量面積戦略(surveyor area strategy)の精度を向上
  • #11966 svg()関数が、boxと非intの座標系でコンパイルエラーになる問題を修正
  • #11984 union_が自己交差のポリゴンを生成する問題を修正
  • #11987 rtree::remove()がgeographic座標系でコンパイルに失敗する問題を修正
  • #12000 mask_handler関係の、参照を受け取る未使用のコンストラクタを削除
  • #12106 envelope()が非cartesian座標系の非常に短いセグメントに対してアサート失敗する問題を修正

バグ修正

  • SegmentがBoxの面に平行である場合、SegmentとBoxに対するintersectsdisjointが不正な結果となる問題を修正
  • 非cartesian座標系での、エッジケースのPoint/Areal関係の操作を修正
  • spherical座標系とgeographic座標系での、Point/BoxとBox/Boxの組み合わせでのintersectsdisjointのいくつかのケースを修正
  • spherical座標系とgeographic座標系での、Point/Boxの組み合わせでのwithincovered_byのいくつかのケースを修正

Interprocess

バグ修正

  • GitHub Pull #23 MinGWのヘッダーインクルードでの、大文字・小文字を修正

Intrusive

バグ修正

  • Boost Trac #11832 clang-clでコンパイルエラーとなっていた問題を修正
  • Boost Trac #11865 Clang 3.6 (C++11/C++14)において、intrusive::listの明示的コンストラクタがエラーとなっていた問題を修正
  • Boost Trac #11992 key_typeを取るinsert_checkのオーバーロードを追加
  • GitHub Pull #19 ebo_functor_holder: コピーコンストラクタのコンパイルエラーを修正

Lexical Cast

  • Sun Studio関連の問題を修正

Log

  • 一般的な変更
    • boost::basic_string_refのサポートと特殊化は廃止予定となった
      • ユーザはboost::basic_string_viewへと移行することが推奨される
      • なおboost::basic_string_refのサポートは将来的に削除される予定である
    • ターゲットディレクトリ内に保存されるログファイル数に上限を設定できるようになった. Erich Keaneのパッチによる (8746)
  • バグ修正
    • Windows CEでのいくつものコンパイルに関する問題を修正
    • Solarisでのコンパイルに関する問題を修正
    • MSVC-10がいくつかの場合でフォーマッタに関して正しくないコードを生成していたので回避策を追加 (#12025)
  • 詳細はchangelogを参照のこと

Math

  • toolsに多項式算術(Polynomial arithmetic)を追加

Move

  • 実験的: バッファを必要としない、漸近的に最適なマージとソートのアルゴリズム(adaptive_mergeadaptive_sort)を実装
  • 修正したバグ
    • Trac #11758 右辺値参照が有効な環境において、BOOST_MOVABLE_BUT_NOT_COPYABLEがアクセス修飾子をprivateにリセットしていなかった問題を修正

Multiprecision

  • #11857 整数型に対するストリーム入力のバグを修正
  • #11922 式テンプレートでのいくつかの曖昧な変換を修正
  • #11149 式テンプレートに特化したminmaxのオーバーロードを追加
  • #11999 cpp_intでの負の小さな整数に対する右シフトのバグを修正
  • #9233 cpp_intでのビットシフトで、可能であればmemmoveを使用するようにした
  • #9235 cpp_intでのデータインポートで、可能であればmemcpyを使用するようにした
  • #12039 cpp_bin_float.convert_to<double>()で、丸めを回避するためにlong doubleではなく関数テンプレートを使用するよう変更
  • #12112 NaNとInfinityからの変換を修正
  • Windows上のClangへのサポートを強化
  • #12090 cpp_dec_floatcpp_bin_floatの基本的な演算でのNaNとInfinityのハンドリングを修正
  • cpp_bin_floatに対する減算での支柱エラー(fencepost error)を修正
  • #12075 float128の非正規化数を認識できるようにした
  • #12070 例外を無効化してこのライブラリを使用することを許可した
  • boost::rationalとの比較演算のバグを修正
  • Oracle C++向けのワークアラウンドを追加
  • cpp_intlimb_typeが符号なしより広い(wider)状況で、型キャストがいくつか抜けていた問題を修正

Optional

  • boost::optionalを参照パラメータで特殊化した。それにあたって、いくつかの問題を修正した:
    • 参照optionalに対するsizeofがポインタのものとなるようにした
    • 参照optionalをコピーして接続した際の、いくつかのバグを修正した
    • いくつかのコンパイラで、正しくない参照の束縛によって発生していた全ての実行時バグが、コンパイルエラーとして検出できるようにした
    • 参照optionalswapできるようにした。これはポインタの浅いswapであり、元となるオブジェクトには影響がない
    • 参照optionalが抽象型に対して動作するようにした
  • 入れ子型のドキュメントを記載した(Trac #5193)
  • 完全転送のコンストラクタをSFINAEフレンドリーになるよう修正した(Trac #12002)。ただし、これはC++11の<type_traits>を正しく実装した新しめのプラットフォームでのみ機能する
  • Trac #10445 右辺値をoptional<const T&>に代入するとコンパイルエラーになる問題を修正

Regex

  • GitHub #23 メモリキャッシュのロックフリー実装を変更

Test

バージョン3.2

新機能

  • データ駆動テストケースに、フィクスチャと可変引数のサポートを追加
  • データ駆動テストケースのサンプルに、ムーブセマンティクスの例を追加

バグ修正

  • #6767 浮動小数点数例外の関数を呼び出す際に、明示的にグローバル名前空間スコープ :: を指定すると、一部の環境でコンパイルに失敗する問題を修正
  • #8905 boost/test/impl/debug.ipp : WaitForSingleObjectの戻り値を無視していた問題を修正
  • #9443 ランダムな順序でのテスト実行において、内部で使用しているstd::random_shuffle()が指定されたシードを無視していた問題を修正
  • #11854 BOOST_DATA_TEST_CASEでフィクスチャのサポートを追加
  • #11887 BOOST_TEST(3u == (std::max)(0u, 3u))がテスト失敗する問題を修正
  • #11889 BOOST_DATA_TEST_CASEに対してテストデータとして4次元以上の格子を使用するとコンパイルエラーになる問題を修正
  • #11983 XML形式でのレポートに、エスケープされていない文字が含まれていたので修正

Variant

  • メンテナンス上の修正

テスト済みコンパイラ

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

  • Linux:
    • Clang: 3.0, 3.1, 3.2, 3.3, 3.4, 3.5, 3.6, 3.7.1
    • Clang ,C++14: 3.7.1, 3.8.0
    • GCC: 4.4.7, 4.5.3, 4.6.3, 4.7.3, 4.8.4, 4.8.5, 4.9.3, 5.3.0
    • GCC, C++11: 4.4.7
    • GCC, C++14: 5.2.1, 5.3.1
    • Intel: 16.0
  • Windows:
    • GCC, C++03, mingw: 3.4.5
    • GCC, C++11, mingw: 4.6.4, 4.7.3, 4.8.1
    • GCC, C++14, mingw: 4.9.3, 5.1, 5.2
    • Visual C++: 7.1, 8.0, 9.0, 10.0, 11.0, 12.0, 14.0
  • Android:
    • Clang: 3.6, 3.7
    • GCC: 4.9, 5.3
  • FreeBSD:
    • Clang: 3.4.1, 3.7
    • GCC: 4.8.5, 5.3
  • Haiku:
    • GCC, C++11: 4.8.5
  • QNX:
    • QCC: 4.4.2
  • SunOS:
    • Oracle Solaris Studio: 12.4, 12.5
    • Oracle Solaris Studio, C++11: 12.5

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

  • Linux:
    • Clang: 3.0, 3.1, 3.2, 3.3, 3.4, 3.5, 3.6, 3.7.1
    • Clang, c++14: 3.7.1, 3.8.0
    • GCC: 4.4.7, 4.5.3, 4.6.3, 4.7.3, 4.8.5, 4.9.3, 5.3.0, 5.3.1, 6.0.0
    • GCC, C++11: 4.4.7
    • GCC, C++14: 5.2.1
    • Intel: 16.0
  • OS X:
    • Apple Clang: 7.0.2
    • G++: 5.3.0
  • Windows:
    • GCC, C++03, mingw: 3.4.5
    • GCC, C++11, mingw: 4.6.4, 4.7.3, 4.8.1
    • GCC, C++14, mingw: 4.9.3, 5.1, 5.2
    • GCC, cygwin: 5.3.0
    • Visual C++: 7.1, 8.0, 9.0, 10.0, 11.0, 12.0, 14.0
  • Android:
    • Clang: 3.6, 3.7
    • GCC: 4.9, 5.3, 6.0
  • FreeBSD:
    • Clang: 3.41, 3.7.0
    • GCC, C++11: 4.8.5, 5.3.0, 6.0
    • GCC: 6.0
  • Haiku:
    • GCC, C++11: 4.8.5
  • QNX:
    • QCC: 4.4.2
  • SunOS:
    • Oracle Solaris Studio: 12.4, 12.5
    • Oracle Solaris Studio, C++11: 12.5

翻訳

Kohei Takahashi, Akira Takahashi

校正

Usagi Ito