# HG changeset patch # User Takahiro SHIMIZU # Date 1541514163 -32400 # Node ID 8580ad6c50dd87bd5a58c3c788b3b7fddc24932e # Parent 56f4ac0231eea224123c884a70db9500e972ac45 tweak .tex and bib diff -r 56f4ac0231ee -r 8580ad6c50dd Paper/anatofuz.tex --- a/Paper/anatofuz.tex Tue Nov 06 22:37:59 2018 +0900 +++ b/Paper/anatofuz.tex Tue Nov 06 23:22:43 2018 +0900 @@ -144,6 +144,7 @@ まず第1のものがPerl6,もしくはNQPをMoarVM,JVMのバイトコードに変換するNQPコンパイラである. 次にそのNQPが出力したバイトコードをネイティブコードに変換するVMの2種類である. このVMは現在MoarVM,JavaVM,Javascript,GraalVMを選択可能である. +Rakudo及びNQP projectではこのNQPコンパイラの部分をフロントエンド,VMの部分をバックエンド\cite{rani1}と呼称している. NQPで主に書かれたPerl6のことをRakudoと呼ぶ. Perl6はNQP以外にもPerl6独自の一種のシンタックスシュガーの様な物を持っており,これはNQPコンパイラ側で処理を行う. @@ -173,6 +174,8 @@ NQPはNQP自身でBootstrappingされている為,Rakudo Perl6のbuild時にはNQPの実行環境として要したVM,それに基づいてbuildしたNQPがそれぞれ必要となる. 言語的な特徴としてはPerl5とは違いアトミックに演算を行う事が可能なatom演算子や,すべてがオブジェクトであるオブジェクト指向言語としての進化も見られる. +またPerl6は漸進的型付け言語である. +従来のPerlの様に変数に代入する対象の型や文脈に応じて型を変更する動的型言語としての側面を持ちつつ独自に定義した型を始めとする様々な型に静的に変数の型を設定する事が可能である. \subsection{現在のPerl6} Perl6の言語仕様\cite{perl6design}とその時点での実装状況を纏めた公式ドキュメント\cite{perl6doc}は分離している. @@ -182,6 +185,12 @@ \section{CbCによるMoarVM} この章では改良を行ったPerl6処理系であるMoarVMについて述べる. +\subsection{方針} +MoarVMそのものをCbCで書き換えることも考えられるがMoarVM自体既に巨大なプロジェクトである為すべてを書き換える事は困難である. +その為まず比較的CbCで書き換えることが容易な箇所を修正する. +前章までに述べた通りCbCのCodeSegmentはコンパイラの基本ブロックに該当する. +従ってMoarVMにおける基本ブロックの箇所をCodeSegmentに書き換える事が可能である. +MoarVMにおける基本ブロックはインタプリタが実行するバイトコードごとの処理に該当する. \subsection{CbCコンパイラによるバグ} \section{CbCを用いる事についての評価} diff -r 56f4ac0231ee -r 8580ad6c50dd Paper/reference.bib --- a/Paper/reference.bib Tue Nov 06 22:37:59 2018 +0900 +++ b/Paper/reference.bib Tue Nov 06 23:22:43 2018 +0900 @@ -47,3 +47,13 @@ journal = "琉球大学工学部情報工学科平成27年度学位論文(修士)", year = 2015 } + +@misc{rani, + title = {Rakudo and NQP internals}, + howpublished = {\url{http://edumentab.github.io/rakudo-and-nqp-internals-course/}}, +} + +@misc{rani1, + title = {Rakudo and NQP internals - day1}, + howpublished = {\url{http://edumentab.github.io/rakudo-and-nqp-internals-course/slides-day1.pdf}}, +}