2008-10-26
型変換の仕様をどうしよう
|yarv2llvmは現在、fib以外のベンチマークを作るため、Rubyのソースコードにあるbm_so_mandelbrot.rbを動かそうと色々拡張しています。なぜbm_so_mandelbrot.rbかといえば、それ以外はクラスとかつかっていて動きそうに無いからです。
今のところ、動かすとcr = (2.0*x/size)-1.5という式で2.0とsize (Int32Ty型)が矛盾してるよってエラーが出ます。
RubyではFixnum -> Floatの変換は暗黙に行っているものが多いと思いますが、yarv2llvmで暗黙の型変換を実装するか、明示的な型変換メソッドを用意するか迷っています。どっちも可能で、暗黙の型変換のほうがRubyとの互換性が高いのですが、意図しない型変換が発生して速度が低下する可能性があるなって思います。
おまけ
llvmで、「Intrinsic Functions」を使うとまた違う次元の機能(高階関数とか継続とか)ができて面白そうです。llvmrubyでも普通の関数呼び出しと同じ手順で生成できます。
追伸
暗黙の型変換できると思ったのですが、やると型推論が出来なくなりますね。やっぱり、ここは型変換を入れてもらうようにします。
コメントを書く
トラックバック - http://d.hatena.ne.jp/miura1729/20081026/1224984778
リンク元
- 22 http://www.rubyist.net/~kazu/samidare/
- 5 http://www.infoq.com/jp/news/2008/10/llvmruby-roundup-yarv2llvm
- 3 http://d.hatena.ne.jp/keyword/コメント
- 2 http://d.hatena.ne.jp/keyword/型推論
- 2 http://d.hatena.ne.jp/keywordmobile/LLVM
- 2 http://search.minakoe.jp/rsss/rsss.asp?qry=domain:hatena&multi=1
- 2 http://www.google.co.jp/search?hl=ja&client=firefox-a&rls=org.mozilla:ja:official&hs=2yz&q=RFC1213&btnG=検索&lr=lang_ja
- 2 http://www.google.co.jp/search?hl=ja&q=jemalloc+chunk&lr=lang_ja
- 2 http://www.google.co.jp/search?q=データフロー解析&lr=lang_ja&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:ja:official&client=firefox-a
- 1 http://209.85.175.104/search?q=cache:NO3yeSJqoNUJ:d.hatena.ne.jp/miura1729/20080302/1204443134+ruby+tk+アニメーション&hl=ja&ct=clnk&cd=2&gl=jp