本家リリースノート:
- https://github.com/boostorg/website/blob/master/feed/history/boost_1_63_0.qbk
- http://www.boost.org/users/history/version_1_63_0.html
リポジトリは以下:
リポジトリからのビルド方法は、egtraさんのブログを参照:
リリース後のパッチ
- Atomic
- GCC 4.7より古いバージョンおよびその互換コンパイラで、32ビット x86に対して64ビットアトミック操作をすると、不正なコードを生成する問題を生成。この問題は、コミット boostorg/atomic a67cc1bで修正されている
更新ライブラリ
- Atomic
- Container
- Context
- Fiber
- Fusion
- Geometry
- Hash
- Interprocess
- Intrusive
- Log
- Lexical Cast
- Metaparse
- Move
- Optional
- Phoenix
- Python
- Test
- TypeIndex
- Units
- Unordered
Atomic
- C++17に準拠した静的な定数メンバ変数、
atomic<T>::is_always_lock_free
を追加- この定数はその特殊化が常にロックフリーなアトミックで実装されているかどうかを示す
- x86でのOracle Studioのサポートを改善
Container
- バグ修正
- Trac #12534 GCC環境で
<type_traits>
をインクルードしたあとにflat_map
をインスタンス化するとコンパイルに失敗する問題を修正 - Trac #12577
-fsanitize=undefined
オプションで判明したpair.hpp
のヌル参照の実行時警告を修正 - GitHub #40
copy_move_algo.hpp
のパラメータ型を修正 :iterator_traits::difference_type
->allocator_traits::size_type
- GitHub #41
do_allocate()
関数内での到達しないコードを回避
- Trac #12534 GCC環境で
Context
- #11687 Xcode (Apple clang) 6以降で
thread_local
キーワードが使えないため、代わりにboost::thread_specific_ptr
を使いたいという問題。対応しない - #12114 iOSのarm64環境で浮動小数点演算が正しく行われなくなる問題を修正
- #12411 Visual StudioのO2最適化でFPUレジスタが保持されない問題を修正 (ほかのアーキテクチャも修正)
- #12551 arm64環境でunkown directiveでビルドエラーになる問題を修正
- ontop関数のシグニチャをリダクション
- プライベートなfcontext APIのユニットテストを追加
- ucontextとfcontextのパフォーマンステストを修正
Fiber
unbounded_channel
とbounded_channel
を非推奨化- 新たなクラス
buffered_channel
とunbuffered_channel
を追加 - パフォーマンスを改善
Fusion
fusion::vector
のバギーなコンストラクタを修正 (Lee Clagettに感謝)BOOST_FUSION_ADAPT*
とBOOST_FUISON_DEFINE*
は空の構造体に適用できるようになった (#6592)BOOST_FUSION_DEFINE*
はムーヴ構築とムーヴ代入が出来るようになった (#10099)std::array
のアダプタを追加 (Mateusz Łoskotに感謝) (#8241)- 一時オブジェクトを返す警告を修正
Geometry
- 改善
- Intersection : 結果が正しくなるよう修正 (まだ完全ではないので作業中だが、より正しくなった)
- 解決したチケット
Hash
- いくつかの警告を修正
Interprocess
- バグ修正
- Trac #12499 メモリアロケーションに失敗する問題を修正。Boost.Moveの強制インライン化によって解決
- GitHub #30 ライブラリのユーザーがデフォルトのtempフォルダを提供できるように拡張ポイントを追加
- GitHub #31
xsi_key(key_t)
コンストラクタを追加
Intrusive
- バグ修正
- Trac #12556
member_value_traits.hpp
に不足していたインクルードを追加
- Trac #12556
Log
- 一般的な変更
- 以前のリリースで非推奨とした
type_info_wrapper
を削除
- 以前のリリースで非推奨とした
- 新機能
- テキストファイルシンクバックエンドから現在のファイル名を取得する方法を追加
- ファイル名は
get_current_file_name
メンバ関数で取得できる
- ファイル名は
- テキストファイルシンクバックエンドから現在のファイル名を取得する方法を追加
- バグ修正
- バージョン21以前のAndroid APIでコンパイルエラーとなっていたのを修正
- ストリーミング演算子(訳註:
operator>>
とoperator<<
のこと)がスカラー型とenumを値で受け取るように修正- これにより静的定数とビットフィールドを直接フォーマットストリームに渡すことが出来るようになった (#11998)
- syslog APIの自動検出機構を修正した (#12600)
- UDPを基にしたsyslogバックエンドの実装について、RFC3164に準拠するようにメッセージフォーマットを変更した
- テキストファイルシンクバックエンドにインストールしたファイルクローズハンドラは、ファイルが開かれていないのであれば呼ばれないようになった
- その他の詳細な変更についてはchangelogを参照のこと
Lexical Cast
- GitHub Issue #21
-fsanitize=undefined
オプションによって発見した未定義動作を修正
Metaparse
BOOST_METAPARSE_STRING
の実装を改善- 文字列長の最大を2048に増やした (Boostヘッダを生成するスクリプトで再生成した)
- 文字列長の制限をコンパイル単位で変更できるようにした
Move
- 実験的なアダプティブソートアルゴリズムのパフォーマンスを改善
BOOST_MOVE_FORCEINLINE
を有効にした
Optional
- 新しく2つのin-placeコンストラクタを追加。これらは
emplace()
関数と同様の動作をする。以下のひとつめのコンストラクタは、値を含んだ状態(noneじゃない状態)でオブジェクトを構築する。ふたつめのコンストラクタは、bool
の条件がtrue
の場合にのみ、値を含んだ状態をオブジェクトを構築する:
template <class... Args>
explicit optional(in_place_init_t, Args&&... args);
template <class... Args>
explicit optional(in_place_init_if_t, bool condition, Args&&... args);
std::optional
と同様に、optional
を未初期化状態にするo = {}
構文を許可- #12203
optional<optional<T>&>
の初期化を修正 - #12563
optional
のコンストラクタをSFINAEフレンドリーにした。これにより、std::tuple
との相互作用が修正される
Phoenix
- 多くのモジュールがC++11の可変長テンプレートをサポートした
- 返り値の型の推論に失敗していたのを修正
- 未使用の警告を抑制
- 二引数の数学関数で引数が足りなかったエラーを修正
- 古いコンパイラ用の回避策を追加
Python
- 基本的なC++11の機能として、
std::shared_ptr
とstd::unique_ptr
のサポートを追加 - NumPyをラップする拡張APIを組み込んだ
- 廃止済みのいくつかの機能を削除した
Test
- Boost Test v3.4
- 詳細はChange logを参照
- 新機能
BOOST_TEST
マクロによる文字列同士の比較に、コンテナ用の比較オプションであるper_element
(要素同士の比較) とlexicographic
(辞書順比較) をoptional modifierとして使用できるようにした。BOOST_TEST("aaa" == "aaa", boost::test_tools::lexicographic());
- 破壊的変更
- #12531 実行するテストケースをフィルタして指定するオプションの区切り文字を、コロン
:
からアンダースコア_
に変更。これは、名前空間のようにコロンを含むテストケースを列挙できなかったための変更である。--run_test="ns::X"_"ns::Y"
- #12531 実行するテストケースをフィルタして指定するオプションの区切り文字を、コロン
- バグ修正
- GitHub PR #103 GitHub PR #104 インデント関係のGCCの警告を黙らせた
- GitHub PR #105 GCC6での未使用変数による警告を修正
- #11756 C++03以下のターゲット環境向けに、C++11の
<cfenv>
のマクロを使用していたために起きていたコンパイルエラーを修正 - #11907
std::string
同士の比較が、場合によってコレクションの比較と見なされたりスカラ型の比較と見なされたりするため、状況によってテストの出力が異なる問題を修正 - #12339 カラー出力に点滅文字(blink element)を使用するのをやめた
- #12506
report_sink
のドキュメントの誤字を修正 - #12507
--report_sink
オプションが動作しなくなっていた問題を修正 - #12530 テストを走らせずにBoost.Testのバージョンを取得する
--version
オプションを追加 - #12531
--run_test
オプションに、コロンを含むテスト名が指定できない問題を修正
TypeIndex
dynamic_cast
のエミュレーションを行うruntime_cast
を追加(実装したChris Gloverに感謝)- 詳細についてはruntime_cast referenceを参照のこと
- CTTIの内部実装を
std::size_t
からunsigned int
に変更することで、よりプラットフォーム非依存にした
Units
- 検査の警告を修正
- 物理化学(physico-chemical)の定数を更新。2014年CODATA推奨値にした
- biotを正しく10アンペアとして定義
Unordered
- 代入時の例外安全性の問題を修正
- #12459
std::allocator_traits
が使用可能なときには使用するようにし、現代的なrebindスタイルをサポートした - いくつかのアロケータを伝搬させるコンストラクタを追加
insert()
/emplace_hint()
でヒントイテレータを使用するようにした- ドキュメントのさまざまな部分を改善した
- 引数をとらないコンストラクタを非
explicit
にした - いくつかの警告を修正
- その他の詳細については changelogを参照
テスト済みコンパイラ
主要なテストコンパイラ:
- Linux:
- Clang: 3.0, 3.8.1
- Clang, C++11: 3.0, 3.1, 3.2, 3.3, 3.4, 3.8.1
- Clang, C++14: 3.5, 3.6, 3.7, 3.8.1
- Clang, C++1z: 3.8.1
- GCC: 4.4.7, 4.5.3, 4.6.3, 4.7.2, 5.2.0, 6.2.0
- GCC, C++11: 4.4.7, 4.7.2, 4.7.3, 4.8.5, 4.9.3, 5.2.0, 6.1.1, 6.2.0
- GCC, C++14: 5.2.0, 5.3.0, 6.1.1, 6.2.0
- Intel: 16.0, 17.0
- Intel, C++11: 16.0, 17.0
- Intel, C++14: 16.0, 17.0
- OS X:
- Apple Clang: 7.0.2
- Apple Clang, C++11: 7.0.2
- Windows:
- GCC, C++03, mingw: 3.4.5, 4.1.2, 4.2.4, 4.3.3, 4.4.0
- GCC, C++11, mingw: 4.6.4, 4.7.3, 4.8.1
- GCC, C++14, mingw: 4.9.3, 5.1.0, 5.2.0, 5.3.0, 6.1.0
- Visual C++: 7.1, 8.0, 9.0, 10.0, 11.0, 12.0, 14.0
- Android:
- Clang: 3.6, 3.7, 3.8
- GCC: 4.9, 5.4, 6.2
- QNX:
- QCC: 4.4.2
- SunOS:
- Oracle Solaris Studio: 12.5
- Oracle Solaris Studio, C++11: 12.5
追加して含まれるテストコンパイラ:
- Linux:
- Clang: 3.0, 3.8.1
- Clang, C++11: 3.0, 3.1, 3.2, 3.3, 3.4, 3.8.1
- Clang, C++14: 3.5, 3.6, 3.7, 3.8.1
- Clang, C++1z: 3.8.1
- GCC: 4.4.7, 4.5.3, 4.6.3, 4.7.2, 5.2.0, 6.1.1, 6.2.0
- GCC, C++11: 4.4.7, 4.7.2, 4.7.3, 4.8.5, 4.9.3, 5.2.0, 6.1.1, 6.2.0
- GCC, C++14: 5.2.0, 5.3.0, 6.1.1, 6.2.0, 7.0.0 (experimental)
- GCC, C++1z: 6.1.1
- Intel: 16.0, 17.0
- Intel, C++11: 16.0, 17.0
- Intel, C++14: 16.0, 17.0
- OS X:
- Apple Clang: 7.0.2
- Apple Clang, C++11: 7.0.2
- Windows:
- GCC, C++03, mingw: 3.4.5, 4.1.2, 4.2.4, 4.3.3, 4.4.0
- GCC, C++11, mingw: 4.6.4, 4.7.3, 4.8.1
- GCC, C++14, mingw: 4.9.3, 5.1.0, 5.2.0, 5.3.0, 6.1.0
- Visual C++: 7.1, 8.0, 9.0, 10.0, 11.0, 12.0, 14.0
- Android:
- Clang: 3.6, 3.7, 3.8
- GCC: 4.9, 5.4, 6.2
- GCC,C++14: 6.1.0
- QNX:
- QCC: 4.4.2
- SunOS:
- Oracle Solaris Studio: 12.5
- Oracle Solaris Studio, C++11: 12.5