Mercurial > hg > Papers > 2019 > anatofuz-thesis
diff paper/chapter3.tex @ 82:7e50d0abefba
remove ,...
author | anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Mon, 18 Feb 2019 21:10:04 +0900 |
parents | 0d4418a76093 |
children | e8f9e4559082 |
line wrap: on
line diff
--- a/paper/chapter3.tex Mon Feb 18 20:51:30 2019 +0900 +++ b/paper/chapter3.tex Mon Feb 18 21:10:04 2019 +0900 @@ -28,7 +28,7 @@ \section{Rakudo} RakudoとはNQPによって記述され、 MoarVM、 JVM上で動作するPerl6の実装である。 -NQPとはNotQuitPerlの略であり、 Perl6のサブセットである。 +NQPとはNotQuitPerlの略でありPerl6のサブセットである。 RakudoがPerl6のコンパイラかつインタプリタとして機能する。 Rakudoの構成を図\ref{fig:perl6nqp}に示す。 @@ -49,7 +49,7 @@ MoarMVそのものはPerl6やNQPプログラムを直接は評価する事が出来ない。 従って、 NQP及びPerl6で書かれているRakudoをソースコードからビルドする際は、 予めNQPインタプリタであるnqpをビルドする必要が存在する。 Rakudoのビルド時にはこのnqpと、 nqpが動作するVMを設定として与える必要がある。 -この両者を指定しない場合、 ビルド時に動的にNQP、 MoarVMをソースコードをダウンロードし、 ビルドを行う。 +この両者を指定しない場合、 ビルド時に動的にNQP、 MoarVMをソースコードをダウンロードしビルドを行う。 実際にNQPで記述されたRakudoの実装の一部をソースコード\ref{nqp_on_rakud}に示す。 \lstinputlisting[frame=lrbt, label=nqp_on_rakud, caption=Rakudoの実装の一部]{./codes/src_main.nqp} @@ -65,12 +65,12 @@ MoarVM自体の改良は現在も行われているが、 開発者の多くは新機能の実装などを中心に行っている。 速度上昇を目指したプロジェクトも存在はするが、 介入する余地があると考えられる。 -また、 内部ではLuaJitというJITコンパイル用のライブラリを利用しているが、 JITに対して開発者チームの力が注がれていない。 +また内部ではLuaJitというJITコンパイル用のライブラリを利用しているが、 JITに対して開発者チームの力が注がれていない。 その為、 本研究ではJITや速度上昇を最終的な目標として考え、 速度上昇までに必要なモジュール化などの実装を行う。 \section{NQP} NQPとはRakudoにおけるPerl6の実装に利用されているプログラミング言語である。 -NQP自体は、 Perl6のサブセットとして開発されている。 +NQP自体はPerl6のサブセットとして開発されている。 歴史的にはPerl6の主力実装がParrotであった際に開発され、 現在のRakudoに引き継がれている。 RakudoにおけるNQPは、 Parrot依存であった実装が取り払われている。 @@ -90,15 +90,16 @@ MoarVMを利用する場合、 MoarVMの実行バイナリであるmoarに対して、 ライブラリパスなどを予め用意したNQPインタプリタのバイトコードに設定する。 -moarの起動時の設定は、 コマンドライン引数のオプションで与える事が可能である。 +moarの起動時の設定はコマンドライン引数のオプションで与える事が可能である。 その為、 既に存在しているMoarVMバイトコードで記述されたNQPのインプリタファイルを、 適切にオプションで指定し、moarを実行することでNQPのインタプリタが起動する。 NQPのビルドフローの一部を図\ref{fig:nqp_stage0_to_1}に示す。 -NQPのビルドには、 このNQPインタプリタをまず利用し、 NQP自体のソースコードを入力して与え、 ターゲットとなるVMのバイトコードを生成する。 +NQPのビルドには、 このNQPインタプリタをまず利用し、 NQP自体のソースコードを入力して与る。 +この際に出力として、ターゲットとなるVMのバイトコードを生成する。 既に用意されている、 ターゲットのVMのバイトコード化しているNQPインタプリタの状態を Stage0 と呼ぶ。 -Stage0を利用し、NQPソースコードからビルドしたNQPインタプリタであるバイトコードを、 Stage1と呼ぶ。 +Stage0を利用しNQPソースコードからビルドしたNQPインタプリタであるバイトコードを、 Stage1と呼ぶ。 \begin{figure}[ht] \caption{NQP Stage1のビルドフロー}