概要 原著者の許諾を得て翻訳・公開いたします。 英語記事: Tom Black — Ruby on WebAssembly 原文公開日: 2018/04/28 著者: Tom Black 日本語タイトルは内容に即したものにしました。 要約: WebAssemblyがやってきました!やってみたい方は本記事のwasm gemをお試しください。 2018年の世界へようこそ。最も興奮を呼び起こすイノベーションがコンパイラ界隈にも巻き起こりつつあります。ARやVRや機械学習など先端を行く話題はいくつもありますが、ソースコードを機械が実際に理解できる形に変換する役割を担うコンパイラの歴史に比べればまだまだ新顔です。コンパイラの復権は主にLLVMのおかげです(LLVMはモジュール形式のコンパイラインフラストラクチャプロジェクトです)。LLVMの重要性については、Wiredの2013年の記事に的確な指摘が
LLRBというRuby向けのメソッドJITコンパイラを書いている github.com RubyKaigi 2015の最後のキーノートで@evanphxが「LLVMでCRubyのコードをインライン化するメソッドJITを実装したら速いんじゃね」みたいな発表をしていたのを覚えているだろうか。 LLRBというのはまさにそれを実装しているプロジェクトであり、少なくとも現時点で「LLVMでCRubyのコードをインライン化するメソッドJIT」と言える状態まで実装でき、ものによっては効果が出る状態になったので公開した。 なんで書いてるの 言語を自分で実装するとその言語に関する理解が大分深まる、というのをHamlの実装とかCコンパイラとかで体験していて、僕が一番好きな言語はRubyなのでRubyでもそれをやっておきたい、というのがあった。また、Rubyは遅いと言われがちだが、どこに改善可能な点が眠っている
先月のRubyConfのLTでA PoC-ish Trick: LLVM IR Generation with Rubyという題で発表してきた小ネタです。 TL;DR RubyのコードをJuliaに変換するJulializerというTranspilerを作った Juliaではcode_llvmやcode_native等の組み込み関数でLLVM IRやアセンブリコードを簡単に吐き出せる 1と2から、Rubyのコードを書くとLLVM IRやアセンブリコードを簡単に吐き出せる Disclaimer JulializerはFixnum, Floatなどごく一部のClassのみサポートしているに過ぎないので、Rubyの機能のごくごく一部しか変換できません Demo 最も単純な例として、Rubyの2+3(整数同士の加算)というプログラムを変換してみます。LLVM IRの結果として作成されている関数ju
A Lightning Talk at RubyConf 2016
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く