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/