本家リリースノート:
- https://github.com/boostorg/website/blob/master/feed/history/boost_1_57_0.qbk
- http://www.boost.org/users/history/version_1_57_0.html
リポジトリは以下:
リポジトリからのビルド方法は、egtraさんのブログを参照:
更新ライブラリ
- Any
- Asio
- Circular Buffer
- Config
- Container
- Coroutine
- Flyweight
- Geometry
- Interprocess
- Intrusive
- Iterator
- Lexical Cast
- Math
- Move
- Multi Array
- Multiprecision
- Multi Index
- Preprocessor
- Thread
- Type Index
- Type Traits
- Units
- Unordered
- Utility
- uBLAS
Any
- RTTIは必須ではなくなった(RTTIのエミュレートにはType Indexが使用される)。
- #8958を修正。
- 訳者註:cv修飾子を無視したany_castが可能になっており、未定義動作を引き起こす原因となっていた。
Asio
- FreeBSDで動作する
kqueue
リアクタを修正。#10606 - Mac OS上でシリアルポートを読む際に、
kqueue
リアクタがビジーループに陥るのを修正。#10496 - 読み込み専用ファイル記述子を使用した場合の
kqueue
リアクタの問題を修正。#10367 /dev/poll
リアクタを使用した場合のコンパイルエラーを修正。#10572- Windowsバックエンドにおいて、非推奨の
WSASocketA
をWSASocketW
に置き換えた。#10534 - Visual C++ 2013でのいくつかの警告を修正。#10376
- WinRT環境におけるバイトオーダー変換関数の整数型を修正。#10539
use_future
とspawn()
はasio.hpp
をインクルードしただけでは利用できない為、ドキュメントを修正。#10567asio::strand
は非推奨となった。代わりにasio::io_service::strand
を使用すること。
Circular Buffer
- Boost.Moveの
move_if_noexcept
を使用した際のいくつかの警告を修正。 #7888
Config
BOOST_HAS_PRAGMA_DETECT_MISMATCH
マクロを新規追加。- コンパイラが
#pragma detect_mismatch("name", "value")
をサポートするかを調べられる。
- コンパイラが
Container
initializer_list
のサポートを追加。Robert Matusewiczによる貢献。- 後方に拡大可能なアロケータを使用する場合の
vector
において、二重破棄の問題を修正 - バグ修正
- Trac #10263 AIX 6.1環境において、
sched_yield()
関数がスコープ外になっていた問題を修正 - GitHub #16 不完全型コンテナのイテレータを修正。Mikael Perssonに感謝。
- Trac #10263 AIX 6.1環境において、
Coroutine
- スタック用に確保した領域がスタック用であるとValgrindへ登録することができるようになった。
- 訳者註:
- 通常Valgrindはコンテキストスイッチが発生したことを知ることができず、スイッチ後にスタックトレースを出力するとSegfaultを起こすが、これを回避することができるようになる。
- 通常この機能は無効化してビルドされる。有効にするにはビルド時にBoost.Buildへ
<valgrind>on
を渡す必要がある(コマンドラインではvalgrind=on
)が、生成物利用する際にはABI互換性に注意する必要がある。
- 訳者註:
- MSVCにおいて、asymmetric_coroutine.hppで定義されているシンボルが重複するためリンクエラーになる問題を修正。 #10386
begin(...pull_coroutine< R > & c)
の呼び出しが曖昧になる問題を修正。 #10536
Flyweight
- Boost.Serializationによるシリアライズのサポートを追加。
- 1.56にて
flyweight
のデフォルトコンストラクタはexplicit指定されたが、いくつかの初期化方法で問題が見つかった。そのため以前のexplicit指定されないコンストラクタを復帰させた。 #10439
Geometry
改善
rtree
のメンバ関数insert()
、remove()
、count()
のパラメータとして、value_type
に変換可能な型をサポート。
解決したチケット
- #8402, #10668 暗黙変換の警告
- #9354 非デカルト座標系(non-cartesian coordinate systems)におけるwinding strategyの
within()
とcovered_by()
のバグ - #10177 インクルード漏れ
- #10345 いくつかの座標系型で
distance()
のコンパイルに失敗する - #10398 回転の計算で、バッファの近接チェックが間違っている
- #10421 spherical CSのpoint-box間の
distance()
が不正 - #10615
rtree
のコンストラクタに対する機能リクエスト - #10643 大きな座標での
point_on_surface()
の結果が不正
バグ修正
- いくつかの、アルゴリズムのバッファのバグを修正
- CCW Polygon (
extreme_points()
)に対するpoint_on_surface()
のバグと数値的な問題を修正(Matt Amosに感謝) point_on_surface()
とpoint_on_border()
の交換によるA/Aのdisjoint()
のバグを修正(Matt Amosに感謝)convex_hull()
が結果として重複したpoint
を返す問題を修正。非常に少ないpoint
(1〜2)を入力として与えると発生する。- 大きな座標での
centroid()
が不正確であった問題について、point
の変換を修正(#10643のチケットに関連) for_each_segment()
が、開いているGeometry
の最後のsegment
を考慮していない問題を修正
Interprocess
unique_ptr
は削除された。現在boost::interprocess::unique_ptr
はBoost.Moveから提供される一般化されたboost::movelib::unique_ptr
を指す。- この実装は標準の
std::unique_ptr
に近く、またよくメンテナンスされている。
- この実装は標準の
- バグ修正
- #10262 AIX 6.1における変数
hz
のバグを修正。 - #10229
interprocess\detail\os_file_functions.hpp
内でのコンパイルエラーを修正。 - #10506
create_or_open_file
内での無限ループを修正。 - pull request 11
BOOST_USE_WINDOWS_H
が定義されている際のコンパイルエラーを修正。
- #10262 AIX 6.1における変数
- リファレンスを改善するためにDoxygenのマーカを整理。
Intrusive
- 実験的なノードチェッカを追加(Matei Davidからのコントリビュート、ありがとう!)。
- C++14のNull Forward Iteratorsを実装。
- バグ修正
- pull request 12 MSVC14の警告を修正(
C4456: declaration of 'x_parent_right' hides previous local declaration
)。 - #10520
intrusive/detail/utilities.hpp
での暗黙の型変換による警告を修正。 - #10469
optimize_multikey
を使用したunordered_multiset
から削除する際に無限ループに陥るのを修正。
- pull request 12 MSVC14の警告を修正(
Iterator
- ほとんどのコンポーネントを、
boost::iterators
名前空間に移動した。後方互換性のため、従来のboost
名前空間でもアクセスできる。 - イテレータの演算子が、条件付きでイテレータのカテゴリを元に定義するようにした。
- ライブラリの内部コンポーネントを一部を
public
にした(たとえばminimum_category
)。
Lexical-Cast
Math
- 超指数分布を追加。
- 不完全なガンマ関数によるいくつかのオーバーフローを修正(Rocco Romeoに感謝)。
a = b = 0.5
の時の不完全なベータ関数の導関数によるバグを修正。- これはいくつかの非心分布へも影響を与える。#10480を参照せよ。
round()
関数のいくつかのコーナーケースを修正。- 標準ライブラリのサポートが不完全な場合、cstdfloat.hppによる80bit浮動小数点型のサポートを行わない。
- 訳者註:FreeBSD等、いくつかの環境では
long double
型へのサポートが不完全であり、まともな精度を期待できないためである。
- 訳者註:FreeBSD等、いくつかの環境では
Move
- スマートポインタである
unique_ptr
を実装(素晴らしい実装とテストをくれたHoward Hinnantに感謝)。 move_if_noexcept
を追加(Antony Polukhinに感謝)。- バグ修正
- #9785
boost/move/core.hpp
でのIntel ICCの警告を修正。 - #10460 緩い例外指定によるコンパイルエラーを修正。
- pull request 3 右辺値参照が利用できない場合、コピーコンストラクタを消去しないように変更。
- #9785
Multi-Array
- Clangにおいてfriend宣言で警告が出るのを修正(Marcel Raadからのコントリビュート)。
Multiprecision
- 有理数から浮動小数点数への変換の際に、近い方へ丸め込む様に変更。
- 浮動小数点数から有理数への変換を改善。
cpp_bin_float
の指数関数で稀に発生するバグを修正。- 多くの些細なドキュメントの問題を修正。
Multi-Index
std::tuple
が利用可能なとき、複合キーの検索に使用することが可能になった。- 従来のBoost.Tupleも後方互換性のためにサポートされている。
- 参照: Tutorial - Key extraction - 1.57.0
Preprocessor
is_begin_parens
とremove_parens
を追加。- 配列と同等の機能をタプルに追加。
- 空のタプルデータに関するVC++の問題を修正。
is_empty
の内部実装を、可変引数マクロが使用可能な場合に、より優れた実装としてそれによる実装に切り替えるようにした。- 可変引数マクロのサポートを、GCCと同様になるようClangの方を更新。
- 新たな機能についてのドキュメントを追加。
Thread
新機能
- Synchro: コンパイラがサポートする場合、汎用ロックアルゴリズムで可変長テンプレートを使用する。 #6227
- Synchro: 並行キューにviewを追加。 #10298
- Async:
generic_executor_ref
を追加。 #10300 make_valid_future
を追加。 #10552
バグ修正
- MSVCにおいて、
call_once
が正しくない組み込み関数を使っていたのを修正。 #6782 - システム時刻が巻き戻った場合に、
boost::thread::sleep()
がハングしていたのを修正。 #6787 - スレッド中で
this_thread::sleep_for
が_steady_になっていなかったのを修正。 #7665 future::fallback_to
がassertで落ちる問題を修正。 #9307future::async
がlambdaの呼び出しで例外を投げて終了するのを修正。 #9308test_4648_lib
が失敗するのを修正。 #9310promise
とfuture
が値の格納に指定されたアロケータを使用していなかったのを修正。 #9425future
の単体テストがget()
/pthread_cond_wait()
でハングするのを修正。 #9558- [windows]
basic_timed_mutex::try_lock_until
及びcondition_variable::wait_until
に短い期間を渡すと無限に(若しくは無限に近いぐらい)待ち続けるのを修正。 #9787 - [windows] システム時刻が1970年以前の場合に
boost::condition_variable.timed_wait()
が例外を送出していたのを修正。 #9880 - GCC 4.4のバグを回避。 #10159
thread_specific_ptr
でのvoid *
をサポート。 #10196- _Boost.Thread 1.56 RC1_が_MinGW_でコンパイル出来ないのを修正。 #10296
- _Boost.Thread 1.56 RC1_が_armhf_でビルドするとハングする。 #10297
- 訳者註:このバグはClang 3.4固有のものであり、Boost.Threadは何も変更されない。
boost::promise<T>::set_value(const T&)
のオーバーロードがC++03モードで正しく提供されていないのを修正。 #10340when_all
/when_any
のドキュメントがないのを修正。 #10425when_all
に_deferred_なfuture
を渡すと直ちに制御が戻ってきてしまうのを修正。 #10426when_any
に_deferred_なfuture
若しくは_ready_状態にあるfuture
を渡した際に、他の_deferred_なfuture
を実行していなかったのを修正。 #10427- Boost.Moveが提供する
unique_ptr
を使用するように変更。 #10428 - 未実装だった
when_all
/when_any
がtuple
を返す場合を実装。 #10465 BOOST_THREAD_MOVABLE_ONLY<T>
なクラスがis_copy_constructible<T>::value == false
を満たさないのを修正。 #10476boost/thread/future.hpp
のデータレースを修正。 #10478pthread/condition_variable_any
のコンストラクタがpthread_cond_init
のエラーコードで間違った値を返していたのを修正。 #10529shared_future<R>::then
をconstにした。 #10563
Type-Index
Type-Traits
- 新しいトレイトとして
is_copy_assignable
及びis_final
を追加。
Units
- 新たな単位系を追加。
<boost/units/systems/information.hpp>
ヘッダに、以下の単位が含まれる:bit
byte
nat
hartley
shannon
- 2進接頭辞の大きさ単位として、以下のIEC接頭辞を追加:
kibi
mebi
gibi
tebi
pebi
zebi
yobi
- MSVC-14での、NaNの出力を修正
- C++11の
numeric_limits
機能であるdigits10
とlowest
をサポート - 警告を修正
Unordered
iterator
におけるpointer
のtypedef
を修正。 (#10672)Coverity
による警告を修正。 (pull request 2)
Utility
- 距離を受け取る
next()
とprior()
を再実装した。- 距離が
unsigned
、若しくはどちらも整数であっても正しく動作する。 - これは第1引数の演算子のサポートの仕方で適切な実装を選択している。
- 距離が
uBLAS
- 新たに2つの型、
matrix_row
とmatrix_column
ファサードを追加。これは、行列のデータに行の配列、列の配列としてアクセスできるようにするものである。 - 小さな機能として、固定サイズのコンテナを追加:
fixed_vector
とfixed_matrix
。実装にstd::array
を使用しているため、C++11が必要。 banded_matrix
のフォーマットを、標準BLASにマッチするよう修正(#7549)matrix
とvector
のインタフェースに、C++11のcbegin()
、cend()
、crbegin()
、crend()
を追加。- ドキュメントの配布を容易にするために、doxygenのドキュメントを削除。
- MSVCでの未使用パラメータ警告を修正
- uBLASの開発用フォルダの構成を変更した(ユーザーのライブラリに影響はない)
- さまざまなコンパイラでの警告、およびコンパイルエラーについて、大規模な修正を行った。いくつかの、古いコンパイラのための警告や非互換を解決するのは難しかったが、uBLASのコンパイルは非常に整理された状態になった。
テスト済みコンパイラ
主要なテストコンパイラ:
- Linux:
- Clang: 3.0, 3.1, 3.2, 3.3, 3.4
- Clang, C++14: 3.5
- GCC: 4.4.7, 4.5.3, 4.6.4, 4.7.3, 4.8.1, 4.8.2
- GCC, C++98: 4.9.1
- GCC, C++11: 4.4.7, 4.8.2, 4.8.3, 4.9.1
- GCC, C++14: 4.9.1
- Intel: 13.1, 14.0
- Intel, C++11: 13.1, 14.0
- QCC: 4.4.2
- OS X:
- Apple Clang: 6.0
- Apple Clang, C++11: 6.0
- Apple Clang, C++14: 6.0
- GCC: 4.2.1, 4.9.1
- Intel: 12.0
- Windows:
- GCC, mingw: 4.4.0, 4.4.7. 4.5.4, 4.6.3, 4.7.2, 4.7.3, 4.8.0, 4.8.2, 4.9.0
- Visual C++: 8.0, 9.0, 10.0, 11.0, 12.0
- FreeBSD:
- GCC: 4.2.1
- QNX:
- QCC: 4.4.2
追加して含まれるテストコンパイラ:
- Linux:
- Clang: 3.0, 3.1, 3.2, 3.3, 3.4.2
- Clang, C++14: 3.5.0, trunk
- GCC: 4.4.7, 4.6.4, 4.7.3, 4.8.1, 4.8.2, 5.0 (experimental)
- GCC, C++11: 4.4.7, 4.8.2, 4.8.3, 4.9.1
- GCC, C++14: 4.9.1
- Intel: 11.1, 12.1, 13.0, 13.1, 14.0
- Intel, C++11: 13.1, 14.0
- OS X:
- Apple Clang: 6.0
- Apple Clang, C++11: 6.0
- Apple Clang, C++14: 6.0
- Clang: trunk
- Clang, C++11: trunk
- GCC: 4.2.1, 4.9.1
- Intel: 12.0
- Windows:
- GCC, mingw: 4.4.0, 4.4.7, 4.5.4, 4.6.3, 4.7.3, 4.8.0, 4.8.2, 4.9.0
- Visual C++: 8.0, 9.0, 10.0, 11.0, 12.0
- FreeBSD:
- GCC: 4.2.1
- QNX:
- QCC: 4.4.2