Masahiro Sakai
-
2016-08-02T15:47:49+0000
- 更新日時:
2016-08-02T15:47:49+0000
OS X El Capitan でHaskellのOpenCLパッケージ
http://hackage.haskell.org/package/OpenCL
がビルドできないなぁ。 c2hsが__nullableや__nonnullに対応していないせいっぽいが、これどうするのがいいんだろうねぇ。
先日の
https://plus.google.com/+MasahiroSakai/posts/7ZCi5BiApVP
といい、c2hsは言語拡張に対して弱くて、うーん……
共有中: 一般公開
+1 したユーザー:
想馬燈(UrchinCat)
Masahiro Sakai
-
2016-08-02T23:57:09+0000
一応報告した。
https://github.com/IFCA/opencl/issues/47
Kazuma Arino
-
2016-08-03T00:09:13+0000
clang使ってればそんなのどうという事無さそうですが、自前でやってるんですかね?
Masahiro Sakai
-
2016-08-03T03:22:14+0000
clangでプリプロセッサの処理を行った結果のCソースコードを、自前でパースして、FFIのコードを生成してますが、このパーサがclang拡張を知らないので問題が起こってます。
Cのプログラム解析ツールや、FFIコード生成では、割とよくある構成だと思います。
Kazuma Arino
-
2016-08-03T06:22:35+0000
- 更新日時:
2016-08-03T06:22:55+0000
まじっすか。ソースコードのパースもclang使ってLLVMとつなげる方が普通なのかと(某社のOpenCLもどきはこの構成)
Kazuma Arino
-
2016-08-03T06:24:05+0000
まじっすか、と思ったのは自前でパースするとまさにここで言ってるような問題が延々と出続けるので筋が悪いから普通はそうしないに違いない、と思っていたからです。
Masahiro Sakai
-
2016-08-03T14:44:02+0000
システムのヘッダとコンパイラは通常組み合わせて使うようになっているので、FFI用コード生成にCのヘッダをパースしたいというような用途の場合、システムのコンパイラを使ってパースできれば、それが一番問題が少ないでしょうが、
* システムによって使われているコンパイラは違うし、
* 昔はgccが主流だったが、gccはそういうことが非常にやりにくかった、
ということを考えると、自前でパースする方向になったのは、昔としては自然な選択かと。
今であれば、最近はclangが完成度も高いし、色々な拡張を理解するし、ライブラリとしても使いやすいしで、clangを使うのは悪くない選択肢だとは思います。
システムのコンパイラがclangでない場合には、システムのヘッダでclangが対応してない拡張が使われている可能性はなくはないですが、自前のパーサとclangであれば、clangの方に分がありそうですし。
Kazuma Arino
-
2016-08-03T23:10:27+0000
そうそう、gccしか無かった頃はそうなんですが、今はもうclangが普通に使われ始めて随分経つので、未だに自前パースなんてやってるのが良くある、というのが信じがたかったのです。
イマドキclangでコンパイル出来ない独自拡張のシステムヘッダとかもほとんど無いかと(7年前ならいざしらず)
Cのプログラム解析ツールや、FFIコード生成では、割とよくある構成だと思います。
* システムによって使われているコンパイラは違うし、
* 昔はgccが主流だったが、gccはそういうことが非常にやりにくかった、
ということを考えると、自前でパースする方向になったのは、昔としては自然な選択かと。
今であれば、最近はclangが完成度も高いし、色々な拡張を理解するし、ライブラリとしても使いやすいしで、clangを使うのは悪くない選択肢だとは思います。
システムのコンパイラがclangでない場合には、システムのヘッダでclangが対応してない拡張が使われている可能性はなくはないですが、自前のパーサとclangであれば、clangの方に分がありそうですし。
イマドキclangでコンパイル出来ない独自拡張のシステムヘッダとかもほとんど無いかと(7年前ならいざしらず)