最終更新日時:
が更新

履歴 編集

Boost 1.68.0リリースノート

本家リリースノート:

リポジトリは以下:

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

Windowsユーザーへの注記

Boost.WinAPIのターゲットを、(それが可能な状況で) デフォルトでWindows 7に更新した。前回までのリリースでは、デフォルトはWindows Vistaだった。

Boost.WinAPIは、いくつかのBoostライブラリの内部で使用している、Windows SDKの抽象レイヤーである。Boost.Beast、Boost.Chrono、Boost.DateTime、Boost.DLL、Boost.Log、Boost.Process、Boost.Stacktrace、Boost.System、Boost.Thread、Boost.UUIDなどで使用している。

ターゲットのWindowsバージョンを選択するためには、Boostをビルドする際にBOOST_USE_WINAPI_VERSIONを定義する必要があり、その値は_WIN32_WINNTと同じである。例として:

b2 release define=BOOST_USE_WINAPI_VERSION=0x0501 stage

Windows APIのバージョンリストは、以下のページで確認できる:

新ライブラリ

  • YAP
    • C++14以降用の、Expression Templateのライブラリ。作者Zach Laine

更新ライブラリ

Beast

全ての複合操作の実装でexecutor_work_guardを使用するよう、不足していたところを修正。非同期操作の完了ハンドラに関連したクラッシュを経験しているユーザーは、アップグレードすることを推奨する

新機能

  • <beast/experimental>ディレクトリに含まれる機能は、インタフェースが安定していないため、今後のバージョンで変更される可能性がある
  • GitHub #1108 SSLストリームのパフォーマンス限界に対するワークアラウンドとして、flat_streamを追加
  • GitHub #1151, GitHub #595 ICY HTTP response handshakesをパースするフィルタを持つhttp::icy_streamストリームを追加
  • SSLのより良いパフォーマンスとムーブ構築のために、ssl_streamを追加
  • 単体テストのユーティリティとして、test::connecttest::errortest::fail_counttest::streamを追加
  • http::is_mutable_body_writerメタ関数を追加
  • 疑似乱数生成器 (PRNG) に手動でエントロピーを提供するために、websocket::seed_prngを追加
  • コネクションが使用するセキュアな疑似乱数生成器として、websocket::stream::secure_prngを追加

改善

  • 生成されるWebSocketのマスクが、デフォルトでセキュアな疑似乱数生成器を使用するようにした
  • buffers_adapterを改善
  • GitHub #1109 HTTP server doc rootsの例で、文字列共有を使用するようにした
  • GitHub #1079 handler_ptr::has_valueを追加

修正

  • GitHub #1073 advanced server examplesでの競合を修正
  • GitHub #1076 複合操作でexecutor_work_guardを使用するようにした
  • GitHub #1079 誤った (spurious) assertを削除
  • GitHub #1113 message based HTTP writesに、constと非constのオーバーロードを追加
  • GitHub #1119 未使用変数の警告を修正
  • GitHub #1121 フィンガープリントのルート証明を例で使用するようにした
  • GitHub #1141 ちらかっていた複合操作のドキュメントを整理
  • ちらかっていたWebSocketストリームのドキュメントを整理
  • bind_handlerでの、ムーブしかできない引数を修正
  • http::parserクラスのコンストラクタについてドキュメントを修正
  • buffers_adapterイテレータのvalue typeを修正
  • buffers_adapter::max_sizeを修正
  • buffers_prefixイテレータのデクリメントを修正
  • FieldsFieldsWriterコンセプトのドキュメントを修正
  • BodyReaderのコンストラクタ要件のドキュメントを修正

破壊的変更

  • 非推奨だったserializer::reader_implを削除
  • 非推奨だったBodyコンセプトのreaderwriterのコンストラクタシグニチャを削除

Context

  • GitHub #78 context-impl=ucontextでのリンクエラーを修正 : boost::context::detail::current_recの重複定義

