最終更新日時:
が更新

履歴 編集

Boost 1.69.0リリースノート

本家リリースノート:

リポジトリは以下:

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

非Windowsユーザーへの注記

Boostのビルドシステムが可視性をサポートし、デフォルトでは不可視 (hidden) の可視性をもつ共有ライブラリをビルドするようになった。その結果、Boostの共有ライブラリがより小さくなり、読み込み速度が速くなり、シンボルの衝突を起こす可能性が減る。

詳細は、Boost.Build visibility and local-visibilityのドキュメントを参照

この機能を無効にするには、ビルド時に./b2 visibility=globalコマンドを使用すること。

削除ライブラリ

  • Boost 1.54.0から非推奨となり、1.68.0で削除予定のアナウンスが出ていたSignalsライブラリを、このバージョン1.69.0で削除した。代わりにSignals2を使用すること

新ライブラリ

  • Safe Numerics
    • C++14以降用の、整数演算の正しさを保証するライブラリ。作者Robert Ramey

更新ライブラリ

Any

  • 可視性の問題を修正。現在は、隠れた可視性 (hidden visibility) をもつ共有ライブラリで構築されたboost::any変数が、隠れた可視性をもつ他の共有ライブラリで使用、破棄できるようになった
  • メンテナンス: いくつかの依存ライブラリを落として、ドキュメントを修正した

Asio

  • libstdc++での、std::futureの利用可能性の検出に関する問題を修正
  • read_until()regex版オーバーロードのコンパイルエラーを修正
  • キャンセルされたタイマーをムーブするときに発生する可能性のある、タイマーヒープの破損問題を修正
  • 最近のclang/libc++バージョンでのstd::experimental::string_viewstd::string_viewの検出を修正
  • MSVCのバージョンによるstd::invoke_resultの利用可能性の検出を修正
  • decltypeが利用可能である場合の、新たな要件をテストするためのbuffer sequence traitsを修正
  • MSVCで例外を無効にしたときのビルド問題を修正
  • TLS v1.3向けのSSL contextオプションを追加
  • TLS v1.2サポートのための、マクロを使用したテストを修正
  • Windowsで、スレッドごとに一度グローバルオブジェクトが作られてしまうのを防いだ
  • デフォルト構築したresolver resultsに対してsize()max_size()empty()を呼び出すとクラッシュする問題を修正
  • コピーを避けるために、basic_resolver_results::begin()の戻り値をムーブするよう修正
  • Intelコンパイラでムーブを有効にした
  • clang-clでのstd::string_viewの検出問題を修正
  • io_context::executor_type::dispatchのハンドラトラッキングのoperation nameを修正
  • 64ビットのスコープIDでアドレス文字列をパースする際に発生していた、バッファオーバーフローを修正
  • いかにして合成操作を書くか (how to write composed operations) のサンプルを追加
  • C++11バージョンのタイムアウト、タイマー、SOCKS4、SSLのサンプルを追加
  • ドキュメントとサンプルコードでの小さな問題を修正

Assign

Beast

  • このバージョンでは、サンプルコードの問題をいくつか修正し、非同期操作に対するビルトインタイムアウトをサポートしたソケットtimeout_socketを実験的に追加した
  • CppCon 2018でのWebSocketチャットのサンプルコードプレゼンテーションビデオ
  • GitHub #1133 BOOST_BEAST_USE_STD_STRING_VIEWを追加
  • 修正
    • GitHub #1245 UTF-8の妥当性検証が間違っていたレアケースを修正
    • GitHub #1237 SSLクライアントのサンプルコードに、証明書の検証を追加
    • GitHub #1091 WebSocketのサンプルコードで、タイムアウトのハンドリングが間違っていた問題を修正
    • GitHub #1270 侵入ベースのフックに、basic_fieldsを使用するようにした
    • GitHub #1267 16進数の範囲外の値のパースを修正
    • GitHub #1263 バッファイテレータで、未初期化値を比較していた問題を修正
    • GitHub #1288 サンプルコードから、本質的でないstrandを削除
    • http-server-fastとlibstdc++へのワークアラウンドを追加
    • BOOST_NO_EXCEPTIONSの部分的なサポートを追加

CircularBuffer

  • 空でありfinalではないアロケータを保持する際に、Empty Base Optimizationが行われるようにした (Glen Fernandes)

