fukuoka.rb#202 RustでつくるRuby
by
monochrome
×
Copy
Open
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Slide 1
Slide 1 text
RustでつくるRuby処理系 monochrome twitter: @s_isshiki1969 GitHub: https://github.com/sisshiki1969 Slack: プログラミング言語処理系が好きな人の集まり https://prog-lang-sys-ja-slack.github.io/wiki/
Slide 2
Slide 2 text
ruruby (https://github.com/sisshiki1969/ruruby) ● Rust製のRuby実装 ● 仮想マシンインタプリタ ● 他の既存実装・仮想マシンへの依存なし ● 3万行ぐらい
Slide 3
Slide 3 text
モチベーション 1. Rustの勉強がしたい 2. 何か言語処理系を作りたい 3. Ruby面白そう
Slide 4
Slide 4 text
benchmark
Slide 5
Slide 5 text
開発のモチベーションをいかに維持するか 1. おもちゃじゃないプログラムを動かしたい 2. 「正しく動いている」ことがわかるもの 3. 実行速度を測定できるもの 4. 極力外部ライブラリに依存しないもの
Slide 6
Slide 6 text
Optcarrot ● Rubyで書かれたファミコンのエミュレータ ● 「Ruby3x3」のための準公式ベンチマーク ● ベンチマーク用の速度測定モードがある ● 生成した画像の正しさをチェックサムで検証できる ● (ベンチマークモードでは)外部ライブラリを使用しない
Slide 7
Slide 7 text
optcarrot benchmark
Slide 8
Slide 8 text
No content
Slide 9
Slide 9 text
技術的に難しかった点 ● ガベージコレクタ →自作した。 ● Fiber →アセンブリで実装 (x86-64/linux, aarch64/MacOS)
Slide 10
Slide 10 text
言語処理系自作は ● モチベーションを維持する工夫が大切 ● 対象言語の実行モデルの勉強になる ● 楽しいので、みんなで作ろう Slack: プログラミング言語処理系が好きな人の集まり https://prog-lang-sys-ja-slack.github.io/wiki/