Coroutine2

  • GitHub #14 Visual Studio 2015 Update 3で、スタック巻き戻し中にクラッシュする問題を修正
  • GitHub #18 いくつかの導入ドキュメントに、なぜCoroutine2を使うのかを記載
  • GitHub #20 Visual Studioで、C2039でコンパイルに失敗する問題を修正
  • GitHub #22 未定義動作のドキュメントを修正

Fiber

  • GitHub #170 buffered_channelにおいてチャンネルが満杯になったときの説明をドキュメントに追記
  • GitHub #172 mingw-w64環境での、HANDLE (void*)からstd::thread::native_handle_typeへの変換でのコンパイルエラーを修正
  • GitHub #175 bufferd_channel内のスピンロックのunlockミスで"Operation not permitted"例外が送出されていた問題を修正
  • NUMAサポートを追加ライブラリファイルfiber-numaとして分離。有効にするにはnumaプロパティを使用する (numa=on)

Fusion

  • GitHub #178(該当コミット) GCC 4.4/c++0xにおいて、fusion::dequeコンストラクタの曖昧な呼び出しへの回避策を追加
  • GitHub #177 C形式配列での問題を修正
  • Trac #4427 fusion::for_eachが関数を値で受け取るように修正
    • これはコピー不可(もしくはムーヴ不可)関数を使用していた場合に破壊的変更に見えるが、古くから実装が間違っており、当初より正しかったドキュメントに記載された正しい関数シグネチャへと修正した
    • 使用している場合には用法を再確認されたい
  • Trac #5490 fusion::transformにおける意図しないMPLプレースホルダの置き換えを修正
  • Trac #4029 FusionシーケンスをMPLシーケンスにアダプトする手順の説明をMPLの章に移動
  • Trac #6091 Fusionにアダプトした型をFusionのIOシステムに適用する方法についてドキュメントに記載

Geometry

改善

  • GitHub #469 SRS変換での水平グリッドシフト (Horizontal grid shift) (nadgrids)。この機能はアンドキュメントであり、将来的にインタフェースが変更になる可能性がある
  • GitHub #478 spherical / geometric座標系でのBox-Segment間のdistance
  • GitHub #487 spherical / geometric座標系でのdistanceで、剛体の組み合わせが不足していた
  • GitHub #489 内部的な使用のため、直接測地問題 (direct geodesic problem) の公式を追加

解決したIssue

  • GitHub #470 短いspherical / geographicのsegmentでのアサーション失敗を修正
  • GitHub #471 sphericalなpolygonでの、envelope (凸包) が誤った結果となっていた問題を修正
  • GitHub #498 spherical / geographic座標系での、expand()make_inverse()が期待していない結果となっていた問題を修正
  • GitHub #504 未使用パラメータの警告を修正

バグ修正

  • GitHub #488 closing_iteratorever_circling_range_iteratorで、一時オブジェクトへの参照を返していた問題を修正
  • GitHub #495 VxWorks 7でのクロスコンパイルの問題を修正

GIL

  • 機能追加
  • 変更
    • I/O拡張をI/O v2として完全に書き直して導入した
    • ドキュメントを再フォーマットし、更新した
  • 削除
    • I/O v2によって置き換えられたI/O v1を削除した

Graph

  • GitHub #89 標準C++で非推奨・削除された機能を、以下のように置き換えた:
    • std::bind1ststd::bind
    • std::auto_ptrstd::unique_ptr
    • std::random_shufflestd::shuffle
  • GitHub #84 VS2015のリリースビルドでコンパイルエラーになる問題を修正
  • GitHub #87 Stanford GraphBaseの例を修正
  • GitHub #103 iterator_core_accessのfriend宣言を修正
  • GitHub #104 不足していた<boost/iterator.hpp>のインクルードを追加
  • GitHub #90 未使用変数の警告を修正
  • GitHub #88, GitHub #98, GitHub #104 いくつかのドキュメント上のtypoを修正
  • GitHub #85, GitHub #105 テストとサンプルコードのいくつかの問題を修正

