最終更新日時:
が更新

履歴 編集

Boost 1.50.0 リリースノート

本家リリースノート:

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

  • インクルードが抜けていたのを修正(#6702)
  • MSVCでコンストラクタの転送がコンパイルエラーになっていたのを修正(#6535)
  • Boostの開発者ガイドラインに従い、ファイル名を短くした(#6196)
    • ※ファイル名は31文字以下でなければならない:
    • boost/accumulators/statistics/p_square_cumulative_distribution.hppboost/accumulators/statistics/p_square_cumul_dist.hpp
    • boost/accumulators/statistics/weighted_p_square_cumlative_distribution.hppboost/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_clockstd::chrono::steady_clockの差異に対応
  • io_serviceconcurrency_hint1で構築した場合に、signal_setが配信されない問題を修正(#6657)

Bimap

  • 怪しいBoost.Serializationへの依存を削除 (#3868)
  • 未使用変数の警告を修正 (#5749)
  • map viewskey_typemapped_typetypedefを追加(#6031)
    • ただし後方互換性のためにdata_typeは残してある

Chrono

  • boost::chrono::process_real_cpu_clock::now()が32ビット版Windowsでオーバーフローする問題を修正(#6361)
  • process_cpu_clocks.hppの警告を修正(#6628)
  • thread_clock.hpppthread.hのインクルードが抜けていたのを修正(#6666)

Concept Check

  • 変数シャドウの警告を修正 (#6738)

Filesystem(+)

  • 非推奨だったv2を削除。v3への完全移行が必要

Foreach

  • 修正の結果、より問題が発生したため #6131 の修正を取り消した

Fusion(+)

  • deque, front_extended_deque, back_extended_dequeのドキュメントを追加

Geometry

バグ修正

  • 整数の点のためのprojected point strategyの戻り値型が間違っていたので修正
  • セグメントとポリゴンの交差でのいくつかの信頼性問題を修正
  • 無効な交差点を出力から除外した
  • multi_polygondisjointが、不正にtrueを返してしまう問題を修正

解決したチケット

  • multi pointの代替シンタックスパッチを適用(#6585)
    • "MULTIPOINT ((10 40), (40 30), (20 20), (30 10))""MULTIPOINT (10 40, 40 30, 20 20, 30 10)"のどちらでも書けるようになった
  • pointlinestringdistance計算が間違っていたので修正(#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.hppboost::intersects()関数でシンボルの重複エラーが出ていたのでinlineを付けた(#6708)
  • constified subgraphwrite_graphviz_dp()を使用して出力できない(コンパイルエラーになる)問題を修正(#6739)
  • reverse_graphに対するboost::get()がg++でコンパイルエラーになる問題を修正(#6858)
  • bron_kerbosch_all_cliques()はVertexIndexGraphConceptを満たす必要がないので要件を削除(#6892)その他、Tracに含まれていないいくつかの警告とバグを修正

Hash

  • std::arraystd::tupleのサポートを追加 (#6806)
  • GCCにおける-Wfloat-equal警告を修正 (#6771)
  • boost/functional/detail/container_fwd.hppに非推奨である旨の警告を追加

Iostreams

  • gzipのサポート (#5908)
  • 最新のBoost.Filesystem及びBoost.Testのテストに更新
  • 幾つかのドキュメントのエラーを修正 (#6530) (#6650)

Iterator

  • transform_iteratorのドキュメントでのresult_ofの使い方が正しくなかったのを修正 (#5127)
  • iterator_facade::operator->がproxy referencesに対して正しくなかったのを修正 (#5697)

MultiArray

  • Conceptのバグ修正とVisual Studio 2010向けのワークアラウンド(Patch)
  • assert.cppのテストケース修正(Patch)

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が依存ライブラリとなった

バグ修正

  • UTFエンコード関数がOutputIteratorに間違った型の値を渡している (#6635)
  • ICUの名前空間をつけ忘れている箇所がある (#6833)

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_iy関数がNaNになってしまう問題を修正

Meta State Machine

  • eUML : eUMLで遷移表としてのみ定義されたフロントエンドのためのよりよい構文。
  • バグ修正: グラフ構築がシーケンスとして定義されたinitial_stateでのみ動作していた
  • バグ修正: TerminateInterrupt状態のために定義されたフラグが、これらの状態のブロッキング関数を壊さないようにした
  • バグ修正: いくつかの領域からの多重遅延イベント(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_cmpl::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_mutextimed_locktimed_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のデストラクタはjoinabletrueを返す場合にterminateを呼ぶ様に変更(#6266)(C++11標準への追従)(破壊的変更)→ デフォルトではこれまで通りのdetach動作。BOOST_THREAD_PROVIDES_THREAD_DESTRUCTOR_CALLS_TERMINATE_IF_JOINABLEdefineすることで新しい動作に切り替えることができる。
  • threadはムーブ代入時にjoinabletrueを返す場合にterminateを呼ぶように変更(#6269)(C++11標準への追従)(破壊的変更)→ デフォルトではこれまで通りの動作。BOOST_THREAD_PROVIDES_THREAD_MOVE_ASSIGN_CALLS_TERMINATE_IF_JOINABLEdefineすることで新しい動作に切り替えることができる。
  • thread::id用のhashの特殊化を用意(#6272)(C++11標準への追従)
  • 条件変数のwait系関数用のcv_status列挙型を追加(#6273)(C++11標準への追従)
  • ドキュメントにBasicLockagle要件に関する記述を追加(#6231)(C++11標準への追従)
  • C++11標準向けにonce_flagを修正(#6342)
  • upgrade_lockmutexreleaseメンバが不足していたのを修正(#6671)
  • upgrade_lockに時間をメンバに取るコンストラクタが不足していたのを修正(#6672)
  • upgrade_lock用のフリー関数版swapが無かったのを修正(#6675)
  • packaged_taskresult_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)
  • futureinterruptすると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_mutextry_lock_upgrade_untilが正しく動作しない(#6674)
  • ML上で指摘されたtask_objectのムーブコンストラクタの存在下でtask_objectのコピーコンストラクタが削除される問題を修正

Unordered

  • unordered_multisetunordered_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 assertstatic 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