本家リリースノート:
https://svn.boost.org/svn/boost/website/public_html/live/feed/history/boost_1_50_0.qbkhttp://www.boost.org/users/history/version_1_50_0.html
新ライブラリ
- Algorithm
- 便利なジェネリックアルゴリズム集
- 作者:Marshall Clow
- Functional/OverloadedFunction
- オーバーロードされた複数の関数を単一の関数オブジェクトにまとめるライブラリ
- 作者:Lorenzo Caminiti
- LocalFunction
- ローカルな関数を他の関数内や任意のスコープ内で定義するライブラリ
- 作者:Lorenzo Caminiti
- Utility/IdentityType
()でラップすることでマクロのパラメータとして渡せるようにするライブラリ- 作者:Lorenzo Caminiti
更新ライブラリ
- Accumulators
- Array
- Asio
- Bimap
- Chrono
- Concept Check
- Filesystem(+)
- Foreach
- Fusion(+)
- Geometry
- Graph
- Hash
- Iostreams
- Iterator
- MultiArray
- Lexical cast
- Locale
- Math
- Meta State Machine
- Program Options
- PropertyMap
- Proto
- Ratio
- ScopeExit
- Spirit
- Thread
- Unordered
- Wave
- Xpressive
+が付いているものは本家のリリースノートには記載されていない変更。
Accumulators
- インクルードが抜けていたのを修正(#6702)
- MSVCでコンストラクタの転送がコンパイルエラーになっていたのを修正(#6535)
- Boostの開発者ガイドラインに従い、ファイル名を短くした(#6196)
- ※ファイル名は31文字以下でなければならない:
boost/accumulators/statistics/p_square_cumulative_distribution.hpp→boost/accumulators/statistics/p_square_cumul_dist.hppboost/accumulators/statistics/weighted_p_square_cumlative_distribution.hpp→boost/accumulators/statistics/weighted_p_square_cuml_dist.hpp
Array
- Boost.Hashのサポートを追加 (#6791)
Asio
EPOLL_OUTイベントのために、epoll_reactorのバックエンドを遅延登録するよう変更epoll_reactorの帯域外データが、前回のリリースでは不完全な修正によって壊れていたので修正した- Boost.AsioのSSLラッパーを、
OPENSSL_NO_ENGINEのdefineに配慮するよう修正(#6432) - C++11のムーブセマンティクスをサポートするWindowsコンパイラ(g++など)のために、
windows::object_handleを修正 strandの再スケジューリングのパフォーマンスを向上- g++4.7のC++11モードでのコンパイルをサポート(#6620)
- g++4.7で名称が変更になった
std::chrono::monotonic_clock→std::chrono::steady_clockの差異に対応
- g++4.7で名称が変更になった
io_serviceがconcurrency_hintを1で構築した場合に、signal_setが配信されない問題を修正(#6657)
Bimap
- 怪しいBoost.Serializationへの依存を削除 (#3868)
- 未使用変数の警告を修正 (#5749)
map viewsにkey_typeとmapped_typeのtypedefを追加(#6031)- ただし後方互換性のために
data_typeは残してある
- ただし後方互換性のために
Chrono
boost::chrono::process_real_cpu_clock::now()が32ビット版Windowsでオーバーフローする問題を修正(#6361)process_cpu_clocks.hppの警告を修正(#6628)thread_clock.hppでpthread.hのインクルードが抜けていたのを修正(#6666)
Concept Check
- 変数シャドウの警告を修正 (#6738)
Filesystem(+)
- 非推奨だったv2を削除。v3への完全移行が必要
Foreach
- 修正の結果、より問題が発生したため #6131 の修正を取り消した
Fusion(+)
deque,front_extended_deque,back_extended_dequeのドキュメントを追加
Geometry
バグ修正
- 整数の点のための
projected point strategyの戻り値型が間違っていたので修正 - セグメントとポリゴンの交差でのいくつかの信頼性問題を修正
- 無効な交差点を出力から除外した
multi_polygonのdisjointが、不正にtrueを返してしまう問題を修正
解決したチケット
- multi pointの代替シンタックスパッチを適用(#6585)
"MULTIPOINT ((10 40), (40 30), (20 20), (30 10))"と"MULTIPOINT (10 40, 40 30, 20 20, 30 10)"のどちらでも書けるようになった
pointとlinestringのdistance計算が間違っていたので修正(#6584, #5730)- デカルトの3次元座標から球状の赤道3次元座標への変換を行うパッチを適用(#6166)
- 無効な交差点が出力されてしまう問題。報告より前にtrunkで修正されていた(#6696)
新機能
*polygon/*polygonのための新たなアルゴリズムtouchesを追加(OGC SF準拠)
Graph
バグ修正
clear_vertexが自己閉路のvertexでセグメンテーションフォルトする問題を修正(#4622)biconnected_components()によるlowpoint mapの計算が間違っていたので修正(#6033)isomorphism()関数で、Iso Mappingがリセットされない問題を修正(#6242)cube_topologyのドキュメントに、3次元なのに2次元と書かれていたので修正(#6435)graph_parallelのドキュメントにあるsmall_world_1_70_6_0p02.pngが壊れていたので修正(#6520)subgraphのコピーコンストラクタがlocal_vertex/local_edgeプロパティをコピーしていなかったので修正(#6564)isormorphism()関数に巨大なグラフを与えると計算に失敗する問題を修正(#6573)Dijkstra Visitor Conceptのドキュメントにあったtypoを修正(#6583)"DistanceMap"→"WeightMap"
strong_components()がMSVC8でコンパイルエラーになる問題を修正(#6647)subgraphの実装で、依存名にtypenameが付いていなかったので修正(#6656)is_straight_line_drawing.hppで<map>のインクルードが抜けていたので修正(#6707)is_straight_line_drawing.hppのboost::intersects()関数でシンボルの重複エラーが出ていたのでinlineを付けた(#6708)constified subgraphをwrite_graphviz_dp()を使用して出力できない(コンパイルエラーになる)問題を修正(#6739)- reverse_graphに対するboost::get()がg++でコンパイルエラーになる問題を修正(#6858)
- bron_kerbosch_all_cliques()はVertexIndexGraphConceptを満たす必要がないので要件を削除(#6892)その他、Tracに含まれていないいくつかの警告とバグを修正
Hash
std::arrayとstd::tupleのサポートを追加 (#6806)- GCCにおける
-Wfloat-equal警告を修正 (#6771) boost/functional/detail/container_fwd.hppに非推奨である旨の警告を追加
Iostreams
Iterator
transform_iteratorのドキュメントでのresult_ofの使い方が正しくなかったのを修正 (#5127)iterator_facade::operator->がproxy referencesに対して正しくなかったのを修正 (#5697)
MultiArray
Lexical cast
boost::bad_lexical_cast例外は現在グローバルに見えるので-fvisibility=hiddenでコンパイルされていてもキャッチできる- 例外を無効にしていてもコンパイル、使用が可能になった (#5800)
boost::iterator_range<character_type*>の変換に対してメモリ使用量を減らしバグを修正しパフォーマンスを改善した- バグと警告の修正 (#6645) (#6562) (#6812) (#6852) (#6717) (#6770) (#6504)
Locale
- STLPortを使用した場合でのビルドの問題を修正
- Boost.Systemが依存ライブラリとなった
バグ修正
Math
- 数学定数を第1級クラスに:ビルトインへの便利なアクセス方法も含む
- Benjamin Sobottaにより、OwenのT関数とSkew標準分散を追加
- Hankel関数を追加
- K R Walkerのパッチをベースにして
0.0におけるnonfinite_num_putのフォーマットを修正 (#6627) - ユーザー定義型でもスレッドセーフになるように定数初期化メカニズムを変更、また
long double型でなくともユーザー定義型の定数が最大精度を得られるように変更例えばlong doubleが64または80bitであっても、128bit有理数への近似がユーザー定義型で動作する Y[sub 8.5](4π)でbessel_jy関数がNaNになってしまう問題を修正
Meta State Machine
- eUML : eUMLで遷移表としてのみ定義されたフロントエンドのためのよりよい構文。
- バグ修正: グラフ構築がシーケンスとして定義されたinitial_stateでのみ動作していた
- バグ修正:
TerminateかInterrupt状態のために定義されたフラグが、これらの状態のブロッキング関数を壊さないようにした - バグ修正: いくつかの領域からの多重遅延イベント(multiple deferred event)が、全てのケースで動作するとは限らなかった
- バグ修正:
visitorが、サブマシンに値渡しを行っていた - バグ修正:
no_transitionが、それ自身にイベントを送るサブマシンのためには呼ばれなかった - GCCの警告を修正
Program Options
- エラーレポートの強化(Leo Goodstadt氏のPatch)
- ヘルプメッセージ中のオプション値の名前のカスタマイズをサポート (#4781)
- GCC4.7でのコンパイルエラーを修正 (#6790)
PropertyMap
バグ修正
- ドキュメント中の
get()の戻り値が正しくなかったのを修正 (#6539) property_map_traitsのドキュメントがreferenceに関して記述されていなかったのを修正 (#6721)
Proto
- N3276を実装しているコンパイラにかぎり、
decltypeベースのresult_ofを使うようにした - C++11向けに,
mpl::eval_if_cとmpl::if_cの評価型が強制的にboolになるようにした __forceinlineによる、「指定された関数がインライン展開の対象として選択されましたが、実際にはインライン展開されませんでした。」という警告がmsvcで出ないようにした
Ratio
バグ修正
boost::ratioがデフォルト設定でコンパイルされない問題を修正(#6498)
ScopeExit
新機能
- キャプチャにカンマ区切りリストを使用できるように可変長マクロを使用 (後方互換性のためにシーケンス構文でのキャプチャもサポート)
this_の使用によるオブジェクトのキャプチャをサポートvoidの使用による空のキャプチャをサポート- コンパイラがC++11のlambdaをサポートする場合、
BOOST_SCOPE_EXIT_ALLで暗黙的なlambdaに似たキャプチャをサポート
Spirit
- 廃止予定だったヘッダを除去した。このヘッダは2,3年間そのままだったが、そろそろクリーンアップの時期になったからである。
Thread
新機能
lock_guard/unique_lockに対応するunlock_guardのリクエスト(#1850)shared_mutexにtimed_lockとtimed_lock_sharedメンバをリクエスト(#2637)- ポータブル及びポータブルではないスレッド属性の対応の提案(#2741)
shared_lock_guardのリクエスト(#3567)- Boost.Moveベースのムーブセマンティクスへの変更(#6194)
- 時間関係のインターフェースをBoost.Chronoで実装(#6195)(C++11標準への追従)
- Howard Hinnantが提案したインターフェースに
shared_mutexを拡張(#6217) noexceptをコンパイラがサポートしている場合noexceptを指定(#6224)(C++11標準への追従)locksに明示的なbool型への変換を追加(#6226)(C++11標準への追従)promiseにアロケータ指定可能なコンストラクタを追加(#6228)(C++11標準への追従)- C++11標準で定められた例外の通知方法に変更(#6230)(C++11標準への追従)
threadのデストラクタはjoinableがtrueを返す場合にterminateを呼ぶ様に変更(#6266)(C++11標準への追従)(破壊的変更)→ デフォルトではこれまで通りのdetach動作。BOOST_THREAD_PROVIDES_THREAD_DESTRUCTOR_CALLS_TERMINATE_IF_JOINABLEをdefineすることで新しい動作に切り替えることができる。threadはムーブ代入時にjoinableがtrueを返す場合にterminateを呼ぶように変更(#6269)(C++11標準への追従)(破壊的変更)→ デフォルトではこれまで通りの動作。BOOST_THREAD_PROVIDES_THREAD_MOVE_ASSIGN_CALLS_TERMINATE_IF_JOINABLEをdefineすることで新しい動作に切り替えることができる。thread::id用のhashの特殊化を用意(#6272)(C++11標準への追従)- 条件変数の
wait系関数用のcv_status列挙型を追加(#6273)(C++11標準への追従) - ドキュメントに
BasicLockagle要件に関する記述を追加(#6231)(C++11標準への追従) - C++11標準向けに
once_flagを修正(#6342) upgrade_lockにmutexとreleaseメンバが不足していたのを修正(#6671)upgrade_lockに時間をメンバに取るコンストラクタが不足していたのを修正(#6672)upgrade_lock用のフリー関数版swapが無かったのを修正(#6675)packaged_taskにresult_typeとアロケータを取るコンストラクタが不足していたのを修正packaged_task::reset()を追加
バグ修正
- Itanium環境でリンク等に失敗する(#2575)
threadをカスケードした状態でthread::idを使用しながらjoinすると適切にjoinされない(#4345)BOOST_THREAD_USE_DLL及びBOOST_THREAD_USE_LIBは重大であるにもかかわらずアンドキュメントである(#4921)thread中でpthread_exitを呼ぶとterminateが呼ばれるのをドキュメント化(#5013)this_thread::get_idが非常に遅い(#5173)futureをinterruptするとunknown_exceptionが投げられる(#5351)- read lockが行われている状態で前の
upgrade_lockが解放を行ってもupgrade_lockが取得を行わない(#5516) shared_future<T>::get()が正しくない戻り値型になっている(#5990)packaged_taskがムーブした結果を受け取る事ができない(#6174)- SunStudioにおいて
unique_futureのムーブがコンパイルエラーになる(#6222) - C++11環境で
shared_lockのムーブ代入が正しく動作しない(#6673) shared_mutexのtry_lock_upgrade_untilが正しく動作しない(#6674)- ML上で指摘された
task_objectのムーブコンストラクタの存在下でtask_objectのコピーコンストラクタが削除される問題を修正
Unordered
unordered_multisetとunordered_multimapの等価比較関数を修正reserveを実装 (#6857)- GCCの
-Wfloat-equalと-Wshadowによる警告を修正 (#6190) (#6771) - bcpで正しく展開されない名前空間の問題を修正 (#6905)
- SunStudio12.3でのコンパイルエラーを修正 (#6784)
- Bucket allocationのために内部の一部を変更
- すべての変更点は /doc/html/unordered/changes.html#unordered.changes.boost_1_50_0 を参照のこと
Wave
V2.3.2
- 一部のメンバを
base_iteration_contextコンストラクタで初期化していなかった問題を修正 (#6758) force_includeで追加したインクルードファイルが#lineディレクティブを失敗させる問題の修正 (#6838)- testwave に
--forceincludeオプションのテスト用サポートを入れて,#6838 の修正確認のためのテストケースを追加 - wave ドライバのビルドに失敗するのを修正 (#6870)
Xpressive
- 非常に醜い
lexical_castハックをまぁ我慢できるものに置きかえた - C++11で問題になるMPL
assertをstatic assertに置きかえたことで、 #6846 が修正された。
テスト済みコンパイラ
- Linux
- Intel: 11.1
- LLVM Clang: 2.8
- GCC: 4.2.4, 4.3.4, 4.4.3, 4.5.3, 4.6.2
- GCC, C++0x mode:4.3.4, 4.4.3, 4.5.4, 4.6.2
- OS X
- Intel: 11.1
- GCC: 4.4.4
- GCC, C++0x mode: 4.4.4
- Windows
- Visual C++: 8.0, 9.0, 10.0
- GCC, mingw: 4.4.0, 4.4.7, 4.5.4, 4.6.1, 4.7.0
- FreeBSD
- GCC: 4.2.1 (32/64bit)
- QNX
- QCC, C++0x mode: 4.4.0, 4.4.7, 4.5.4, 4.6.3, 4.7.0
追加のテスト済みコンパイラ
- Linux
- LLVM Clang: subversion
- GCC: 4.2.4, 4.3.4, 4.4.4, 4.5.3, 4.6.2
- GCC, C++0x mode: 4.3.4, 4.4.4, 4.5.3, 4.6.2
- pgCC: 11.9
- Intel: 10.1, 11.1, 12.0, 12.1
- Visual Age: 10.1
- OS X
- LLVM Clang: subversion
- Intel: 11.1, 12.0
- GCC: 4.4.4
- GCC, C++0x mode: 4.4.4
- Windows
- Visual C++: 8.0, 10.0
- Visual C++ with STLport: 9.0
- Visual C++, Windows Mobile 5 with STLport: 9.0
- GCC, mingw: 4.4.0, 4.4.7, 4.5.2, 4.5.4, 4.6.4, 4.7.0
- GCC, C++0x mode, mingw: 4.5.2
- AIX
- IBM XL C/C++ Enterprise Edition, V12.1.0.0
- FreeBSD
- GCC: 4.2.1 (32/64bit)
- Solaris
- Sun: 5.10
翻訳
Akira Takahashi, zak, Flast, DigitalGhost