Lexical Cast

Log

  • GitHub #39 VxWorksのサポートを改善
  • dumpストリームマニピュレータの実装で、x86 PIEレジスタに対しては、ebxレジスタをsave / restoreするようにした

Math

  • GitHub #128 求積法 (quadrature) と線積分 (contour integration) で任意精度の複素数をサポート
  • 多項式加算 (polynomial addition) のパフォーマンスを改善
  • 数値微分ルーチンの改善を継続し、線積分 (contour integration) を追加
  • erfc関数の、有理近似 (rational approximations) の精度を向上

Multi-index

  • Trac #13478 ムーブできるがコピーできない要素型を持つコンテナを、シリアライズできるようにした。報告者のSébastien Paris氏に感謝
  • Trac #13518 multi_index_containerのデフォルトコンストラクタにexplicitが付いていたので外した

Multiprecision

  • 任意精度の複素数をサポート
  • 符号なし整数型への変換を変更し、標準で定義される動作に合わせて切り捨てる (truncate) ようにした
  • MPFR文字列フォーマットのバグを修正
  • long longからcpp_dec_floatへの変換での未定義動作を修正
  • Eigenとの相互運用サポートを追加
  • float128.hppの、Intel CPUが乗ったWindowsでのビルドを修正
  • 混合式 (mixed expressions) を含む式テンプレートを展開する際の、一時オブジェクトの型を修正
  • gmp_floatから浮動小数点数の文字列への変換での、無限ループしてしまう問題を修正
  • サポートされていない機能を実行した際により良いエラーメッセージを出力するよう、式テンプレートに対するstatic_assertを更新
  • cpp_intのゼロに対してインクリメントした際に、符号が正しく設定されない問題を修正
  • std::moveの誤った使い方を修正し、NRVOにも頼るようにした
  • MPIRのバージョン3.0をサポート
  • cpp_bin_floatの、指数の型がlong longである場合や、それ以外でより広い整数型に変換するような場合での、さまざまな変換エラーを修正
  • GCC 8でstd::byteが導入されたことによる、互換性の問題を修正

Optional

  • GitHub #52 std::optionalとの互換性のために、has_value()メンバ関数を追加
  • T -> Uの変換関数を使ってoptional<T>からoptional<U>に変換するためのmap()関数を追加
  • T -> optional<U>の変換関数を使ってoptional<T>からoptional<U>に変換するためのflat_map()関数を追加

Predef

  • __ARM_ARCHマクロの検出をサポート (Tim Blechmann氏)
  • PTXアーキテクチャの検出を追加 (Benjamin Worpitz氏)
  • nvccコンパイラの検出を追加 (Benjamin Worpitz氏)
  • CUDAの検出を追加 (Benjamin Worpitz氏)
  • 廃止になったBOOST_ARCH_AMD64へのリファレンスを削除 (Peter Kolbus氏)

Program Options

  • GitHub #53 オプションごとの複数のロング名 (long name) をサポート。Eyal Rozenberg氏に感謝

Python

  • GitHub #193 Windows環境での、autolinkのバグを修正

Rational

  • GitHub #19 normalize()関数の未定義動作を修正

Signals

  • ライブラリ削除の注意 Boost.Signalsは、次のリリースで削除される
    • このライブラリは、バージョン1.54.0から非推奨となっていた。Boost.Signals2に移行すること

