最終更新日時:
が更新

履歴 編集

Boost 1.65.0リリースノート

本家リリースノート:

リポジトリは以下:

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

新ライブラリ

  • PolyCollection
    • Joaquín M López Muñoz氏による、多相オブジェクトに対して高速に動作するコンテナのライブラリ
  • Stacktrace
    • Antony Polukhin氏による、バックトレースの収集、コピー、表示をするライブラリ
    • 既知の問題として、MinGWでこのライブラリを使用した場合に、空のバックトレースが生成される可能性がある (GitHub #14)

更新ライブラリ

Context

  • call/ccがucontext-API (swapcontext)をサポート
  • call/ccがWindowsのFiber APIをサポート
  • call/ccがオンデマンドgrowing stack (セグメント化スタック/分割スタック) をサポート
  • Trac #12719 mingw-w64ツールチェインで、テストケースとサンプルがセグメンテーションフォルトになっていた問題を修正
  • GitHub #52 g++-4.9でcallccテストのビルドが失敗する問題を修正

Config

  • 欠陥検出マクロとして、以下を追加:
    • BOOST_NO_CXX11_POINTER_TRAITS : C++11のstd::pointer_traitsクラス
    • BOOST_NO_CXX17_FOLD_EXPRESSIONS : C++17の畳み込み式
    • BOOST_NO_CXX17_INLINE_VARIABLES : C++17のインライン変数
    • BOOST_NO_CXX17_STRUCTURED_BINDINGS : C++17の構造化束縛

Core

  • C++03以降向けにpointer_traitsを実装した。これには、P0653r0のポインタへの変換関数が含まれる (実装者のGlen Fernandes氏に感謝)。この実装は、Align、Circular Buffer、Fiber、Geometryなどの他のライブラリで使われている
  • Lightweight testにBOOST_TEST_GT (operator>による比較) とBOOST_TEST_GE (operator>=による比較)を追加

Coroutine2

  • ucontext-API (swapcontext)をサポート
  • WindowsのFiber APIをサポート
  • Trac #13064 CoroutineとCoroutine2の異なる振る舞いを修正

DLL

  • 非WindowsプラットフォームでのPEのパースを修正

Fiber

  • ハードウェアトランザクショナルメモリ (Intel TSX) をサポート
  • NUMAをサポート
  • ucontext-API (swapcontext) をサポート
  • WindowsのFiber APIをサポート
  • オンデマンドgrowing stackをサポート
  • GitHub #121 GCC 4.8のC++11モードでコンパイルエラーになる問題を修正
  • GitHub #123 schedule_from_remoteがアサーション失敗する問題を修正
  • GitHub #125 テストでクラッシュする問題を修正
  • GitHUb #126 内部で使用しているメモリオーダーが間違っていた

Hash

  • C++11標準のchar16_tchar32_tstd::u16stringstd::u32stringをサポート

Log

  • Solaris互換を改善。異なるプラットフォームを統一的に扱うビルドスクリプトを更新した

Predef

  • Intel C/C++コンパイラの値が9999だった場合に、コンパイラバージョン12.1.0となるよう修正
  • ワークアラウンド検出のために、BOOST_PREDEF_WORKAROUNDマクロとBOOST_PREDEF_TESTED_ATマクロを追加

    // #define BOOST_PREDEF_WORKAROUND(symbol,comp,major,minor,patch)
    
    #if BOOST_PREDEF_WORKAROUND(BOOST_COMP_CLANG,<,3,0,0)
        // Clangコンパイラの古いバージョン向けのワークアラウンドをここに書く
    #endif
    

    // BOOST_PREDEF_TESTED_AT(symbol,major,minor,patch)
    
    #if BOOST_PREDEF_TESTED_AT(BOOST_COMP_CLANG,3,5,0)
        // Clang 3.5.0以上での検証をここに書く
    #endif
    

  • ARM64 MSVC SIMDの検出を追加 (Minmin Gong氏に感謝)

  • iOSシミュレータとデバイスの検出を、プラットフォーム選択として追加 (Ruslan Baratov氏に感謝)
  • MinGWでのインクルードガードが間違っていた問題を修正 (Ruslan Baratov氏に感謝)

Program Options

  • Trac #7495, GitHub #18 boost::optionalに値を保存できるようにした (Ed Catmur氏に感謝)
  • GitHub #25 値なしでオプションを指定した場合のデフォルト値であるimplicit valueの解析において、次のトークンから値を使用できるようにした。1.59.0以降で、--option_name option_value構文でのimplicit valueが許可されなくなり、--option_name=option_valueの構文を使用する必要があった。これによって--option_name option_value構文の意味が変わってしまっていたために、以前の状態に戻し、両方の構文を許可するようにした

Smart Pointers

  • 新たなクラステンプレートatomic_shared_ptrを追加。これは、shared_ptr上にスレッドセーフなアトミックポインタ操作を提供する (作者Peter Dimov)
  • 新たなクラステンプレートlocal_shared_ptrを追加。これは、非アトミック操作によって参照カウントを更新する (作者Peter Dimov)
  • allocate_shared()make_shared()の配列版を、さらに最適化 (作者Glen Fernandes)
  • ドキュメントをAsciidocフォーマットで書き直した

Test

  • Boost Test v3.6
  • 新機能
    • C++17互換にした (VS2017でテストした) (Daniela Engert氏に感謝)
    • BOOST_TESTマクロで、C配列を直接比較できるようにした
    • より良いグローバルフィクスチャの仕組みとして、BOOST_TEST_GLOBAL_FIXTUREマクロを追加。グローバル初期化のためにBOOST_TEST_GLOBAL_CONFIGURATIONマクロを追加し、従来のBOOST_GLOBAL_FIXTUREを非推奨化。
    • フィクスチャのサポートを改善。setup() / teardown()メンバ関数について、teadown時間のチェックをより良いものにした
  • 破壊的変更
    • Trac #12631 いくつかのAPIをロガーのためにインタフェースを変更した
    • 従来のBOOST_GLOBAL_FIXTUREを非推奨化し、BOOST_TEST_GLOBAL_FIXTUREBOOST_TEST_GLOBAL_CONFIGURATIONに分割した
  • バグ修正
    • Trac #5282 テストフィクスチャが仮想継承をサポートしていないという問題。対応なし
    • Trac #5563 BOOST_GLOBAL_FIXTUREマクロで、デストラクタでテストに失敗するとクラッシュする問題を修正
    • Trac #11471 C配列を扱えない問題を修正
    • Trac #11962 フィクスチャのコンストラクタでBOOST_TEST_MESSAGEマクロを使用すると、不正なXMLが出力される問題を修正
    • Trac #12228 いくつかのヘッダがコンパイルエラーになる問題を修正
    • Trac #12631 BOOST_DATA_TEST_CASEBOOST_TEST_MESSAGEマクロを使用すると、不正な出力になる問題を修正
    • Trac #13011 BOOST_TESTマクロの浮動小数点数の比較が壊れていた問題を修正
    • GitHub #106 非推奨になっていたC++標準ライブラリの関数を置き換えた

Type Index

  • Trac #13009 <boost/functional/hash.hpp>のインクルードが抜けていたところを修正 (Ed Catmur氏に感謝)
  • Trac #13027 C++11をサポートしているコンパイラでは、hash_code()の計算にstd::type_info::hash_code()を使用するようにした

Unordered

  • unordered_setunordered_multisetunordered_mapunordered_multimapで同じデータ構造を使用するようにした。これはC++17において、マージ(merge)と抽出(extract)操作のノードがコンテナ間で互換である必要があったため
  • 非推奨だった関数にdeprecated属性を追加
  • C++11コンパイラに対して、pairのpiecewise構築においてallocator_traitsconstructdestroyの使用を改善し、ふさわしい動作にした
  • 新しいOracleコンパイラに対して、ワークアラウンドを減らした
  • GitHub #5 未初期化メモリへのポインタ間接参照を回避

Utility

  • Trac #10847, Trac #13002 Boost 1.57.0からboost::next()boost::prior()がSFINAEフレンドリーでなくなっていた。互換性のために元に戻した

Variant

  • Trac #13018 boost::get()に右辺値参照版を追加
  • Trac #13037 <boost/variant/polymorphic_get.hpp>にインクルードが不足していた (Adam Badura氏に感謝)

テスト済みコンパイラ

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

  • Linux:
    • Clang:
    • GCC:
    • Intel:
    • QCC:
  • OS X:
    • Apple Clang:
    • GCC:
    • Intel:
  • Windows:
    • GCC, mingw:
    • Visual C++:
  • FreeBSD:
    • GCC:
  • QNX:
    • QCC:

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

  • Linux:
    • Clang:
    • GCC:
    • GCC, C++11:
    • GCC, C++14:
    • Intel:
    • Intel, C++11:
  • OS X:
    • Apple Clang:
    • Apple Clang, C++11:
    • Apple Clang, C++14:
    • Clang:
    • Clang, C++11:
    • GCC:
    • Intel:
  • Windows:
    • GCC, mingw:
    • Visual C++:
  • FreeBSD:
    • GCC:
  • QNX:
    • QCC:

翻訳

Akira Takahashi