Mercurial > hg > Events > OSC2019
diff slide.md @ 2:41f44d102cf9
update
author | Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Tue, 16 Apr 2019 18:59:34 +0900 |
parents | b135f074e78c |
children | e43f47edd11a |
line wrap: on
line diff
--- a/slide.md Mon Apr 15 17:59:44 2019 +0900 +++ b/slide.md Tue Apr 16 18:59:34 2019 +0900 @@ -14,7 +14,9 @@ - 仕様と実装が分離しており, 現在はテストが仕様となっている - 実装は複数存在しているが,現在主流な実装はRakudoとなっている - 言語的にはスクリプト言語であり, 漸進的型付き言語となっている +- MoarVM, JVMで動作する +<img src="2000px-Camelia.svg.png" alt="" style="width: 31%; height: auto;"> !SLIDE ## Perl6のソースコード概要 @@ -52,4 +54,24 @@ !SLIDE ## Perl6の処理系の構成 -- Perl6の処理系は現在はRakudoと呼ばれる +- Perl6の処理系は現在はRakudoと呼ばれる(歴史上複数存在する) +- Rakudoは3つのレイヤーから構成されている + - Perl6インタプリタ + - Perl6インタプリタを記述するPerl6のサブセットNQP + - Perl6のバイトコードを解釈するMoarVM +- このうちPerl6インタプリタとNQPはNQP自身で記述されている +- MoarVMはC言語で記述されている + +!SLIDE +## Perl6とNQP + +- NQP(NotQuitPerl Perlっぽい別の言語)でRakudoを記述している +- NQPもNQPで記述されている為、 セルフビルド(自分自身で自分自身をコンパイルする)を行う +- NQPはPerl6の文法をベースにしているが、 制約がいくつか存在する + +!SLIDE +## バイトコード +- Rakudo/NQPはバイトコードにスクリプトを変換する +- バイトコードはMoarVMのドキュメントで制定されている +- バイトコード実行部分は、 命令に対応するバイト列を読み込み、 解釈し、 次の命令を読み取ることを繰り返す +