ConceptCheck

Context

  • github context 85: asm_sources のエイリアスが重複していたため、sysv-power-32-elf-gcc がなくなっていたバグを修正
  • github context 87: clang-win のツールセット (clang-cl.exe) は、msvc では masm を使う
  • github context 90: Jamfile.v2 の未使用の行を削除
  • github context 91: 全ての *_elf_gas.S に該当するファイルに対して、 .file セクションを設定

Core

  • boost::empty_valueを実装した。これは、ライブラリ作者が空の可能性がある型を保持するためにEmpty Base Optimizationを手軽に行うためにある (作者Glen Fernandes)。この機能は、Boost.Beast、Boost.CircularBuffer、Boost.MultiArrayなどで利用されている
  • boost::quick_exit()を実装した。これはC++11標準ライブラリのstd::quick_exit()機能を提供するものである (作者Peter Dimov)
  • Lightweight Testでの統計数を減らし、boost::report_errors()の呼び出し時にMSVCではより軽量なabort動作をするようにした (Glen Fernandes)

DLL

  • GitHub #20 スマートライブラリでのリンクの問題を解決
  • メンテナンス: ドキュメントとテストを修正

DynamicBitset

  • GitHub #26 パフォーマンスを改善 (いくつかのケースで2倍以上高速になった)
  • GitHub #27 範囲版のsetresetflipメンバ関数を追加

Fiber

  • GitHub #181 unbuffered_channelpushが返ってこない問題を修正
  • GitHub #182 UTF-8ソースコードのBOMを削除
  • GitHub #183 boost-installの使用を修正。一度だけ発行すべきだった

Filesystem

  • GitHub #68 readdirはすでにスレッドセーフになったので、LinuxとAndroid上ではreaddir_rを使用しないこと
  • GitHub #71 boost::filesystem::copy()が未定義動作によってクラッシュしていた問題を修正
  • GitHub #77 boost::filesystem::directory_iteratorの未定義動作を修正
  • BOOST_FOREACHでディレクトリイテレータを使用した際のコンパイルエラーを修正
  • GitHub #49 古いPGI C++コンパイラに対するワークアラウンドを削除し、新しいバージョンでのコンパイルを修正
  • GitHub #44 MSVCでの、縮小変換による警告を修正

Flyweight

  • GCCでの、Boost.MPLプレースホルダー式のハンドリングでのいくつかの問題を修正
  • メンテナンス上の修正

Function

Geometry

改善

  • GitHub #486 内部的な使用のため、直接測地問題 (direct geodesic problem) のKarney's solutionを導入 (Adeel Ahmad氏に感謝)
  • GitHub #490 Discrete FrechetとHausdorffの距離 (distance) アルゴリズムを追加 (Yaghyavardhan Singh Khangarot氏に感謝)
  • GitHub #496 パラメータの投影 (projection) と変換 (transformation) を実行時とコンパイル時に行う機能を追加

解決したIssue

  • GitHub #520 dsv()のドキュメントが不足していた問題を修正
  • GitHub #521 distance()のドキュメントの説明が間違っていた問題を修正
  • GitHub #524switch文でハンドリングされていない列挙値がある」という警告を修正
  • GitHub #527 VS 2017 (msvc-15) 向けのワークアラウンドを追加

バグ修正

  • GitHub #505 overlayアルゴリズムでのオーバーフローを修正 (Dane Springmeyer氏に感謝)
  • GitHub #518 append()での一時オブジェクトの渡し方を修正 (xventura81氏に感謝)
  • GitHub #522 ビルド方法のドキュメントでpython3環境をサポート

Integer

  • boost/pending/integer_log2.hppを非推奨化した。このヘッダは将来のリリースで削除される。代わりにboost/integer/integer_log2.hppを使用すること

Iostreams

  • GitHub #58 std::fposクラスに存在しないseekpos()メンバ関数の呼び出しを削除

Iterator

  • GitHub #43 boost名前空間内での、イテレータに対する非修飾のadvancedistanceの呼び出しが曖昧になっていたことによるコンパイルエラーを修正

Lexical Cast

  • Trac #8991 符号に関する変換の警告が出ていた点を修正
  • メンテナンス: 他の Boost ライブラリへの依存を削除し、ビルドシステムの警告が出なくなるよう修正

