最終更新日時:
が更新

履歴 編集

Boost 1.63.0リリースノート

本家リリースノート:

リポジトリは以下:

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

リリース後のパッチ

  • Atomic
    • GCC 4.7より古いバージョンおよびその互換コンパイラで、32ビット x86に対して64ビットアトミック操作をすると、不正なコードを生成する問題を生成。この問題は、コミット boostorg/atomic a67cc1bで修正されている

更新ライブラリ

Atomic

  • C++17に準拠した静的な定数メンバ変数、atomic<T>::is_always_lock_freeを追加
    • この定数はその特殊化が常にロックフリーなアトミックで実装されているかどうかを示す
  • x86でのOracle Studioのサポートを改善

Container

  • バグ修正
    • Trac #12534 GCC環境で<type_traits>をインクルードしたあとにflat_mapをインスタンス化するとコンパイルに失敗する問題を修正
    • Trac #12577 -fsanitize=undefinedオプションで判明したpair.hppのヌル参照の実行時警告を修正
    • GitHub #40 copy_move_algo.hppのパラメータ型を修正 : iterator_traits::difference_type -> allocator_traits::size_type
    • GitHub #41 do_allocate()関数内での到達しないコードを回避

Context

  • #11687 Xcode (Apple clang) 6以降でthread_localキーワードが使えないため、代わりにboost::thread_specific_ptrを使いたいという問題。対応しない
  • #12114 iOSのarm64環境で浮動小数点演算が正しく行われなくなる問題を修正
  • #12411 Visual StudioのO2最適化でFPUレジスタが保持されない問題を修正 (ほかのアーキテクチャも修正)
  • #12551 arm64環境でunkown directiveでビルドエラーになる問題を修正
  • ontop関数のシグニチャをリダクション
  • プライベートなfcontext APIのユニットテストを追加
  • ucontextとfcontextのパフォーマンステストを修正

Fiber

  • unbounded_channelbounded_channelを非推奨化
  • 新たなクラスbuffered_channelunbuffered_channelを追加
  • パフォーマンスを改善

