本家リリースノート:
- https://github.com/boostorg/website/blob/master/feed/history/boost_1_68_0.qbk
- http://www.boost.org/users/history/version_1_68_0.html
リポジトリは以下:
リポジトリからのビルド方法は、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
- Context
- Coroutine2
- Fiber
- Fusion
- Geometry
- GIL
- Graph
- Lexical Cast
- Log
- Math
- Multi-index
- Multiprecision
- Optional
- Predef
- Program Options
- Python
- Rational
- Signals
- Spirit
- Stacktrace
- System
- Test
- Type Index
- Uuid
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::connect
、test::error
、test::fail_count
、test::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
イテレータのデクリメントを修正Fields
、FieldsWriter
コンセプトのドキュメントを修正BodyReader
のコンストラクタ要件のドキュメントを修正
破壊的変更
- 非推奨だった
serializer::reader_impl
を削除 - 非推奨だった
Body
コンセプトのreader
とwriter
のコンストラクタシグニチャを削除
Context
- GitHub #78
context-impl=ucontext
でのリンクエラーを修正 :boost::context::detail::current_rec
の重複定義
Coroutine2
- GitHub #14 Visual Studio 2015 Update 3で、スタック巻き戻し中にクラッシュする問題を修正
- GitHub #18 いくつかの導入ドキュメントに、なぜCoroutine2を使うのかを記載
- コミット
a28b850
- コミット
- 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_iterator
とever_circling_range_iterator
で、一時オブジェクトへの参照を返していた問題を修正 - GitHub #495 VxWorks 7でのクロスコンパイルの問題を修正
GIL
- 機能追加
- C++11準拠のコンパイラを要求するようにした
- GitHub #70 すべてをまとめたヘッダ
include/boost/gil.hpp
を追加 - 新たなツールボックス拡張を導入
- 変更
- I/O拡張をI/O v2として完全に書き直して導入した
- ドキュメントを再フォーマットし、更新した
- 削除
- I/O v2によって置き換えられたI/O v1を削除した
Graph
- GitHub #89 標準C++で非推奨・削除された機能を、以下のように置き換えた:
std::bind1st
→std::bind
std::auto_ptr
→std::unique_ptr
std::random_shuffle
→std::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
- Trac #13540 clang-tidyの警告を修正
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
permutation
とsequence_or
演算子のADTサポートを修正 - GitHub #383
iterator_source
をランダムアクセスのために特殊化 - GitHub #373
skip_over
の冗長なチェックを削除
- GitHub #376
- Spirit.Karma
- GitHub #246
get_absolute_value
関数の未定義動作を修正 - GitHub #375, Trac #6126 ADTのgetterがby valueで値を返した場合の、スコープ外での使用のバグを修正
- GitHub #246
- Spirit.Classic
- GitHub #336, GitHub #386 レグレッションを修正
- GitHub #367 小さなコード改善
Stacktrace
- GitHub #54 Solarisとその他プラットフォームでのコンパイルエラーを修正するために、
dladdr()
関数に渡すアドレスのconst
修飾を修正 - Boost.LexicalCastへの依存をなくした
System
- GitHub #23 C++14以降向けに、
error_code
とerror_condition
にconstexpr
を追加した
Test
- Boost.test v3.8 の詳細については、Changes log を参照すること
- 破壊的変更
master_test_suite_t
オブジェクトをコピー可能でなくした- データセットの遅延を可能にしたため、データセット引数の追加のコピーが発生する可能性がある。これはとくに、
std::initializer_list
で作成されたデータセットの場合に当てはまる
- 新機能
- データセットのテストケースでコマンドラインパラメータを使用するようにした
- データセットから生成されたテストは、フレームワークのセットアップ中にインスタンス化される。これによって、データセットのジェネレータが
argc
とargv
にアクセスする。遅延インスタンス化されるべきデータセットを示すために、新たにdata::make_delayed
ヘルパを導入した
- データセットから生成されたテストは、フレームワークのセットアップ中にインスタンス化される。これによって、データセットのジェネレータが
- これによって、
data::make
によってデータセットを作成する際に、可変個の引数を扱えるようになった。データセットが単相的であるため、最初の要素の型にキャスト可能である必要がある
- データセットのテストケースでコマンドラインパラメータを使用するようにした
- バグ修正とPull Request
- GitHub #143
exception_api.run-fail.cpp
の例で、条件式が逆だった問題を修正 - GitHub #145 最近のCygwin環境での、ライブラリのビルドを修正
- Trac #12095 事前条件の失敗はエラーにすべきではなかったので、スキップするよう適切にハンドリング
- Trac #12953 データセットのテストケースが
argc
とargv
にアクセスできるようにした - Trac #13504 コマンドライン引数
catch_system_errors
のshort formが動作しない問題を修正 - Trac #13525 GCC 4.6.3でのコンパイルエラーを修正
- Trac #13528 コマンドライン引数
--report_sink
を使用するとクラッシュする問題を修正
- GitHub #143
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