Spirit

  • Spirit.X3
    • GitHub #368 リストのパーサーに対して小さな最適化を入れた
    • GitHub #370, Trac #12085 コンテナを横断する属性 (pass sequence attribute) を、シーケンスパーサー、およびシーケンスパーサーの最終要素に対して使用できるようにした
    • GitHub #371 属性チェックのメッセージを細分化した
    • GitHub #373 skip_overの冗長なチェックを削除
    • GitHub #379 VS2015のバグでnoexcept内でのconstexprに問題があったため、x3::variant全体にワークアラウンドを入れた
    • GitHub #384 calc4bのサンプルコードのコンパイルエラーを修正
    • GitHub #374 小さなコード改善
  • Spirit.Qi
    • GitHub #376 permutationsequence_or演算子のADTサポートを修正
    • GitHub #383 iterator_sourceをランダムアクセスのために特殊化
    • GitHub #373 skip_overの冗長なチェックを削除
  • Spirit.Karma
    • GitHub #246 get_absolute_value関数の未定義動作を修正
    • GitHub #375, Trac #6126 ADTのgetterがby valueで値を返した場合の、スコープ外での使用のバグを修正
  • Spirit.Classic

Stacktrace

  • GitHub #54 Solarisとその他プラットフォームでのコンパイルエラーを修正するために、dladdr()関数に渡すアドレスのconst修飾を修正
  • Boost.LexicalCastへの依存をなくした

System

  • GitHub #23 C++14以降向けに、error_codeerror_conditionconstexprを追加した

Test

  • Boost.test v3.8 の詳細については、Changes log を参照すること
  • 破壊的変更
    • master_test_suite_tオブジェクトをコピー可能でなくした
    • データセットの遅延を可能にしたため、データセット引数の追加のコピーが発生する可能性がある。これはとくに、std::initializer_listで作成されたデータセットの場合に当てはまる
  • 新機能
    • データセットのテストケースでコマンドラインパラメータを使用するようにした
      • データセットから生成されたテストは、フレームワークのセットアップ中にインスタンス化される。これによって、データセットのジェネレータがargcargvにアクセスする。遅延インスタンス化されるべきデータセットを示すために、新たにdata::make_delayedヘルパを導入した
    • これによって、data::makeによってデータセットを作成する際に、可変個の引数を扱えるようになった。データセットが単相的であるため、最初の要素の型にキャスト可能である必要がある
  • バグ修正とPull Request
    • GitHub #143 exception_api.run-fail.cppの例で、条件式が逆だった問題を修正
    • GitHub #145 最近のCygwin環境での、ライブラリのビルドを修正
    • Trac #12095 事前条件の失敗はエラーにすべきではなかったので、スキップするよう適切にハンドリング
    • Trac #12953 データセットのテストケースがargcargvにアクセスできるようにした
    • Trac #13504 コマンドライン引数catch_system_errorsのshort formが動作しない問題を修正
    • Trac #13525 GCC 4.6.3でのコンパイルエラーを修正
    • Trac #13528 コマンドライン引数--report_sinkを使用するとクラッシュする問題を修正

Type Index

  • Boost.MPLへの依存をなくした

Uuid

  • GitHub #69 後方互換性のために残していた、sha1のdetail名前空間にリダイレクトしていた非推奨のヘッダを削除
  • GitHub #67 boost::uuids:uuidクラスに対するstd::hashの特殊化をサポート
  • GitHub #74 random generatorsに対するムーブセマンティクスをサポート
  • GitHub #74 エントロピー獲得時にEINTRを正しくハンドリングするようにした
  • GitHub #75 Linux環境で、getentropy(3)の代わりにgetrandom(2)を使用するようにした

テスト済みコンパイラ

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

  • 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:
    • Apple Clang: 9.0.0, 9.1.0
    • Apple Clang, C++11: 9.0.0, 9.1.0
    • Apple Clang, C++14: 9.0.0, 9.1.0
    • Apple Clang, C++17: 9.1.0
    • Apple 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:
    • Apple Clang: 9.0.0, 9.1.0
    • Apple Clang, C++11: 9.0.0, 9.1.0
    • Apple Clang, C++14: 9.0.0, 9.1.0
    • Apple Clang, C++17: 9.1.0
    • Apple 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, Kohei Takahashi