Fusion

  • fusion::vectorのバギーなコンストラクタを修正 (Lee Clagettに感謝)
  • BOOST_FUSION_ADAPT*BOOST_FUISON_DEFINE*は空の構造体に適用できるようになった (#6592)
  • BOOST_FUSION_DEFINE*はムーヴ構築とムーヴ代入が出来るようになった (#10099)
  • std::arrayのアダプタを追加 (Mateusz Łoskotに感謝) (#8241)
  • 一時オブジェクトを返す警告を修正

Geometry

  • 改善
    • Intersection : 結果が正しくなるよう修正 (まだ完全ではないので作業中だが、より正しくなった)
  • 解決したチケット
    • #12289 std::cout関係の警告とコンパイルエラーを回避
    • #12412 地理的なPointとBoxでのcovered_by()が不正な結果になる問題を修正
    • #12413 rtree::remove()が地理的なPointに対して正しく動作しない問題を修正

Hash

  • いくつかの警告を修正

Interprocess

  • バグ修正
    • Trac #12499 メモリアロケーションに失敗する問題を修正。Boost.Moveの強制インライン化によって解決
    • GitHub #30 ライブラリのユーザーがデフォルトのtempフォルダを提供できるように拡張ポイントを追加
    • GitHub #31 xsi_key(key_t)コンストラクタを追加

Intrusive

  • バグ修正
    • Trac #12556 member_value_traits.hppに不足していたインクルードを追加

Log

  • 一般的な変更
    • 以前のリリースで非推奨としたtype_info_wrapperを削除
  • 新機能
    • テキストファイルシンクバックエンドから現在のファイル名を取得する方法を追加
      • ファイル名はget_current_file_nameメンバ関数で取得できる
  • バグ修正
    • バージョン21以前のAndroid APIでコンパイルエラーとなっていたのを修正
    • ストリーミング演算子(訳註: operator>>operator<<のこと)がスカラー型とenumを値で受け取るように修正
      • これにより静的定数とビットフィールドを直接フォーマットストリームに渡すことが出来るようになった (#11998)
    • syslog APIの自動検出機構を修正した (#12600)
    • UDPを基にしたsyslogバックエンドの実装について、RFC3164に準拠するようにメッセージフォーマットを変更した
    • テキストファイルシンクバックエンドにインストールしたファイルクローズハンドラは、ファイルが開かれていないのであれば呼ばれないようになった
  • その他の詳細な変更についてはchangelogを参照のこと

Lexical Cast

  • GitHub Issue #21 -fsanitize=undefinedオプションによって発見した未定義動作を修正

Metaparse

  • BOOST_METAPARSE_STRINGの実装を改善
    • 文字列長の最大を2048に増やした (Boostヘッダを生成するスクリプトで再生成した)
    • 文字列長の制限をコンパイル単位で変更できるようにした

Move

  • 実験的なアダプティブソートアルゴリズムのパフォーマンスを改善
  • BOOST_MOVE_FORCEINLINEを有効にした

Optional

  • 新しく2つのin-placeコンストラクタを追加。これらはemplace()関数と同様の動作をする。以下のひとつめのコンストラクタは、値を含んだ状態(noneじゃない状態)でオブジェクトを構築する。ふたつめのコンストラクタは、boolの条件がtrueの場合にのみ、値を含んだ状態をオブジェクトを構築する:

template <class... Args>
explicit optional(in_place_init_t, Args&&... args);

template <class... Args>
explicit optional(in_place_init_if_t, bool condition, Args&&... args);

  • std::optionalと同様に、optionalを未初期化状態にするo = {}構文を許可
  • #12203 optional<optional<T>&>の初期化を修正
  • #12563 optionalのコンストラクタをSFINAEフレンドリーにした。これにより、std::tupleとの相互作用が修正される

Phoenix

  • 多くのモジュールがC++11の可変長テンプレートをサポートした
  • 返り値の型の推論に失敗していたのを修正
  • 未使用の警告を抑制
  • 二引数の数学関数で引数が足りなかったエラーを修正
  • 古いコンパイラ用の回避策を追加

Python

  • 基本的なC++11の機能として、std::shared_ptrstd::unique_ptrのサポートを追加
  • NumPyをラップする拡張APIを組み込んだ
  • 廃止済みのいくつかの機能を削除した

Test

  • Boost Test v3.4
  • 新機能
    • BOOST_TESTマクロによる文字列同士の比較に、コンテナ用の比較オプションである per_element (要素同士の比較) と lexicographic (辞書順比較) をoptional modifierとして使用できるようにした。 BOOST_TEST("aaa" == "aaa", boost::test_tools::lexicographic());
  • 破壊的変更
    • #12531 実行するテストケースをフィルタして指定するオプションの区切り文字を、コロン : からアンダースコア _ に変更。これは、名前空間のようにコロンを含むテストケースを列挙できなかったための変更である。 --run_test="ns::X"_"ns::Y"
  • バグ修正
    • GitHub PR #103 GitHub PR #104 インデント関係のGCCの警告を黙らせた
    • GitHub PR #105 GCC6での未使用変数による警告を修正
    • #11756 C++03以下のターゲット環境向けに、C++11の<cfenv>のマクロを使用していたために起きていたコンパイルエラーを修正
    • #11907 std::string同士の比較が、場合によってコレクションの比較と見なされたりスカラ型の比較と見なされたりするため、状況によってテストの出力が異なる問題を修正
    • #12339 カラー出力に点滅文字(blink element)を使用するのをやめた
    • #12506 report_sinkのドキュメントの誤字を修正
    • #12507 --report_sinkオプションが動作しなくなっていた問題を修正
    • #12530 テストを走らせずにBoost.Testのバージョンを取得する--versionオプションを追加
    • #12531 --run_testオプションに、コロンを含むテスト名が指定できない問題を修正

TypeIndex

  • dynamic_castのエミュレーションを行うruntime_castを追加(実装したChris Gloverに感謝)
  • CTTIの内部実装をstd::size_tからunsigned intに変更することで、よりプラットフォーム非依存にした

Units

  • 検査の警告を修正
  • 物理化学(physico-chemical)の定数を更新。2014年CODATA推奨値にした
  • biotを正しく10アンペアとして定義

Unordered

  • 代入時の例外安全性の問題を修正
  • #12459 std::allocator_traitsが使用可能なときには使用するようにし、現代的なrebindスタイルをサポートした
  • いくつかのアロケータを伝搬させるコンストラクタを追加
  • insert()/emplace_hint()でヒントイテレータを使用するようにした
  • ドキュメントのさまざまな部分を改善した
  • 引数をとらないコンストラクタを非explicitにした
  • いくつかの警告を修正
  • その他の詳細については changelogを参照

テスト済みコンパイラ

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

  • Linux:
    • Clang: 3.0, 3.8.1
    • Clang, C++11: 3.0, 3.1, 3.2, 3.3, 3.4, 3.8.1
    • Clang, C++14: 3.5, 3.6, 3.7, 3.8.1
    • Clang, C++1z: 3.8.1
    • GCC: 4.4.7, 4.5.3, 4.6.3, 4.7.2, 5.2.0, 6.2.0
    • GCC, C++11: 4.4.7, 4.7.2, 4.7.3, 4.8.5, 4.9.3, 5.2.0, 6.1.1, 6.2.0
    • GCC, C++14: 5.2.0, 5.3.0, 6.1.1, 6.2.0
    • Intel: 16.0, 17.0
    • Intel, C++11: 16.0, 17.0
    • Intel, C++14: 16.0, 17.0
  • OS X:
    • Apple Clang: 7.0.2
    • Apple Clang, C++11: 7.0.2
  • 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: 4.9.3, 5.1.0, 5.2.0, 5.3.0, 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.2
  • QNX:
    • QCC: 4.4.2
  • SunOS:
    • Oracle Solaris Studio: 12.5
    • Oracle Solaris Studio, C++11: 12.5

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

  • Linux:
    • Clang: 3.0, 3.8.1
    • Clang, C++11: 3.0, 3.1, 3.2, 3.3, 3.4, 3.8.1
    • Clang, C++14: 3.5, 3.6, 3.7, 3.8.1
    • Clang, C++1z: 3.8.1
    • GCC: 4.4.7, 4.5.3, 4.6.3, 4.7.2, 5.2.0, 6.1.1, 6.2.0
    • GCC, C++11: 4.4.7, 4.7.2, 4.7.3, 4.8.5, 4.9.3, 5.2.0, 6.1.1, 6.2.0
    • GCC, C++14: 5.2.0, 5.3.0, 6.1.1, 6.2.0, 7.0.0 (experimental)
    • GCC, C++1z: 6.1.1
    • Intel: 16.0, 17.0
    • Intel, C++11: 16.0, 17.0
    • Intel, C++14: 16.0, 17.0
  • OS X:
    • Apple Clang: 7.0.2
    • Apple Clang, C++11: 7.0.2
  • 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: 4.9.3, 5.1.0, 5.2.0, 5.3.0, 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.2
    • GCC,C++14: 6.1.0
  • QNX:
    • QCC: 4.4.2
  • SunOS:
    • Oracle Solaris Studio: 12.5
    • Oracle Solaris Studio, C++11: 12.5

翻訳

Kohei Takahashi, Akira Takahashi