最終更新日時:
が更新

履歴 編集

Boost 1.49.0 リリースノート

本家リリースノート:

http://svn.boost.org/svn/boost/website/public_html/beta/feed/history/boost_1_49_0.qbk

新ライブラリ

  • Heap
    • 優先順位付きキューデータ構造の実装
    • 作者:Tim Blechmann

更新ライブラリ

Asio

  • C++11のClock要件に基づく新たなクラステンプレートbasic_waitable_timerを追加。C++11 <chrono>ライブラリのクロックや、Boost.Chronoのクロックを使用することができる。high_resolution_timersteady_timersystem_timerという名前のtypedefは、標準クロックのオブジェクトを生成して使用する。
  • Windowsカーネルオブジェクトに対して待機を実行するためのwindows::object_handleクラスを追加。この機能の開発に貢献してくれたBoris Schaelingに感謝する。
  • Linux上において、connect()関数が特定の状況でEAGAINを返すことを可能にした。エラーマッピングを修正(#6048)。
  • NetBSDでのコンパイルエラーを修正(#6048)
  • Mac OS X上でのデッドロックを修正(#6275)
  • バッファストリームの書き込みが壊れていた問題を修正(#6310)
  • Windows上で、io_serviceが何もせず繰り返し実行される場合に、非ページプールの(メモリ)リークを起こしていた問題を修正(#6321)。
  • 以前の変更によってマルチスレッド環境下で競合状態が発生したため、この変更を撤回した。このため危険な操作をロックなしに実行できるようになっている。
  • 2つのbufferからなる配列があった場合、0番目のbufferが空だと、1番目のbufferが無視される可能性があった問題を修正。

Chrono

  • 非整数型のdurationでのIOでコンパイルエラーが出ていた問題を修正(#6092)
  • durationの入力ストリームにおいて、単数形が入力されると失敗する問題を修正(#6093)
  • BOOST_CHRONO_HEADER_ONLYが定義されている場合に、シンボルの重複によるリンクエラーが発生する問題を修正(#6113)
  • Sandia-pgi-11.9において、/libs/chrono/test/../example/min_time_point.cpp中のmin関数の使用がコンパイルエラーになる問題を修正(#6243)
  • Linux/Mac上において、process_cpu_clock::now()がマイクロ秒ではなくナノ秒を使用するように修正(#5909, #6257)

Container

  • at()ドキュメントの要件が逆だった問題、および例外を投げる条件のドキュメントが間違っていた問題を修正(#6499)。
  • flat_map::emplaceの戻り型がドキュメントと一致していない問題を修正(#6336)
  • allocator_traitsvoidへの参照ができる問題を修正(#6335)
  • gccで-enable-symvers=gnu-versioned-namespaceのあるなしに関わらずハードコードした前方宣言が機能しない問題を修正 (#6287)
  • ドキュメント修正(#6205)
  • STLPort使用時に、Interprocessにあるchar_traitsの前方宣言がC4099警告を起こす問題を修正(#4383)
  • 内部のallocator_traitsのクローンを使って、C++11/03のいずれのコンパイラでもallocator_traitsが利用できるようにした

Filesystem

バグ修正

  • テストケースの追加。自インスタンス自体(もしくは部分)をソースとするような代入や伸長をした場合にパスがエラーになる問題を修正(#3714)
  • Localecodecvt_facetがWindows環境でスレッドセーフではない。WindowsとMac OS Xのlocalecodecvt facetをネームスペーススコープに戻した。OS Xを除くPOSIX環境はもし環境変数が間違っていた場合に例外をキャッチできるように、またもし実際に使用されない場合locale("")の使用を避けることができるようにlocal static initializationを利用する(IE lazy)(#4889), (#6320)
  • 循環するシンボリックリンクに対するrecursive_directory_iteratorが失敗する。パッチを送ってくれたDaniel Aarnoに感謝する(#5652)
  • recursive_directory_iterator(error_code)がまだfilesystem_error例外を送出していた(#5653)
  • Windows環境でerrorが例外送出されたとき、directory_iteratorがアクセス違反になる(パッチを送ってくれたAndreas Ecklederに感謝)(#5900)
  • error_codeを引数にとるdirectory_iteratorの構築時にec実引数が渡されることなくインクリメントが呼び出されてしまうバグを修正(#5900 comment 2)
  • このチケット自体は問題なかったが、テストスィートのpath_test.cppのコードとドキュメントをわかりやすく修正した。すなわち、pathにまたがるiterationは一般的な形式を返す(#5989)
  • Windows環境下でのcodecvt処理が参照するコードページをCP_THREAD_ACPからCP_ACPに変更(#5592)
  • PGIコンパイラのために作業関数を修正した。Noel Belcourtに感謝する
  • パーミッション・テストの基準を現実に即して(特にSandiaテストプラットフォームに合わせて)緩和した

Geometry

バグ修正

  • multi-geometriesの距離が、特定のdistance strategyで無視される
  • polygon/multi_polygonの差異(2011/10/24にGGL-listに投稿された)
  • multi-geometrie(s)のいずれか一点が空の場合、距離を計算すると例外が送出される
  • Multi DSVが正しくセッティングを反映していない
  • 自己交差がまれに失われる(1.48で発生した)
  • 空のrangeに対する凸包がクラッシュする(例えば、空のmulti pointで)

チケット消化

  • closureに関するドキュメント(#6028)
  • covered_by.hppヘッダファイルの欠損(#6178)
  • 多点の凸包の計算をするコードがコンパイルできない(#6021)

機能追加

  • line/polygonの交差と差をサポートした
  • segment/boxの、異なるpoint型の変換をサポートした
  • multi pointへの追加をサポートした
  • スカラ関数(distance, area, length, perimeter)が空の入力に対しempty_input_exceptionを投げるようにした

ドキュメント

  • サポート状態を更新した

内部修正

  • distance/convert/assign/area についての specializations/not_implemented を更新した
  • ドメインを冗長にするために、wktdsvioフォルダへ移動した
  • clangでの警告を抑制するためにStrategyコンセプトを0に割りあてた(Vishnuのパッチを適用)

Graph

バグ修正

  • degree_vertex_invariant::maxの実装が間違っていた(#5881)
  • biconnected_components(…)で計算した低点マップが稀に間違っている(#6033)
  • prim_minimum_spanning_treeのドキュメントのend forが抜けている(#6061)
  • reverse_graph_edge_descriptor型の演算子に抜けがある(#6137)
  • chrobak_payne_drawing.hpp<stack>をインクルードしていない(#6246)
  • kamada_kawai_spring_layoutにデバッグ出力用のコードが残っている(#6239)
  • BGLのfunction_requires(非推奨)をBOOST_CONCEPT_ASSERTに置換(#6293)
  • boost:edge(u, v, reverse_graph)が非reverse graphedge_decriptorを返す(#6306)
  • trunkにあるreverse_graphが動作するように修正(#6313)
  • directed_graph/undirected_graphでコンパイルエラーが発生する(#6371)

およびTracに含まれていないもの

  • 再度LEDA graphサポートを有効にした(パッチを作ったJens Mullerに感謝する)
  • edge_predecessor_recorderのドキュメント追加

Icl

  • 特定の開区間についてboost::icl::is_emptyが失敗する(#6095)
  • 区間のカスタマイズをするとコンパイルエラーになる(#6210)
  • ムーブコンストラクタ、ムーブ代入演算子、ならびに二項演算子にムーブセマンティクスを導入した

Interprocess

  • GCC用の属性名にアンダースコア追加(#6412)
  • Windowsでintermodule_singletonがクラッシュする(#6398)
  • gcc 3.4.6でmessage_queueが"ambiguous class template instantiation"(無名クラステンプレートのインスタンス化)によりコンパイルできない(#6319)
  • gccで-enable-symvers=gnu-versioned-namespaceのあるなしに関わらずハードコードした前方宣言が機能しない(#6287)
  • managed memory segment上にSTLコンテナが構築できない(#6265)
  • scoped_ptr::reset(p, d)deleterが構築されない(#6233)
  • message_queueサンプルが32-bitでコンパイルできない(#6147)
  • boost 1.48.0 interprocessがFreeBSD環境下でコンパイルできない(#6134)
  • semaphore_timed_wait()の挙動がglibcのsem_timedwait()と一貫性がない(#6058)
  • OSX上でx86からx64(およびその逆)のShared Memoryの読み込みに失敗する(#6054)
  • boost::interprocess::message_queueクラスリファレンスのtypoを修正(#5772)
  • デフォルトコンストラクトしたmapped_regionのアドレスがNULLでない(#5738)
  • `interprocess::named_semaphore::removePの戻り値がPOSIX環境で逆になっている(#5622)
  • get_wmi_class_attribute関数がwindows server 2003でハングする(#5552)
  • Boost.Interprocessのscoped_ptrdetail::do_swapを要求するが、detail/utilities.hppがインクルードされていない(#5518)
  • shared_memory_object::remove関数が成功時にfalseを返している(#4655)
  • NDEBUG指定するとinterprocess::managed_mapped_fileでsegvが発生する(#4452)
  • STLPort使用時に、Interprocessにあるchar_traitsの前方宣言がC4099警告を起こす問題を修正(#4383)
  • "enumeral and non-enumeral type in conditional expression"警告の抑制(#4297)
  • mutex実装でのtimed functionがPOSIXの要求を満たすように修正した:どんな状況においても、mutexが即時にロックできない場合、この関数がタイムアウトで失敗してはならない。mutexが即時にロックできない場合、abs_timeoutパラメータの有効性をチェックする必要はない。

Intrusive

  • detail/memory_util.hppが余計な;があるためエラーになる(#6347)
  • splice / splice_afterに関するドキュメントの間違いを修正(#6223)
  • intrusive::unordered-std=c++0xの組み合わせでコンパイルエラーになる(#6153)

Lexical cast

バグ修正ならびに警告解消

  • Androidプラットフォームでlexical_cast(wchar_t)のコンパイルができない(#6127)
  • Sourcevoid*のとき、コンパイルできない(#6132)
  • cwcharがないプラットフォームで、lexical_castがコンパイルできない(#6159)
  • 不完全型への変換でコンパイルエラーが発生するようになった(#6182)
  • VS2005 /Zc:wchar_tオプション付きでコンパイルできない(#6186)
  • lexical_castのオーヴァーフロー処理が正常に動作しない場合がある(#6193)
  • ある条件下でユーザー型からostreamへの変換関数を与えてもlexical_castbad_lexical_cast例外を送出するようになった(#6264)
  • 64ビット環境下での警告抑制(#6290)
  • vectorからostreamへの変換関数を与えても、vectorが空の場合にbad_lexical_cast例外が送出される(#6298)
  • gcc3.4.4(cygwin)環境下でBOOST_NO_STD_WSTRINGがマクロ定義されている場合に、lexical_cast内でBOOST_LCAST_NO_WCHARが定義されるためコンパイルエラーになる(#6400)

Locale

  • 不正な入力シーケンスの検出時にMultiByteToWideCharを不正に使用していた問題を修正

Move

バグ修正

  • inlineが複数書いてあってGCCの-std=c++11モードでコンパイルエラーになっていた問題を修正(#6417)
  • swapのドキュメントに戻り値の型が記載されていなかった問題を修正(#6183)
  • MSVCで、セキュリティ関連のデバッグモードに関するマクロの書き方が間違っていたので修正(#6185)
  • いくつかの関数にinline指定がされていなかったので修正(#6395)
  • クラステンプレートのテンプレートパラメータTに対してムーブコンストラクタを定義しようとするとコンパイルエラーになる問題を修正(#6396)

Property Tree

  • XMLの書き込みで、適切なattributeエンコーディングが使用されない(#4840)
  • nullが埋め込まれたフィールドがあると、そこで文字列が途切れてしまう(#5259)
  • rapidxml.hppにあるalloc_functypedefをVC++系のコンパイラが探索できない(#5281)
  • プリミティヴ型をデータとして使う場合にコンパイルエラーになる(#5944)
  • boost::property_tree::ptree_bad_data::data<T>()関数はconstであるべき(#5757)
  • ptree::sort()がコンパイルエラーになる(#5710)
  • Intel Compiler XEおよびVS 2010でProperty Treeがコンパイルエラーになる(#5307)

Spirit

Spirit 2.5.2

  • Vitaly Budovskiのパッチを統合し、2進浮動小数点数のパーサーとジェネレータを追加
  • レキサのstream typewchar_tだった場合に、lex::lexertl::generate_static_dfaがコンパイルエラーになる問題を修正(#6253)
  • qi::token(min, max) もしくは qi::tokenid(min, max) を使用してレキサで解析した際に、トークンの範囲にマッチすることを可能にした。どちらのパーサーも、範囲[min, max]のあらゆるトークンIDにマッチする。
  • sequenceKleene, list, plusなどのような複合ジェネレータでcenter(num)[a]center(num, g)を使用する際の問題を修正
  • repository::karma::subruleが壊れていたので修正(Lee Clagettのパッチに感謝する)
  • Spirit.Karmaのサンプルを修正(Lee Clagettのパッチに感謝する)
  • multi pass iteratorclear_queueで、checkingポリシーはクリアしても、storageポリシーはクリアしてなかったので修正(#6368)
  • Spirit.Karmaにおいて、コンテナを保持しているバリアントをシーケンス(>>)の中でジェネレータとして使用した際の問題を修正

Thread

バグ修正

  • GCCのシンボル可視化に対応(#2309)
  • ロックのオプションに関するドキュメントを記載(#2639)
  • LinuxのSun 5.9でコンパイルが通らない問題を修正(#3639)
  • winscw(CodeWarrior)でコンパイルが通らない問題を修正(#3762)
  • Boost.ThreadとネイティブスレッドAPIとの組み合わせに関するドキュメントを記載(#3885)
  • promise::set_wait_callback()のドキュメントで誤記があったので修正(#3975)
  • boost::thread::idのストリーム出力の際のフォーマット設定に、io_state_saverを使用するようにした(#4048)
  • 不要なシンボル可視化の指定により警告が出ていたのを修正(#4315)
  • OpenVMSのDECCXXコンパイラで動作するようworkaroundを導入(#4480)
  • thread_refoperator<=のドキュメントで「operator>=」と誤記していたので修正(#4819)
  • future.hppがVisual C++環境で/clrオプションを付けるとコンパイルエラーになる問題を修正(#5040)
  • C++0x環境でBoost.Threadを使用すると、try_lock/lockでクラッシュする問題を修正(#5423)
  • shared_mutextimed_lock/lock_sharedで競合が発生する問題を修正(#5502)
  • shared_mutexがWindows CE環境で動作するようにした(#5594)
  • Intel Compiler環境で、thread::idのコピーコンストラクトができないというコンパイルエラーを修正(#5617)
  • 未使用変数警告を修正(#5739)
  • スレッドの生成に失敗した際にリソースリークが発生していた問題を修正(#5826)
  • ThreadProxyで例外が発生するとリソースリークする問題を修正(#5839)
  • GLIBCシステム上でhardware_concurrency()を計算するのにget_nprocs()を使用するようにした(#6100)
  • Boost.ThreadとBoost.Moveを一緒に使用すると発生するコンパイルエラーを解消(#6141)
  • recursive_mutexのconfigマクロ名をtypoしていたので修正(#6168)
  • unique_lockがSunStudio環境でコンパイルエラーになっていた問題を修正(#6175)
  • condition_variablemutexが、EINTRシグナルが発生した場合にエラーになる問題を修正(#6200)
  • Clang 3.0のC++11モードで、shared_lockがコンパイルエラーになっていた問題を修正(#6207)
  • Clang 3.0のC++11モードで、try_lock_wrapperがコンパイルエラーになっていた問題を修正(#6208)

Unordered

  • コンパイラがムーブに対応していない場合、デフォルトではBoost.Moveによるエミュレーションを行わないようにした。有効にしたい場合は、BOOST_UNORDERED_USE_MOVEでdefineする(#6167, #6311)。Boost.Moveがまだ、要素の型に関わらずムーブしてしまうための対処。
  • unordered_map::iteratorのインクリメントで発生するGCCの警告を修正(#6370)
  • 古い標準ライブラリを使用してC++11のサポートを強化。

Uuid

  • Clang 3.0での、intからunsigned intへの暗黙の型変換で出ていた警告を修正(#6258)
  • SHA1の実装として、長いメッセージの処理に対応(#5325)
  • GCCでの、random_generatorで出ていた警告を修正(#6118)

テスト済みコンパイラ

  • Linux:
    • Intel: 11.1
    • LLVM Clang 2.8
    • GCC: 3.4.6, 4.2.4, 4.3.4, 4.4.3, 4.5.2, 4.6.2
    • GCC, C++0x mode: 4.3.4, 4.4.3, 4.5.2
  • OS X:
    • Intel: 11.1
    • GCC: 4.2.1, 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 and 64 bit.
  • QNX:
    • QCC, C++0x mode: 4.4.2, 4.6.1, 4.6.2

追加のテストコンパイラ

  • Linux:
    • GCC: 4.2.4, 4.3.4, 4.4.4, 4.5.2, 4.6.2
    • GCC, C++0x mode: 4.3.4, 4.4.4, 4.5.2
    • pgCC: 11.9
    • Intel: 10.1, 11.1, 12.0
    • PathScale: 4.0.8
    • Visual Age 10.1
  • OS X:
    • Clang from subversion
    • Intel 11.1, 12.0
    • GCC: 4.4.4
    • GCC, C++0x mode: 4.4.4
  • Windows:
    • Visual C++ 8.0, 9.0, 10.0
    • Visual C++ with STLport: 9.0
    • Visual C++, Windows Mobile 5, with STLport: 9.0
    • GCC, mingw: 4.4.0, 4.5.2
    • GCC, C++0x mode, mingw: 4.5.2
    • GCC, mingw 64-bit: 4.4.7, 4.5.4, 4.6.1
  • AIX:
    • IBM XL C/C++ Enterprise Edition, V11.1.0.0
  • FreeBSD:
    • GCC 4.2.1, 32 and 64 bit
    • Solaris:
    • Sun 5.10

翻訳

Akira Takahashi, zak, Norihisa Fujita