Schedule

joker1007

Repro株式会社チーフアーキテクト パーフェクトRuby・パーフェクトRails著者チームの一人。いくつかのOSSの開発・メンテをやっている。fluent-plugin-bigquery, rukawa, crono_trigger, tree-sitter-rbsなど。

Rustで作るTreeSitterパーサーのRubyバインディング

以前からrubygemをRustで実装することが出来ることをご存知の方は多いと思います。 最近はmagnusというライブラリで、C拡張を書いていた時に近いAPIでRust製のrubygemが実装できる様になっており、Bundlerが生成するスケルトンにも採用されています。 今回、それを利用してRustでTreeSitterパーサーのRubyバインディングを実装してみました。 TreeSitterを題材にしたのは、去年からのRuby Worldでのパーサーの盛り上がりに触発されてtree-sitter-rbsというRBSのパーサーを作成してみてTreeSitterに興味があったこと、そしてRustのライブラリがあったからです。 このトークでは、Rustでrubygemsを実装する方法と苦労しそうな点について解説し、実際に作ってみたTreeSitterのバイディングを用いて色々なソースコードをパースするデモを紹介するつもりです。