yhara.jp

Recent Posts

RubyKaigiで発表しました

2017-09-20
Tech

RubyKaigi 2017 Hiroshimaで発表しました。

スライドは英語ですが、話す内容を日本語でメモしたものがあります。

CFP応募時点では着地点を決めてなかったので大変だった。特にwasmでは実行速度そのものは改善しない1のだと気づいたあと、どうしようかなと思ったけど、RubyとWebAssemblyの接点について検討するという話にした。

要点だけもう一度書いておくと:

  • 現時点ではC/C++/Rustしかwasmにできないので、考えられるのはOpal + Cみたいな構成。このときC側の規模が小さいと、JSに移植したらいいじゃん、という話になる。ので、wasmの価値が出るのは:
    • C側が大きいとき
    • C側が複雑すぎて移植できないとき
    • C側が頻繁に変更されるとき
  • 将来的にはRubyをwasmにできるのかな?と思ったけど、これは実は簡単ではない
    1. Rubyの動的性(eval, define_method)
    2. 動的型言語を静的型言語にコンパイルするのが困難(これが一番大きい)
    3. ランタイムを移植しないといけない
    4. wasmがGCをまだサポートしていない2
  • そもそもRubyがwasmになったとしても、できることは「Rubyがブラウザで動く」という話なので、Opalを使うのと別に変わらないはず3
    • 未来を待つ必要はないので、Opalを使おう

細かい議論はスライドを見てほしい。何年後かにRubyをwasmにしようという勇者が現れたときに役立つといいなと思っている。


  1. 改善しない、というと多少言いすぎで、今回は対象が小さかったので改善しなかった 

  2. Ruby処理系全体をwasmにするような形なら関係ない? 

  3. 一応C拡張が動く可能性があるという違いはある。あとはStringのmutabilityみたいな微妙な非互換が解消されるかも 

More posts

Posts

(more...)

Articles

(more...)

Category

Ads

About

About the author