本家リリースノート: 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
で適切に動作するようになった。 mutli_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_map
andboost::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