最終更新日時:
が更新

履歴 編集

Boost 1.53.0 リリースノート

本家リリースノート:

新ライブラリ

  • Atomic
    • Helge Bahmannによる、C++11スタイルのatomicライブラリ。Tim Blechmannによってメンテナンスされる。
  • Coroutine
    • Oliver Kowalkeによるコルーチンライブラリ
  • Lockfree
    • Tim Blechmannによるロックフリーデータ構造
  • Multiprecision
    • John MaddockとChristopher Kormanyosによる、拡張精度の算術型演算(浮動小数点数型、整数型、有理数型)。
  • Odeint
    • Karsten AhnertとMario Mulanskyによる、常微分方程式ライブラリ

更新ライブラリ

更新ツール

Array

  • boost::getstd::getをサポート(#7652)

Algorithm

  • 非ASCIIのコメントを修正(#7781)
  • Knuth-Morris-Prattのドキュメントを更新(#7656)

Asio

  • いくつかの64ビットから32ビットへの変換警告を修正(#7459)
  • ドキュメントとコメントの小さな間違いを修正(#7761)
  • basic_socket::get_option()のドキュメントにある例で、古い関数を使用していたので修正(#7562)
  • OpenSSLに合わせて、SSL_CTXに使用する型をlongからintに変更(#7209)
  • 最近のMinGWバージョンでは、_snwprintfがコンパイルエラーとなるため、swprintfを使用するようにした(#7373)
  • Windows上でio_serviceのスレッドプールをシャットダウンするときに、デッドロックする問題を修正(#7552)
  • noexcept修飾子を使うようにした(#7797)
  • UNIXドメインソケットの例で、acceptが致命的なエラーにならないよう修正した(#7488)
  • デフォルトメモリアロケーションの振る舞いを改善するために、小さいブロックの再利用をする最適化を追加

Bimap

  • エラーメッセージを改善するために、map_view_iteratorをリファクタ
  • 情報で比較する際のreplace_(left/right/key/data)のバグを修正
  • vector_ofビューとlist_ofビューのassign(size_type,value_type)のバグを修正
  • vector_ofビューのoperator[](size_type)at(size_type)の戻り値を修正

Chrono

非推奨

  • Boost.Chrono 1.2.xに含まれていたchrono i/oを、2.0で完全にリファクタリングした
  • chrono i/o : duration_shortduration_longマニピュレータを非推奨にした。その代わりに、パラメータ付きのフォーマットマニピュレータであるduration_fmt、もしくは名前変更したマニピュレータであるduration_symbolduration_prefixを使用すること。
  • chrono i/o : duration_punct<>ファセットを非推奨にした。代わりに、情報取得のためにget_duration_styleフリー関数、ローカライズのためにduration_unitsファセットを使用すること。
  • BOOST_CHRONO_VERSION==2とした場合、非推奨機能は使用できない。

バグ修正

  • time_point<system_clock>の出力バージョンがコンパイルに失敗する問題を修正(#7546)
  • time_point<system_clock>の入力バージョンがコンパイルに失敗する問題を修正(#7547)
  • chrono i/oで時間の解析が不完全だった問題を修正(#7868)

Container

  • list::const_iteratoroperator->()がコンパイルエラーになる問題を修正(#7650)
  • vectorの挿入パフォーマンスを改善
  • パフォーマンス向上のために、実験的にマルチアロケーションのインタフェースを再度変更(まだ実験)
  • 例外無効化の環境に対応
  • GCCの-Wshadow警告を修正
  • 非推奨マクロBOOST_NO_XXXXの代わりにBOOST_NO_CXX11_XXXを使用するよう置き換えた

Context

  • ARMのiOS、x86(32ビット)のMacOS Xのサポートを追加
  • Win32のSEH上書き保護サポートを追加

Geometry

バグ修正

  • 内部リングが最小サイズ以下の場合(たとえば、1か2個の点)に、ポリゴンの生成を回避するようにした
  • geometry::disjointへのセグメント縮退(Karsten Ahnertによるパッチ)
  • geometry::differenceで、正接のハンドリングが不足していた問題を修正(H2からの報告)
  • geometry::for_eachでのラムダを使用を修正
  • geometry::comparable_distancepoint-linestringpoint-rangepoint-polygonを修正

新機能

  • geometry::disjointの組み合わせ: point/ring, point/polygon, point/multi_polygon
  • geometry::intersectsの組み合わせ: point/ring, point/polygon, point/multi_polygon

内部的な変更

  • 様々なアルゴリズムの特殊バージョンと未実装バージョンを更新(以前のバージョンから引き続いての変更。これらは構造を簡略化し、より良いエラー報告をし、ドキュメント化の自動的に行う)

GIL

  • 自己代入の警告を修正(#4919)

Graph

バグ修正

  • kolmogorov_max_flow()がmax flow値を見つけてこない問題を修正(#3468, #7728)
  • アルゴリズムの要件が間違っていたので修正(#4386)
  • depth_first_search()に、on_finish_edgeイベントを追加(#5269)
  • 未使用変数警告を修正(#7428)
  • kamada_kawai_spring_layout.hppのコメント誤字を修正(#7457)
  • graph/reverse_graph.hppの不要なセミコロンを削除(#7467)
  • named_graphに対するadd_vertex()関数のオーバーロードが曖昧になる問題を修正(#7600)
  • boost/graph/labeled_graph.hpp内の誤字を修正(#7648)
  • boost/graph/tiernan_all_cycles.hpp内の誤字を修正(#7684)
  • Graphコンセプトの、必須ではない関連型を要件から削除(#7741)
  • small_world_iteratorのドキュメントに、デフォルト引数が記載されていない(#7771)
  • inserted_labeled_vertex()でプロパティが追加されていなかったのを修正(#7773)
  • Push Relabel Max Flowのドキュメント上のサンプルにあった誤字を修正(#7780)
  • Graphコンセプトのドキュメントで、examples/undirected.cppへのリンクが切れていたのを修正(#7787)
  • その他、Tracにないいくつかのバグ修正

機能追加

  • 複数のグラフを含むGraphMLの読み込みをサポート
  • A*検索の新バージョンを追加。具体的にはツリーや、同じ頂点を何度も通ることを許可するために、必要ならカラーマップを削除する。
  • VF2 subgraph isomorphismアルゴリズムを追加(Flavio De Lorenziに感謝する!)

Hash

  • 利用可能な環境でboost::int128_typeboost::uint128_typeのサポートを追加
  • プラットフォームが標準の浮動小数点数関数を持っている場合は、自動推論を使用しないようにした(#7221, #7470)

Interprocess

  • GCCの-Wshadow警告を修正
  • パフォーマンス向上のために、実験的にマルチアロケーションのインタフェースを再度変更(まだ実験)
  • 非推奨マクロBOOST_NO_XXXXの代わりにBOOST_NO_CXX11_XXXを使用するよう置き換えた
  • [ABI破壊] 効率改善のため、ノードプールアロケータを内部的に変更
  • ファイルマッピングのデータ構造を作る際、小さいサイズを指定するとクラッシュする問題を修正(#7795)

Intrusive

  • GCCの-Wshadow警告を修正(#7174)
  • 等値キーの要素が挿入される位置についてドキュメントに記載(#7529)
  • boost/intrusive/detail/has_member_function_callable_with.hppでのコンパイルエラーを修正。const付きの型を継承していた(#7815)
  • 侵入コンテナのコンストラクタに、不足していたexplicitを付けた
  • 非推奨マクロBOOST_NO_XXXXの代わりにBOOST_NO_CXX11_XXXを使用するよう置き換えた

Lexical Cast

  • ユーザー定義クラスのための、新たな文字型(char16_t/char32_t)検出アルゴリズム(#6786)
  • ドキュメント更新(#7582, #7831)
  • std::arrayの変換が、最適化の効かない書き方になっていたので修正(#7799)
  • g++で-ftrapvオプション (trap overflow errors : オーバーフローを検知してabort()させる)をつけるとエラーになるケースを修正(#7814)

Locale

  • セキュリティ関連のバグ修正。いくつかの不正なUTF-8シーケンスを、有効なものとして受け入れていた(#7743)
  • Windowsのコードページ名として不正な名前を使用していたので修正(#7386)
  • Doxygenのフォーマットミスによって、ドキュメントが不足していたので修正(#7734)
  • いくつかの場所で std:: 指定が抜けていたので修正(#7701)
  • いくつかの誤字と、英語の構文を修正(#7368, #7762)

Math

  • 問題点の修正:
    • Lanczos近似の背景ドキュメントの誤字を修正(#7325)
    • atanh()の正の値を渡した場合、domain_error例外が送出されるべきだが、overflow例外が送出されていたので修正(#7415)
    • asinh()のエラーポリシーとしてignore_errorを設定していても、大きな負数を渡すとoverflow例外が送出されてしまう問題を修正(#7416)
    • FBSD環境でのisinf()のコンパイルエラーを修正(#7183)
    • boost/math/constants/calculate_constants.hppヘッダのコメント誤字を修正(#7649)
    • math/minimax/main.cppに、インクルードするヘッダが足りていなかったので修正(#7694)
    • float_advance()に非正規化数として0を設定するとスタックオーバーフローする問題を修正(#4445)
    • libc++でコンパイルが通らない問題を修正(#7492)
  • two-sample students tの例が間違っていたので修正(#7402)
  • complexacos/asin/atanを改善(#7290, #7291)
  • cyl_bessel_jgamma_p/gamma_qのいくつかのコーナーケースで精度を改善。Rocco Romeoに感謝する。
  • 整数でのベッセルJとYの精度を改善。Rocco Romeoに感謝する。

MinMax

  • カンマ演算子の誤用を修正(#7752)
  • ドキュメント上の壊れたリンクを修正(#7751)

Move

  • boost/move/move.hppに全ての機能を入れていたので、core.hpputility.hppに分離した(#6524)
  • ドキュメントの小さな修正
  • 非推奨マクロBOOST_NO_XXXXの代わりにBOOST_NO_CXX11_XXXを使用するよう置き換えた
  • uninitialized_move()の実装に、例外のチェックが抜けていた(#7830)
  • マクロの不足と間違いを修正(#7832)

Polygon

修正

  • boost::polygon::contains()が、含まれていてもfalseを返す場合があったのを修正(#6366)
  • boost::polygon::belongs()の、ODR違反によるリンクエラーを修正(#7678)

内部的な変更

  • point/segment/intervaldata/concept/traitsをリファクタ
  • pointdata/concept/traits区間のユニットテストを追加
  • transform.hppの2次元操作を簡略化
  • point_3d data/concept/traitsを削除

Random

  • 例外が無効な状態で、コンパイルが通るように修正(#5399)

Range

  • range/any_range.hppにインクルードが不足している問題を修正(#5603)
  • search_nの実装詳細名前空間がboost::range::range_detailになっていたので、他に合わせてboost::range_detailに修正(#6103)
  • いくつかのドキュメント修正

Ratio

  • クラステンプレートbr_mulのメンバ変数nanの初期値のシフト演算において、シフトカウントがマイナスになったり、大きすぎる数になった場合に、未定義動作を引き起こすという警告が発生する問題を修正(#7616)

Regex

  • make_u32regex()のUTF-8検証が不十分だったので修正(#7744)
  • gcc4.7.2でC++11オプションを有効にした際の警告を修正(#7644)

Smart Pointers

新機能

  • Glen Fernandes氏による、配列用のmake_sharedallocate_shared実装を取り込んだ。これにより、デフォルト初期化と値なし初期化についてのオーバーロードと同じく、コンストラクタ実引数かinitializer listで初期化されうる配列についてのシングルアロケーションが可能になった。詳細はこちら[/libs/smart_ptr/make_shared_array.html make_shared and allocate_shared for arrays]を参照のこと。
  • shared_ptrを、配列へのポインタを保持できるようにした。これには、テンプレートパラメータで配列型(T[]もしくはT[N])を指定する。
  • C++11コンパイラではexplicit operator bool()を使用するようにした。これは、以下のようなケースでコードを破壊する: 1. boolをとる関数にスマートポインタを渡しているコード 2. boolを返す関数でスマートポインタを返しているコードこのようなケースでは、 p != 0 もしくは !!p を使用してください
  • [追加リリースノート] だいぶ前から非推奨だったshared_ptrvalue_typeを削除した。代わりにelement_typeを使用すること。

String Algo

  • パターンがオーバーラップしている時に、オーバーラップしている箇所がヒットしない問題を修正 (#7784)
  • あいまいなinsert呼び出しを排除 (#7346)

Thread

廃止された機能

  • boost 1.53で廃止された機能はboost 1.58までは利用可能である
  • C++11準拠: packaged_task<R>を廃止した。以降はpackaged_task<R()>を使うこと
  • Mutex::scoped_lockscoped_try_lockboost::conditionを廃止にした(#7537)

新機能

  • C++11準拠: ムーブ可能な関数オブジェクトと実引数をとれるthreadコンストラクタを追加(#6270)
  • C++11準拠: システムまわりの関数にnoexceptをつけた(#7279)
  • C++11準拠: promise::…at_thread_exit関数を追加(#7280)
  • C++11準拠: packaged_taskテンプレートにArgTypesを追加(#7281)
  • C++11準拠: packaged_task::make_ready_at_thread_exit関数を追加(#7282)
  • C++11準拠: ムーブ可能な関数オブジェクトと実引数をとれるasyncを追加(#7412)
  • C++11準拠: launchポリシーがdefferredのとき、asyncを追加する(#7413)
  • C++11準拠: future::get の事後条件が valid()==false になるようにした(#7414)
  • ゼロオーバーヘッドなcondition_variableを提供(#7422)
  • Async: make_futuremake_shared_futureを追加(#7444)
  • Thread: デストラクタでthreadjoinするヘルパークラスを追加(#7540)
  • Thread: デストラクタでthreadjoinするthreadのラッパークラスを追加(#7541)
  • C++11準拠: asyncで作成したfutureがデストラクタでjoinするようにした(#7575)
  • Synchro: strict_locknested_strict_lockを追加(#7587)
  • Synchro: 依存関係を制限するためにlocks.hppを分割した(#7588)
  • Synchro: Boost.ConceptCheckを利用して"ロック可能コンセプト"チェッカーを追加した(#7590)
  • enable_ifで使える"ロック可能トレイト"を追加(#7591)
  • Synchro: なにもしない、UpgardeLockableコンセプトに適合するnull_mutexを追加(#7592)
  • Synchro: externally_lockedクラスを追加(#7593)
  • Threads: スレッド中断禁止設定を追加(#7594)

バグ修正

  • 回帰テストツールで、データ競合によってBOOST_TEST(n_alive == 1);が失敗する問題を修正(#7464)
  • condition_variable::generationsメンバ関数がnotify_onenotify_allを呼び続ける状態になり、メモリー消費とパフォーマンスに甚大な影響を及してしまう(#7657)
  • スレッド内でthis_thread::sleep_for はもうsteady_clockを使わない(#7665)
  • thread_group::join_all()threadjoin可能かチェックすべき(#7668)
  • thread_group::join_all()resource_deadlock_would_occurcatchすべき(#7669)
  • lockable_traits.hppの"defined"トークンがtypoしている(#7672)
  • boost::futureset_wait_callbackのスレッドセーフ問題(#7798)
  • this_thread::sleep_forthis_thread::sleep_untilの説明が正しくない(#7808)
  • cv_status::no_timeoutrel_timeで指定した時間を越えたときに返却されている。cv_status::timeoutであるべき(#7812)
  • thread::idに、シンボル可視の属性が付いていなかったことによる警告を修正(#7874)
  • BOOST_THREAD_THROW_IF_PRECONDITION_NOT_SATISFIEDをデフォルトで有効にするよう修正(#7875)
  • condition_variable::wait(unique_lock<mutex>&)で発生する例外のメッセージが不適切だったので修正(#7882)
  • thread::do_try_join_until()に戻り値の型が抜けていたので修正(#7890)

Unordered

  • 標準以前の古いvariadic pairコンストラクタのサポートを外し、同等の実装をしなおした。いずれもBoost 1.48からdeprecated指定である。
  • eraseのより単純な実装の導入や、deprecated指定されていたコンフィグマクロの除去など、内部実装をさらに変更した。

Utility

  • 文字列への所有権を持たない参照を保持するstring_refクラスを追加

Variant

  • C++11環境に対してのみだが、ムーブコンストラクタとムーブ代入演算子を追加した。Variantライブラリは今、コピー不可でムーブ可なオブジェクトが使用できる(#7620, #7576)

Wave

  • context<>::add_macro_definitionがマクロ置換リストにまれに余計なT_EOFを追加する問題を修正

Xpressive

  • 最近のスマートポインタに対応するための修正(#7809)

Build

  • Qt5ツールセット
  • rccサポートを改善(#7576)

テスト済みコンパイラ

  • Linux:
    • GCC: 4.1.2, 4.2.4, 4.4.4, 4.5.3, 4.6.3, 4.7.2
    • GCC, C++11 mode: 4.4.4, 4.5.3, 4.6.3, 4.7.2
    • Intel: 11.1, 12.1
    • LLVM Clang: 2.8
    • LLVM Clang, with libc++: 3.2
  • OS X:
    • GCC: 4.4.7
    • GCC, C++11 mode: 4.4.4
    • Intel: 11.1, 12.0
  • Windows:
    • Visual C++: 9.0, 10.0
  • FreeBSD:
    • GCC: 4.2.1, 32 and 64 bit

追加のテストコンパイラ:

  • Linux:
    • Cray: 4.6.1
    • Clang: from subversion
    • LLVM Clang, with libc++: 3.2
    • GCC: 4.2.4, 4.4.4, 4.5.3, 4.6.3, 4.7.1
    • GCC, C++11 mode: 4.4.4, 4.5.3, 4.6.3, 4.7.1, 4.7.2
    • pgCC: 11.9
    • Intel: 10.1, 11.1, 12.1
    • Intel, C++11 mode: 13.0.1
    • Visual Age:
  • OS X:
    • Clang: from subversion
    • Clang, C++11 mode: from subversion
    • Intel: 11.1, 12.0
    • GCC: 4.4.7
    • GCC, C++11 mode: 4.4.4
  • Windows:
    • Visual C++: 10.0, 11.0
    • Visual C++ with STLport: 9.0
    • Visual C++, Windows Mobile 5, with STLport: 9.0
  • AIX:
    • IBM XL C/C++ Enterprise Edition: V12.1.0.1

翻訳

Akira Takahashi, Takatoshi Kondo, zak