Saturday, 2 December 2017

nqp

というわけで、朝から 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: