本家リリースノート:
- https://github.com/boostorg/website/blob/master/feed/history/boost_1_69_0.qbk
- http://www.boost.org/users/history/version_1_69_0.html
リポジトリは以下:
リポジトリからのビルド方法は、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
- Asio
- Assign
- Beast
- Core
- CircularBuffer
- ConceptCheck
- Context
- DLL
- DynamicBitset
- Fiber
- Filesystem
- Flyweight
- Function
- Geometry
- GIL
- Integer
- Iostreams
- Iterator
- Log
- Logic
- Lexical cast
- Math
- Mp11
- MultiArray
- Multi-index
- Multiprecision
- PolyCollection
- Pool
- Preprocessor
- Rational
- Spirit
- Stacktrace
- System
- Test
- TypeIndex
- Utility
- Variant
- YAP
Any
- 可視性の問題を修正。現在は、隠れた可視性 (hidden visibility) をもつ共有ライブラリで構築された
boost::any
変数が、隠れた可視性をもつ他の共有ライブラリで使用、破棄できるようになった - メンテナンス: いくつかの依存ライブラリを落として、ドキュメントを修正した
Asio
- libstdc++での、
std::future
の利用可能性の検出に関する問題を修正 read_until()
のregex
版オーバーロードのコンパイルエラーを修正- キャンセルされたタイマーをムーブするときに発生する可能性のある、タイマーヒープの破損問題を修正
- 最近のclang/libc++バージョンでの
std::experimental::string_view
とstd::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
- GitHub #6, Trac #10477 右辺値参照、完全転送、可変引数テンプレートのサポートを追加
- GitHub #29, Trac #5419, Trac #7364 コンテナのアロケータへの変換を回避
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
- GitHub #14 MPLへの依存を削除
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 範囲版の
set
、reset
、flip
メンバ関数を追加
Fiber
- GitHub #181
unbuffered_channel
のpush
が返ってこない問題を修正 - 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
- GitHub #20, GitHub #22 MPLとTestへの依存を削除
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 #524 「
switch
文でハンドリングされていない列挙値がある」という警告を修正 - GitHub #527 VS 2017 (msvc-15) 向けのワークアラウンドを追加
バグ修正
- GitHub #505 overlayアルゴリズムでのオーバーフローを修正 (Dane Springmeyer氏に感謝)
- GitHub #518
append()
での一時オブジェクトの渡し方を修正 (xventura81氏に感謝) - GitHub #522 ビルド方法のドキュメントでpython3環境をサポート
GIL
- 変更
- GitHub #145
#include <boost/gil/...>
以下のインクルード構造をリファクタ
- GitHub #145
- 削除
- GitHub #145
include/boost/gil_all.hpp
ヘッダを非推奨化 - GitHub #145
include/boost/gil_concepts.hpp
ヘッダを非推奨化 - GitHub #144
include/boost/gil_config.hpp
ヘッダを不要にした
- GitHub #145
- 修正
- GitHub #157
point<T>
の除算と乗算を、point<double>
としてハードコードしないよう修正 - GitHub #152
std::fill_n
とboost::range::fill_n
が衝突する問題を修正 - GitHub #139
for_each_pixel
によって関数オブジェクトの再代入が行われる問題を修正 - GitHub #129 依存名
axis_iterator
の前にtemplate
キーワードが不足していた
- GitHub #157
Integer
boost/pending/integer_log2.hpp
を非推奨化した。このヘッダは将来のリリースで削除される。代わりにboost/integer/integer_log2.hpp
を使用すること
Iostreams
- GitHub #58
std::fpos
クラスに存在しないseekpos()
メンバ関数の呼び出しを削除
Iterator
- GitHub #43
boost
名前空間内での、イテレータに対する非修飾のadvance
とdistance
の呼び出しが曖昧になっていたことによるコンパイルエラーを修正
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_distribution
のstandard_deviation
とmean
を修正。#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
-
メンバ変数や、メンバ関数の戻り値をキーにする機能として、従来は
member
、const_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;
- このバージョンでは、C++17の簡略構文を使用した
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()
アルゴリズムのBoost.PolyCollection仕様バージョンを追加
Pool
- GitHub #23 Boost.Threadへの依存をなくすために、
boost::mutex
の使用を置き換えた
Preprocessor
- VC++ 14.1 (Visual Studio 2017) で、新しいC++標準準拠のプリプロセッサ (C++11可変引数マクロ) をサポート。Visual Studio 2017 15.8以降では、
/experimental:preprocessor
スイッチを使用して有効にする
Rational
- GitHub #28, GitHub #32
constexpr
のサポートを追加
Spirit
- Spirit.X3
- GitHub #392, Trac #13531
boost::math
の恩恵を受けるために、自身の浮動小数点数ルーチンを落とした - GitHub #409 例外型に、可視性の指定が抜けていた
- GitHub #413, GitHub #395
to_utf8
: Windowsでのwchar_t
のハンドリングを修正
- GitHub #392, Trac #13531
- Spirit.V2
- GitHub #392, Trac #13531
boost::math
の恩恵を受けるために、自身の浮動小数点数ルーチンを落とした - GitHub #409 例外型に、可視性の指定が抜けていた
- GitHUb #407, GitHub #396
transform_attribute
の曖昧さを修正 - GitHub #413, GitHub #395
to_utf8
: Windowsでのwchar_t
のハンドリングを修正
- GitHub #392, Trac #13531
- Spirit.Classic
- GitHub #409 例外型に、可視性の指定が抜けていた
Stacktrace
libbacktrace
の使い方を大幅に改善。BOOST_STACKTRACE_USE_BACKTRACE
やboost_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:
- 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