というわけで、朝から Rakudo 読み会なわけですが、
まぁ、Perl6 が何ってところから
という感じで。下位言語の nqp から動かしてみるわけですが、
say(1) を say (1) とすると動かない
なるほど〜 いろいろググって、
http://edumentab.github.io/rakudo-and-nqp-internals-course/
これが割と良いので、今日は、だいたいこれを読んでました。最初は、
nqp (Not quite Perl) の説明
で、それから、
QAST ( nqp の抽象構文木)
そして、Grammer 、Action、byte code、VM と一通り。VMの実装はあんまり書いてなかったな。
pypy の時は結構苦労したんですが、Rakudo は、このslide のおかげでだいぶわかりやすい。もっとも、まだ、Rakudo を debugger から動かすのには成功してないのですが。
Grammer が class と同じレベルで built in なので、これまで見たコンパイラの中では一番奇麗かも。
コンパイラ自体は速いんですが、JVM/MoarVM 経由なのが起動が遅い原因かな。それで、JavaScript Engine に乗り換えようとしているのかも知れないな。
明日は、実際のコードと、VMの中身に突入してみる予定です。
No comments:
Post a Comment