Log

  • 全体的な変更
    • GitHub #59 syslog sink backendで、Boost.Asioの非推奨インタフェースの使用を避けるよう更新
  • バグ修正
    • いくつかのケースで、text file sinkのターゲットディレクトリ内の、合計サイズの概算が間違っている可能性があったところを修正

Logic

  • 破壊的変更 : GitHub #5 使用可能な場合に、explicit operator boolを使用するようにした

Math

  • LambertW 関数を追加
  • 複素被積分と複素数積分をサポートするために共通ルーチンを更新
  • Barycentric rational approximation の実装を追加
  • 浮動小数点型の精度指定をよりよくサポートするための些細な修正
  • Boost.Endian を使っている部分を削除。Predef を使うのが好ましいため
  • complex型をサポートするために、連分数と級数を評価するコードを更新
  • toms748_solve で、無限ループに繋がる論理エラーを回避。#138 を参照。
  • extreme_value_distributionstandard_deviationmean を修正。#139 を参照。
  • newton_raphson_iterate のヒューリスティックな実装を強化。#145 を参照。
  • erf(NaN) の結果を修正。#141 を参照。
  • GCC の警告を減らすための巨大な修正。#136 を参照。
  • polynomial クラスの addition メソッドをリファクタリング。#132 を参照。
  • vxWorks のために、グローバル名前空間の real を修正。#131 を参照。
  • sinc 関数の近似の実装を向上させ、より優れたテストを追加
  • Student-t 型の 仮説検定に関するドキュメントの Typoを修正。#143 を参照。

Mp11

  • mp_starts_with機能を実装 (Glen Fernandes)

MultiArray

  • C++11アロケータモデルのサポートを改善 (Glen Fernandes)
    • C++11最小アロケータをサポート
    • 状態をもつアロケータをサポート
    • 値型の構築と破棄でのアロケータの使用
    • 空の型の保持、もしくは状態をもたないアロケータの場合に、Empty Base Optimizationが行われるようにした

Multi-index

  • メンバ変数や、メンバ関数の戻り値をキーにする機能として、従来はmemberconst_mem_funなどのメタ関数を使用していた。

    typedef multi_index_container<
      employee,
      indexed_by<
        ordered_unique<identity<employee> >,
        ordered_non_unique<member<employee,std::string,&employee::name> >,
        ordered_non_unique<
          const_mem_fun<employee,std::size_t,&employee::name_length>
        >
      >
    > employee_set;
    

    • このバージョンでは、C++17の簡略構文を使用したkeyエイリアステンプレートを導入することで、キーの抽出をより簡潔に書けるようになった

    #include <boost/multi_index/key.hpp>
    ...
    typedef multi_index_container<
      employee,
      indexed_by<
        ordered_unique<identity<employee>>,
        ordered_non_unique<key<&employee::name>>,
        ordered_non_unique<key<&employee::name_length>>
      >
    > employee_set;
    

Multiprecision

  • 変換結果の精度が、常に全ての引数の最大のものになるようにするため、精度型をうまくサポートすることを目的とした大幅な更新
  • __cpp_int 内でしか使えない final 扱いのアロケータのサポートを追加
  • 非推奨の Boost.Endian を使用していた箇所を削除。Boost.Predef を使うのが好ましいため
  • std::string_view のサポートを追加
  • GitHub #67 定数の初期化に関する軽微なバグを修正
  • GitHub #58 cpp_int の値に 無限値を割り当てたことで、実行時エラーが起きる事象を修正
  • cpp_bin_float_oct 型と cpp_complex_oct 型への typedef を追加

PolyCollection

  • std::for_each_n()std::sample()アルゴリズムのBost.PolyCollection仕様バージョンを追加

Pool

  • GitHub #23 Boost.Threadへの依存をなくすために、boost::mutexの使用を置き換えた

Preprocessor

Rational

Spirit

