# RAグラント 2023 最終報告
## プロジェクトの目標
本プロジェクトはRuby開発者向けの手軽なプレイグラウンドを用意することで、Ruby開発における議論を活性化させることを目的とする。
また、GemをWebAssembly上で利用するための対応をストレッチゴールとしていた。
## 成果
<iframe src="https://drive.google.com/file/d/1kwOew3JrsDFALNqLJtjqceRs9ehI4osB/preview" width="640" height="480" allow="autoplay"></iframe>
- プレイグラウンドの実装およびGitHub上のrubyリポジトリとの連携が完了した。https://ruby.github.io/play-ruby にて成果物であるプレイグラウンドをホストしている。
- 開発者会議で一部の提案の議論に活用されている(らしい)
- Gemfileで指定されたGemをWebAssemblyバイナリにパッケージするツール [`rbwasm build` を開発した。](https://github.com/ruby/ruby.wasm/pull/358)(拡張ライブラリを含むGemに関してはシンプルなもののみに対応している)
- 本機能を使うことで[ruby-next](https://evilmartians.com/chronicles/first-steps-with-ruby-wasm-or-building-ruby-next-playground)や[Rails](https://twitter.com/palkan_tula/status/1758008374128697708)がブラウザ環境へ移植可能であることがコミュニティによって示された
- 拡張ライブラリを含むGemへの本格的な対応のため、動的リンクおよび拡張ライブラリのクロスコンパイル対応に着手した。
- CRuby本体とruby/rubyに含まれる拡張ライブラリをPICコンパイルするための対応は完了
- `.so`とCRuby本体を1バイナリにリンクするツールのAsyncify対応が完了
https://github.com/bytecodealliance/wasm-tools/pull/1431
- mkmf自体へのクロスコンパイル対応は現在進行中
https://bugs.ruby-lang.org/issues/20345
## 今後の方向性
- プレイグラウンドの作り込みとしてファイルエクスプローラーやGem読み込み対応を考えている
- また`gem install`とmkmfのクロスコンパイル対応のインテグレーションを進めていく予定である。