本家リリースノート: http://beta.boost.org/users/news/version_1_45_0
更新ライブラリ
- Asio
- Config
- Filesystem(+)
- Flyweight
- Foreach
- Fusion
- Graph
- Interprocess
- Math
- Meta State Machine
- MultiArray
- Polygon(+)
- Property Tree(+)
- Proto
- Serialization(+)
- Spirit
- Thread(+)
- TypeTraits
- uBLAS
- Unordered
- Wave
- Xpressive
更新ツール
Asio
- kqueueベースプラットフォームにおいて、
io_serviceがバックグラウンドスレッドで走っている場合にdeadline_timerが着火しないかもしれない問題を修正(#4568)。 constメンバ関数であるhas_service()中で、非constメンバ関数であるinit_key()を呼んでいたためコンパイルエラーになっていた問題を修正(#4638)。- MinGWのクロスコンパイルを修正(#4491)。
- Boost.Systemの非推奨関数に依存していた部分を削除(#4672)。
close()/closesocket()の失敗を正しく伝播されることを保証(#4573)。InitializeCriticalSectionAndSpinCountによって返されたエラー値のチェックを追加(#4574)。- QNXのハードウェア制御フローサポートを追加(#4625)。
- HP-UX上で
pselect()が利用可能な場合、常にそれを使用するようにした(#4578)。 - ハンドラ引数が左辺値として渡されることを保証(#4744)。
- スレッドサポートが無効にされた場合のWindowsビルドを修正(#4680)。
- 5分以上の未来が指定された場合、
deadline_timerオブジェクトが終了しないことがあるWindows特有の問題を修正(#4745)。 - 空のサービス名がポート番号0に解決されるよう、ドキュメントに従ってBSDプラットフォーム上のバックエンドを修正(#4690)。
const_buffers_1型のバッファシーケンスを受け入れないよう、read操作を修正(#4746)。- Objective-C++のキーワードである
protocolとidを避けるように再定義(#4191)。 - 実行中の
deadline_timerオブジェクトが数多くある場合に起こる、vectorの再確保問題を修正(#4780)。 - NetBSD上でコンパイルできるよう、kqueueバックエンドを修正(#4662)。
- 64ビット Mac OS X、およびBSD上での
is_control()の実装を用意した(#4782)。 <boost/asio/impl/src.hpp>をサポートし、<boost/asio/impl/src.cpp>を非推奨にした(#4560)。
Config
- 可変引数マクロが実装されているコンパイラかどうかを判定する
BOOST_NO_VARIADIC_MACROSマクロ追加。 - C++0xから追加された
std::numeric_limits<T>::lowest()が実装されているかどうかを判定するBOOST_NO_NUMERIC_LIMITS_LOWESTマクロ追加。 - OpenVMS環境でのコンフィグレーションサポートを追加。
boost/config/platform/vms.hpp(#4474)
バグ修正
- Cygwin + GCC環境でWIN32マクロが定義されないと仮定していたためリンクエラーを起こしていた問題を修正(#4670)
boost/config/auto_link.hppのBOOST_AUTO_TAGGEDで、「#pragma commentcomment」になっていたのを「#pragma comment」に修正。VC8ではunknown pragma警告が出ていた。(#4653)boost/config/platform/bsd.hppで__NetBSD_GCC__がdefineされていると仮定して書かれていたため、OpenBSD環境でコンパイルエラーになっていた問題を修正(#4508)
Filesystem(+)
path_traits::is_pathableを追加した。pathメンバテンプレートが非pathableな型でオーバーロード解決されるのを防ぐためにこれを使用する。この問題は、Adam Baduraによって報告された(rev.64986)。- 古いWindows SDKに関するV2 create_hard_linkの問題を解決(#4487)。
- Boost.Mathで発生していた#4799のリンクエラーと同じ問題が、他3箇所でも発生していたので修正。
- Boost 1.44.0でV3を追加した際に、V2の
boost::filesystem::slashが見つからないというコンパイルエラーが出ていた問題を修正(#4712)。 - 不正にsymlinkと識別されるfilesystemオブジェクトの問題を修正し、テストを追加(#4663)。
temp_directory_path関数を追加(rev.66028)。
Flyweight
- チケット#4606で記述されたBoost.Interprocessと関係する、Win32プラットフォーム上で
intermodule_holderのぶら下がり問題を修正。 std::exitによって、非互換の内部拡張によるプログラム終了を削除。
Foreach
auto_anyのコンストラクタをexplicitに修正
Fusion
privateメンバ変数を持つクラスをRandom Access Sequenceとしてアダプトする、BOOST_FUSION_ADAPT_ADTマクロを追加。privateメンバ変数を持つクラステンプレートをRandom Access Sequenceとしてアダプトする、BOOST_FUSION_ADAPT_TPL_ADTマクロを追加。privateメンバ変数を持つクラスをRandom Access SequenceかつAssociative Sequenceとしてアダプトする、BOOST_FUSION_ADAPT_ASSOC_ADTマクロを追加。privateメンバ変数を持つクラステンプレートをRandom Access SequenceかつAssociative Sequenceとしてアダプトする、BOOST_FUSION_ADAPT_ASSOC_TPL_ADTマクロを追加。
Graph
- Daniel TrebbienによるStoer-Wagnerの最小カットを求めるアルゴリズム(無向グラフを二つに分けたときに、重みが最小になるような分け方を求める)を追加。
- W. P. McNeillによる暗黙的グラフ(
implicit_graph)(メモリをあまり使わないグラフ)とA*(astar_maze)(最短経路を求めるアルゴリズム)のサンプルを追加。 - グラフのプロパティのための、バンドルされたプロパティ(?)の追加。
- →補足(Akira): 分散グラフの
compressed_sparse_row_graphにgraph_bundledプロパティを追加。分散グラフの方はold-styleのプロパティを持たないので、非分散グラフとインタフェースを合わせるために持たせただけ(rev.65764)。
- →補足(Akira): 分散グラフの
- #4556, #4622, #4631, #4715, #4753, #4758 及び #4793と、Tracに登録されていないバグを修正。
- #4731 と #4737の、ドキュメントのバグを修正。
Interprocess
バグ修正
- Win32環境において、グローバルなファイルマッピングが行えない問題を修正(#1080)。
interprocess::shared_memory_mapping::get_sizeのドキュメントがおかしかったので修正(#3284)。- named semaphoreの説明に、named conditionが出てきていたので修正(#3439)。
interprocess_conditionがデッドロックを起こしていた問題を修正(#3448)。- 同じファイルがほかのところで閉じられると、排他的な
file_lockが失われてしまう問題を修正(#3582)。 destroy_ptr時にセグメンテーションフォルトになっていた問題を修正(#3682)。windows_shared_memoryのムーブコンストラクタで、初期化されてないハンドルでswapしていた問題を修正(#3829)。getline内で、変数が二重定義されていた問題を修正(#3846)。message_queueにセキュリティ属性を追加(#3914)。offset_ptrのoperator<<が動いていなかった問題を修正(#3947)。mapped_regionのデストラクタが、そうするべきではないところでshmをdeleteしていた問題を修正(#3950)。managed_shared_memoryのfindが、GCCの最適化によってassertに引っかかっていた問題を修正(#3951)。- 非推奨となっているBoost.Configの
BOOST_HAS_*マクロを使用していたのを修正(#3985)。 message_queueのために、bootstamp名のフォルダを使用していたため、長時間動かすようなシステムで突然動かなくなってしまう問題があったので修正(#4010, #4352)。file_mappingがVC10でコンパイルエラーになっていた問題を修正(#4417)。- 例外メッセージをいくつか追加(#4019)。
named_mutexが冬眠していた問題を修正(#4039)- Linux版の
set_file_pointerの結果判定が間違っていたため、成功しても失敗で返っていたので修正(#4218)。 swap時にoperator==がないというコンパイルエラーになっていた問題を修正(#4230)。- プログラムを実行したユーザーの権限でtmpフォルダが作られていたため、ユーザーを切り替えるとそのフォルダにアクセスできなくなる問題を修正(#4250)。
<boost/interprocess/mem_algo/rbtree_best_fit.hpp>の警告をとった(#4297)。- パーミッションを指定できるようにした(#4350)。
- GCC 4.6でコンパイルエラーになっていた問題を修正(#4426)。
- MinGWでregression testがリンクエラーになる問題を修正(#4516) ←直ってないぞ、と言われている…。
interprocess::interprocess_semaphoreがwaitしてる間CPUを消費する問題を修正(#4524)。BOOST_ENABLE_ASSERT_HANDLERをdefineしたらコンパイルエラーになっていたので、Interprocess内のassertを全てBOOST_ASSERTに置き換えた(#4557)。- Flyweightと合わせて、
test_intermod_holderのregression testが通らなかったので修正(#4606)。 boost::interprocess::winapi::get_last_bootup_time(std::wstring&)のregression testが通らなかったので修正(#4685)。- Jailed FreeBSD環境でregression testが通らなかった問題を修正(#4694)。
新機能
- ムーブセマンティクスに対応(GCC 4.5とVC10でテストしてある)
- interprocess named resourceのためにパーミッションを可能にした。
mapped_region::flushが汎用的な実装ではなかったので修正。- FreeBSDとMacOS環境においてnamed semaphoreとmutexを実装するためにposix semaphoreを使用するようにした。
Math
- 逆ガンマ分布(inverse gamma distribution)、逆カイ二乗(inverse chi square)、Scaled逆カイ二乗(scaled inverse chi square)を追加。
- 標準乱数ライブラリでの分布と関数の名前における曖昧さへの更なる警告を追加。
- ドキュメントのリビジョン修正と、FAQの追加。
Meta State Machine
- シリアライズに対応。
- eUMLのアクションに通常の関数オブジェクトを使用できるようにした。
- 引数としてサブ状態、サブ状態マシンをとるコンストラクタを追加。これによって引数をサブ状態マシンに渡すことができる。
- Bugfixes (anonymous transitions) ←なにこれ?
Multi Array
- #3581, #3820, #3989, #4032 のバグと、Trac に登録されていないその他のバグを修正(←その他のバグってなんやねん!)。
- #3581 ―― boost::fortran_storage_order example のサンプルが間違っている(
boost::fortran_storage_orderではなくboost::fortran_storage_order())のを修正。 - #3820 ―― Boost.MultiArray Reference Manual で
std::timesを使っているが、これは標準の関数ではないのでstd::multipliesに修正。 - #3989 ――
detail/ptree_implementation.hppでメンバ呼び出しの際にtemplateが無いのと、libs/multi_array/example/for_each.hppでtypenameが無いのを修正。 - #4032 ――
boost::detail::ConstMultiArrayConceptとboost::detail::MutableMultiArrayConceptはよく使うものなので Boost.ConceptCheck へ移動。
- #3581 ―― boost::fortran_storage_order example のサンプルが間違っている(
- 新しいサンプルとテストケースを追加。
リリースノートに載ってない変更
- negative strideを適切に処理するために、
generate_array_viewのassertを修正(rev.53879)。 generate_array_viewにおいて、合法な範囲(legal range)を考慮するとき、リサイズが空の配列から始まるのを説明する必要がある、ということで小さな修正を行った(rev.62963)。
Polygon(+)
リリースノートに記載されていない更新:
- 1.44.0リリース以降の様々なバグを修正(rev.66403) ←なんですかそれ…
Property Tree(+)
リリースノートに記載されていない更新:
- XMLパーサーがi18nに対応していなかった問題を修正(#4340)。
Proto
- #4602 のバグを修正。
proto::Nの大きな障害を取り除いた。 - RTTI のないコンパイラをサポート。
proto::matchesの配列型とワイルドカードパターンのバグを修正。- MSVC に
/clrオプションを付けた状態で Proto が動くように修正。 proto::evalのオーバーロードに const 修飾を追加。
Serialization(+)
リリースノートに記載されていない更新:
- Serializationの新しいバージョンをMPIで使うために同様の修正を行った(rev.65965)。
- XML構文を、Spirit.Qiで書き直した(rev.66030)。
- アーカイブバージョン1.41-, 1.42, 1.43,1.44+の互換性を修正(rev.66107)。
- MinGWのビルドを修正(rev.66123)。
Spirit
- optional attributeのSpirit.Qiデバッグ機能が壊れていたので修正
- Spirit.Qiの
autoパーサーおよびSpirit.Karmaのautoジェネレータがsigned charおよびunsigned charで適切に動作するようになった。 multi_pass fixed_size_queueポリシーの問題を解決した。 ←問題ってなんだ。skipディレクティブでproper modifier handlingが可能になった。 ←何それどこにも書いてない。- Spirit.Karmaの浮動小数点数フォーマットにおいて、
scientificモードで出力したときの値に誤差がある問題を修正(#4742)。 repeatディレクティブ中でのパース失敗時にfirstイテレータがリセットされない問題を修正(Stack Overflowを参照)。
Thread(+)
リリースノートに記載されていない更新:
thread_time.hppが、BOOST_DATE_TIME_HAS_HIGH_PRECISION_CLOCKがdefinedされていることに依存した実装になっていた問題を修正。Androidでのクロスコンパイルに失敗していた(#4727)。- raceを回避するために、
promise::lazy_initをshared_ptrのatomic accessを使用するよう修正(#4531)。 condition_variable::waitの書き込み割り込みチェックの競合条件を削除(#2330)
TypeTraits
新機能
- 型に右辺値参照(
&&)を付加するadd_rvalue_referenceメタ関数を追加。 - 型に左辺値参照(
&)を追加するadd_lvalue_referenceメタ関数を追加。 - 可変個テンプレートパラメータを受け取り、それらが共通して変換可能な型を返す
common_typeメタ関数を追加。
Boost.Ratioの実装に必要。このメタ関数の元ネタはD言語。
参照:
マイナー修正
is_signed,is_unsignedメタ関数の内部でstatic const Tを使用していたのをBOOST_STATIC_CONSTANTに修正。is_virtual_base_ofメタ関数の内部実装で使用する型名を変更。
uBLAS
- 疎行列/パックド行列の行列要素割当て時に型変換エラーが起こる可能性がある問題を修正(#4410)
- 行列/ベクトル<->スカラー間の
operator*を新規に提供(#3397) - #795を修正(何も変わっていない。rejected?)
matrix<complex>とmatrix<double>のように異なる型同士の四則演算を追加。また、テストを追加(#3514)
新機能
size<>演算子。たとえば、size<1>(A+B)は、行列Aと行列Bの和の行の数を表します。
Unordered
- Fix inserting from iterators which return by copy from
operator*inboost::unordered_mapandboost::unordered_set. ←変更点を見たらTODOになってたので保留。
Wave
V2.1.0
- C++0xでの
pp_tokensの定義に従って形成されたトークン(列)である場合に限りトークン連結が妥当となるようにした。今までは--variadicモードにおいて、非pp_tokensに対して(訳注:トークン(列)の)形成を許していた。 - マクロ定義中、
/##/を不正なトークン連結として prevented reporting する問題を修正 - 'inactive' conditional preprocessing directive tokens に対する
skipped_tokenフック呼び出し禁止の問題を修正。 conditional preprocessing directives 処理時における、 reporting skipped tokens 中の関数フックの全体的な整合性を向上した。 skipped_token フックの呼び出しを検証する新しいテストケースを追加した(t_2_020.cpp)。 - 真で戻ってくる場合の 'expanding_object_like_macro', 'expanding_function_like_macrol' pp フックが、正しくマクロ展開を抑制せずに全ての preprocessing を停止してしまうことによる問題を修正。
- inactive conditional branches 内部で preprocessing directives に対して skipped_token pp フックを重複して呼びだしているのを修正。
Xpressive
boost::xpressive::as<T>がstd::wstringで動作していなかった問題を修正(#4496)。
Boostbook
- コードブロック終了にあるコメントのシンタックスハイライトを修正
Quickbook
- コマンドラインマクロを修正
- ネストしたコードスニペット
- ネストしたドキュメンテーションコメント
- ドキュメント情報をエスケープするXMLを差し戻し。この問題はいくつかのドキュメントファイルを壊した(現在のバージョンは1.6)。
- 他の小さな修正に関しては、修正履歴を参照。
テスト済みコンパイラ
主要テストコンパイラ:
-
Linux:
- GCC: 3.4.6, 4.2.4, 4.3.4, 4.4.3, 4.4.5, 4.5.1.
- GCC, C++0x mode: 4.3.4, 4.4.3, 4.5.0.
- Intel: 10.1, 11.0, 11.1
- Pathscale: 3.2.
-
OS X:
- GCC: 4.0.1, 4.2.1, 4.4
- GCC, C++0x mode: 4.4.
- Intel: 11.1
-
Windows:
- Visual C++: 7.1, 8.0, 9.0 and 10.0.
- GCC, mingw: 4.3.3.
-
FreeBSD:
- GCC: 4.2.1, 32 bit.
- GCC: 4.2.1, 64 bit.
追加のテストコンパイラ:
-
Linux:
- GCC: 3.4.6, 4.2.4, 4.3.4, 4.4.3, 4.4.5, 4.5.0, 4.6.0 (dev version).
- GCC, C++0x mode: 4.3.4, 4.4.3, 4.5.0.
- Intel: 10.1, 11.0, 11.1.
- pgCC 10.1.
- PathScale: 3.2.
- Clang from subversion.
-
OS X:
- Intel C++ Compiler: 10.1, 11.0, 11.1.
- GCC: 4.0.1, 4.2.1, 4.4.4
- GCC, C++0x mode: 4.4.4
- Clang from subversion.
-
Windows:
- Borland: 5.9.3, 6.1.3 (2009), 6.2.1 (2010), 6.3.0
- GCC, mingw: 4.3.3, 4.4.5, 4.5.1
- GCC, mingw, C++0x mode: 4.5.1
- Visual C++: 7.1, 8.0, 9.0, 10.0
-
AIX:
- IBM XL C/C++ Enterprise Edition, V11.1.0.0.
-
FreeBSD:
- GCC 4.2.1, 64 bit.
-
Solaris:
- Sun C++: 5.10.
翻訳
Akira Takahashi, melpon, DigitalGhost, kambk, rigarash