Stacktrace

  • libbacktraceの使い方を大幅に改善。BOOST_STACKTRACE_USE_BACKTRACEboost_stacktrace_backtraceのユーザーは、以下のためにアップデートすることを推奨する:
    • メモリ使用量が減少した
    • magnitudeの順番によって、スタックのキャプチャが高速化した
    • GitHub #60, GitHub #61 デバッグ情報なしでも見えるsyminfoのフォールバックを提供 (driesdeschout氏に感謝)
    • GitHub #59 backtrace.hヘッダの正確な位置をBOOST_STACKTRACE_BACKTRACE_INCLUDE_FILEで指定できるようにした。これにより、そのヘッダに到達不可能なプラットフォーム (たとえばUbuntu Xenial + Clang) でbracktrace.hを使用できるようになった
  • GitHub #67 max_depthを設定したときのスタックキャプチャを最適化 (Jan Eisenhauer氏のPull Requestに感謝)
  • GitHub #57 スタックトレースを高速にstd::stringに変換するto_string(const stacktrace&)関数を追加
  • メンテナンス:GitHub #62 ドキュメントとテストを更新

System

  • Boost.Systemライブラリをヘッダオンリーにした。スタブライブラリは互換性のためにビルドされるが、そのライブラリをリンクする必要はない
  • さらに多くの関数にconstexprを付けた
  • error_categoryクラスのデストラクタがprotectedとなり、virtualではなくなった。これは潜在的な破壊的変更だが、その影響は限定的であると予想される
  • error_categoryに64ビット識別子を受け取るコンストラクタを追加し、異なるカテゴリのオブジェクトと比較できるようにした
  • error_categoryのコンストラクタをprotectedにした
  • message()メンバ関数に、メモリ確保せず、例外も投げないオーバーロードを追加した
  • failed()仮想メンバ関数を追加し、成功が値0ではないカテゴリを定義できるようにした
  • 非推奨だったboost::system::throwsオブジェクトを削除
  • boost::throws()関数を非推奨化
  • system_errorクラスのerror_codeひとつをとるコンストラクタをexplicitにした
  • system_error::code()が値を返すようにした

Test

  • Boost.Test v3.9 の詳細については、Changes log を参照すること
  • 新機能
    • 複数の翻訳単位でのヘッダオンリー版Boost.Testを、正式にサポート
    • BOOST_TEST_CASE_NAMEマクロを使用して、名前付きのテストを手動で追加できるようにした
    • ログでのboost::exceptionサポートを改善
  • バグ修正とPull Request
    • Trac #13380 データセットをつなげたときの、ぶらさがり参照を修正
    • Trac #13625 コンパイルオプション-Werror=missing-declarationsを付けた際に、いくつかの環境でコンパイルエラーになっていた問題を修正
    • Trac #13637 手動でテストケースを追加した際に、テストケース名前が衝突してしまう問題への対処として、名前を指定できるBOOST_TEST_CASE_NAMEマクロを追加
    • GitHub #149, GitHub #154 --color_output=noオプションを付けた際に、カラーコードを出力しないよう修正
    • GitHub #150, GitHub #161 インクルードの不足により、ヘッダファイル単体でのコンパイルに失敗していた問題を修正
    • GitHub #156 close_at_tolerance()が、無限大の比較で常にfalseを返す問題を修正
    • GitHub #158 boost_test_print_typeが、explicit operator boolのテストとして機能していなかった問題を修正
    • GitHub #163 Boost 1.68.0にバージョンアップしたら、MSVC x64/Debug環境で遅くなった問題を修正
    • GitHub #147 execution_monitor::execute()で、std::exceptionのあとにboost::exceptionのブロックが表示されてしまう問題を修正
    • GitHub #148 色付き出力についてのドキュメントミスを修正
    • GitHub #151 #if BOOST_CLANG#ifdef BOOST_CLANGに修正

TypeIndex

  • GitHub #21 レグレッションを修正し、boost/type_traits.hppヘッダのパースを30%高速化した (Nikita Kniazev氏のPull Requestに感謝!)

Utility

  • boost::compressed_pairに、継承できない空の型 (non-inheritable empty types) のサポートを追加。finalとして宣言された型に対するEmpty Base Optimizationを避けるようにした (Glen Fernandes)

Variant

  • 可視性の問題を修正。現在は、boost::bad_visit例外が隠された可視性 (hidden visibility) をもつ共有ライブラリを越えて、隠された可視性をもつ他の共有ライブラリで捕捉できるようになった

YAP

  • MSVC++ version 14.15 (Visual Studio 2017 version 15.8) のサポートに対する小さな変更
  • ドキュメントを修正

