[PDF] P0230R0: SG14 Games Dev/Low Latency/Financial Meeting Minutes 2015/10/14-2015/02/10
ゲーム開発、低レイテンシー、Financialな業界からC++に提案をする会議の議事録。
[PDF] P0231R0: Extending the Transactional Memory Technical Specification to Support Commit Actions
トランザクショナルメモリーにコミット操作を追加する提案。コミット処理の結果が反映されるのはは、処理が終わったあとまで遅延される。
[PDF] P0232R0: A Concurrency ToolKit for Structured Deferral/Optimistic Speculation
RCUとハザードポインターの特性を面白い喩え話を用いて説明している。
シュレディンガーは動物園を持っている。動物園には様々な動物がいる。シュレディンガーは動物たちを管理するメモリ内データベースを持っている。動物の出産や購入はデータベースへの追加、死亡や売却はデータベースへの削除として操作される。動物にはネズミや昆虫も含まれるので、このデータベースは頻繁に更新される。このデータベースに対して、動物の状態を調べるためにクエリーすることができる。ただし、猫に対するクエリーが常に多い状態になっている。これは、おそらく動物園内のネズミが点滴の情報を調べるためにクエリーしているのだろうとシュレディンガーは推測している。
この頻繁に更新され、一部の情報に高頻度のクエリーが飛ぶ利用特性を持つデータベースの実装として、グローバルロック、バケットごとのロック、RCU、ハザードポインターによる実装を比較して、それぞれの特性を示している。
また、文書ではリファレンスカウントもRCUやハザードポインターと似たような特性を持つだろうとしている。
将来的には、C++にRCUやハザードポインターのライブラリを追加したいそうだ。
[PDF] P0233R0: Hazard Pointers: Safe Reclamation for Optimistic Concurrency
ハザードポインターの解説文書。
[PDF] P0234R0: Towards Massive Parallelism(aka Heterogeneous Devices/Accelerators/GPGPU) support in C++
GPGPUのような大規模な並列処理を行う異なるアーキテクチャが混在したコンピューター環境をC++でサポートするにあたって、現状の提案の一覧や、既存の実装を解説している。
[PDF] P0235R0: A Packaging System for C++
ブリザードエンタテイメント社によるC++のためのパッケージシステムの提案。
パッケージシステムというのは、Pythonにおけるpipや、Rubyにおけるgemや、node.jsにおけるnpmのような仕組みのことだ。ソフトウェアのライブラリを手軽に配布、入手、インストール、使用できるためのシステムのことだ。
提案はディレクトリ構造にまで言及するなど、かなり具体的なものになっている。
筆者の意見では、パッケージシステムはOSが提供するものであって、言語がそれぞれ提供するのは間違っている気がする。しかし、成功しているプログラミング言語はだいたいパッケージシステムを持っているのも事実だ。
文書の提案する仕組みに基づいたパッケージシステムをClangに実装したものが、ブリザードのGitHubで公開されている
https://github.com/Blizzard/clang
[PDF] P0236R0: Khronos's OpenCL SYCL to support Heterogeneous Devices for C++
OpenCL SYCLとしてC++によるOpenCLのラッパー規格の紹介。
[PDF] P0237R0: On the standardization of fundamental bit manipulation utilities
unsigned charの配列をビット列のコンテナーとして扱えるラッパークラスの提案。ビットに対するリファレンス、ポインター、イテレーターを提供している。
これにより、例えば立っているビットの数を数えたいときは、イテレーターをstd::countに渡せばよい。std::countは、std::bit_iteratorに対して、アーキテクチャがサポートしていれば、popcntを呼び出すなどの最適化も行える。
P0238R0: Return type deduction and SFINAE
戻り値の型の型推定に失敗した場合、ハードエラーではなくSFINAEにする提案。
[PDF] P0239R0: valueless_by_exception
variantのcorrupted_by_exceptionをvalueless_by_exceptionに改名する提案。
ドワンゴ広告
ドワンゴは本物のC++プログラマーを募集しています。
CC BY-ND 4.0: Creative Commons — Attribution-NoDerivatives 4.0 International — CC BY-ND 4.0
ひゃっはー、新鮮な規格情報だー。
ReplyDeleteさて、自分がOpenCLに対して行いたいことは一つです。OpenCLのことはよく知りませんが・・・。
都度、並列化用データと並列化用ラムダを書いて、OpenCLに投げて結果を返してほしい。それだけです。
ラムダにはC++のラムダがフルスペックで使えるとかなりよろしいと思います。
が、たぶん参照キャプチャは無理ですよね。
ビット演算ライブラリは地味に必要なので歓迎ですが、これvectorのuchar配列にも使えるんでしょうか?
できればインデックサとsizeも入れてほしいです。