テスト済みコンパイラ

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

  • Linux:
    • Clang: 3.0, 4.0.1, 6.0.1
    • Clang, C++0x: 3.0
    • Clang, C++11: 3.0, 3.1, 3.2, 3.3, 3.4, 4.0.1, 6.0.1
    • Clang, C++14: 3.5.0, 3.6.0, 3.7.1, 3.8.0, 3.9.1, 4.0.0, 4.0.1, 5.0.2, 6.0.1
    • Clang, C++17: 5.0.2, 6.0.1
    • GCC: 4.4.7, 4.5.3, 4.6.3, 5.4.0, 8.0.1
    • GCC, C++0x: 4.4.7
    • GCC, C++11: 4.7.3, 4.8.5, 4.9.4, 5.4.0, 6.4.0, 7.1.0, 8.0.1
    • GCC, C++14: 5.4.0, 5.5.0, 6.4.0, 7.1.0, 7.3.0, 8.0.1
    • GCC, C++17: 7.3.0, 8.0.1
    • Intel, C++14: 18.0
  • OS X:
    • Clang: 9.0.0, 9.1.0
    • Clang, C++11: 9.0.0, 9.1.0
    • Clang, C++14: 9.0.0, 9.1.0
    • Clang, C++17: 9.1.0
    • Clang, C++1z: 9.0.0
  • Windows:
    • GCC: 3.4.5, 4.1.2, 4.2.4, 4.3.3, 4.4.0, 4.5.4
    • GCC, C++0x: 4.6.4
    • GCC, C++11: 4.7.3, 4.8.1, 4.9.3
    • GCC, C++14: 5.1.0, 5.2.0, 5.3.0, 6.1.0, 6.2.0, 6.3.0, 6.4.0
    • GCC, C++17: 7.1.0, 7.2.0, 7.3.0
    • Visual C++: 7.1, 8.0, 9.0, 10.0, 11.0, 12.0, 14.0, 14.1
  • FreeBSD:
    • Clang: 4.0.0
    • Clang, C++11: 4.0.0
    • Clang, C++14: 4.0.0
    • Clang, C++1z: 4.0.0

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

  • Linux:
    • Clang: 3.0, 3.8.1, 3.9.1, 4.0.1, 5.0.2, 6.0.1
    • Clang, C++0x: 3.0
    • Clang, C++11: 3.0, 3.1, 3.2, 3.3, 3.4, 4.0.1, 6.0.1
    • Clang, C++14: 3.5.0, 3.6.0, 3.7.1, 3.8.0, 3.9.1, 4.0.0, 4.0.1, 5.0.2, 6.0.1, 7.0.0
    • Clang, C++17: 5.0.2, 6.0.1
    • GCC: 4.4.7, 4.5.3, 4.6.3, 4.9.4, 5.4.0, 5.5.0, 8.0.1
    • GCC, C++0x: 4.4.7
    • GCC, C++11: 4.7.3, 4.8.5, 4.9.4, 5.4.0, 6.4.0, 7.1.0, 8.0.1
    • GCC, C++14: 5.4.0, 5.5.0, 6.3.0, 6.4.0, 7.1.0, 7.3.0, 8.0.1, 8.1.0
    • GCC, C++17: 7.3.0, 8.0.1
    • Intel, C++14: 18.0
  • OS X:
    • Clang: 9.0.0, 9.1.0
    • Clang, C++11: 9.0.0, 9.1.0
    • Clang, C++14: 9.0.0, 9.1.0
    • Clang, C++17: 9.1.0
    • Clang, C++1z: 9.0.0
  • Windows:
    • GCC: 3.4.5, 4.1.2, 4.2.4, 4.3.3, 4.4.0, 4.5.4
    • GCC, C++0x: 4.6.4
    • GCC, C++11: 4.7.3, 4.8.1, 4.9.3
    • GCC, C++14: 5.1.0, 5.2.0, 5.3.0, 6.1.0, 6.2.0, 6.3.0, 6.4.0
    • GCC, C++17: 7.1.0, 7.2.0, 7.3.0
    • Visual C++: 7.1, 8.0, 9.0, 10.0, 11.0, 12.0, 14.0, 14.1
  • FreeBSD:
    • Clang: 4.0.0
    • Clang, C++11: 4.0.0
    • Clang, C++14: 4.0.0
    • Clang, C++1z: 4.0.0

翻訳

Akira Takahashi, Yoshinari Takaoka