changeset 2:fdb00b58c78c

1章修正
author e165727 <e165727@ie.u-ryukyu.ac.jp>
date Fri, 08 Nov 2019 13:51:06 +0900
parents 1923d7d99433
children 3926216e699f
files Paper/code/eval.p6 Paper/koo.aux Paper/koo.log Paper/koo.pdf Paper/koo.synctex.gz Paper/koo.tex
diffstat 6 files changed, 125 insertions(+), 88 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/code/eval.p6	Fri Nov 08 13:51:06 2019 +0900
@@ -0,0 +1,3 @@
+use MONKEY-SEE-NO-EVAL; 
+ 
+EVAL "say { 5 + 5 }";   # OUTPUT: 10
--- a/Paper/koo.aux	Tue Nov 05 15:46:34 2019 +0900
+++ b/Paper/koo.aux	Fri Nov 08 13:51:06 2019 +0900
@@ -1,26 +1,34 @@
 \relax 
 \newlabel{ipsj@firstpage}{{}{1}}
-\@writefile{toc}{\contentsline {section}{\numberline {1}\hskip 1zw{スクリプト言語の高速実行}}{1}}
-\@writefile{toc}{\contentsline {section}{\numberline {2}\hskip 1zw{Raku}}{1}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {2.1}{Rakuの構想}}{1}}
+\@writefile{toc}{\contentsline {section}{\numberline {1}\hskip 1zw{Perl6 の起動時間の改善}}{1}}
+\@writefile{toc}{\contentsline {section}{\numberline {2}\hskip 1zw{Perl6}}{1}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {2.1}{Perl6 の構想}}{1}}
 \providecommand*\caption@xref[2]{\@setref\relax\@undefined{#1}}
 \newlabel{fig:perl6cbcinter}{{1}{2}}
 \@writefile{toc}{\contentsline {subsection}{\numberline {2.2}{MoarVM}}{2}}
 \@writefile{toc}{\contentsline {subsection}{\numberline {2.3}{NQP}}{2}}
-\newlabel{fig:nqpbuild}{{2}{3}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {2.4}{なぜRakuは遅いのか}}{3}}
-\@writefile{toc}{\contentsline {section}{\numberline {3}\hskip 1zw{Abyssサーバー}}{3}}
-\newlabel{fig:perl6cbcinter}{{3}{3}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {2.4}{EVALFILEとMONKEY-SEE-NO-EVAL}}{3}}
 \newlabel{codeseg}{{1}{3}}
-\@writefile{lol}{\contentsline {lstlisting}{\numberline {1}Abyssサーバーのsource code}{3}}
+\@writefile{lol}{\contentsline {lstlisting}{\numberline {1}evalのサンプルコード}{3}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {2.5}{なぜ Perl6 は遅いのか}}{3}}
+\@writefile{toc}{\contentsline {section}{\numberline {3}\hskip 1zw{Microsoft CLR}}{3}}
+\@writefile{toc}{\contentsline {section}{\numberline {4}\hskip 1zw{Perl6によるAbyssの実装}}{3}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {4.1}{Abyssサーバーの構成}}{3}}
+\newlabel{fig:nqpbuild}{{2}{4}}
+\newlabel{fig:perl6cbcinter}{{3}{4}}
+\newlabel{codeseg}{{2}{4}}
+\@writefile{lol}{\contentsline {lstlisting}{\numberline {2}Abyssサーバーのsource code}{4}}
+\newlabel{codeseg}{{3}{4}}
+\@writefile{lol}{\contentsline {lstlisting}{\numberline {3}クライアント側のsource code}{4}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {4.2}{実行時間の比較}}{4}}
+\@writefile{toc}{\contentsline {section}{\numberline {5}\hskip 1zw{今後の課題}}{4}}
 \bibcite{キー1}{1}
 \bibcite{キー2}{2}
 \bibcite{キー3}{3}
 \bibcite{latex}{4}
+\bibcite{roast}{5}
+\bibcite{nqp}{6}
 \citation{*}
 \bibstyle{ipsjsort}
 \bibdata{reference}
-\newlabel{codeseg}{{2}{4}}
-\@writefile{lol}{\contentsline {lstlisting}{\numberline {2}クライアント側のsource code}{4}}
-\@writefile{toc}{\contentsline {section}{\numberline {4}\hskip 1zw{まとめ}}{4}}
-\newlabel{ipsj@lastpage}{{}{4}}
+\newlabel{ipsj@lastpage}{{}{5}}
--- a/Paper/koo.log	Tue Nov 05 15:46:34 2019 +0900
+++ b/Paper/koo.log	Fri Nov 08 13:51:06 2019 +0900
@@ -1,4 +1,4 @@
-This is e-pTeX, Version 3.14159265-p3.6-141210-2.6 (utf8.euc) (TeX Live 2015) (preloaded format=platex 2016.4.14)  5 NOV 2019 15:42
+This is e-pTeX, Version 3.14159265-p3.6-141210-2.6 (utf8.euc) (TeX Live 2015) (preloaded format=platex 2016.4.14)  8 NOV 2019 13:36
 entering extended mode
  restricted \write18 enabled.
  file:line:error style messages enabled.
@@ -216,6 +216,9 @@
 
 LaTeX Warning: Label `codeseg' multiply defined.
 
+
+LaTeX Warning: Label `codeseg' multiply defined.
+
 )
 \openout1 = `koo.aux'.
 
@@ -254,60 +257,67 @@
 LaTeX Font Info:    Font shape `JY1/mc/bx/n' in size <8.8711> not available
 (Font)              Font shape `JY1/gt/m/n' tried instead on input line 48.
 LaTeX Font Info:    Font shape `JT1/gt/bx/n' in size <19.2207> not available
-(Font)              Font shape `JT1/gt/m/n' tried instead on input line 68.
+(Font)              Font shape `JT1/gt/m/n' tried instead on input line 61.
 LaTeX Font Info:    Font shape `JY1/gt/bx/n' in size <19.2207> not available
-(Font)              Font shape `JY1/gt/m/n' tried instead on input line 68.
-LaTeX Font Info:    Calculating math sizes for size <9.61035> on input line 68.
+(Font)              Font shape `JY1/gt/m/n' tried instead on input line 61.
+LaTeX Font Info:    Calculating math sizes for size <9.61035> on input line 61.
 
-LaTeX Font Info:    Calculating math sizes for size <11.82813> on input line 68
+LaTeX Font Info:    Calculating math sizes for size <11.82813> on input line 61
 .
-LaTeX Font Info:    Calculating math sizes for size <8.13184> on input line 68.
+LaTeX Font Info:    Calculating math sizes for size <8.13184> on input line 61.
 
 LaTeX Font Info:    Font shape `JT1/mc/bx/n' in size <11.82813> not available
-(Font)              Font shape `JT1/gt/m/n' tried instead on input line 71.
+(Font)              Font shape `JT1/gt/m/n' tried instead on input line 64.
 LaTeX Font Info:    Font shape `JY1/mc/bx/n' in size <11.82813> not available
-(Font)              Font shape `JY1/gt/m/n' tried instead on input line 71.
+(Font)              Font shape `JY1/gt/m/n' tried instead on input line 64.
 LaTeX Font Info:    Font shape `JT1/mc/bx/n' in size <9.61035> not available
-(Font)              Font shape `JT1/gt/m/n' tried instead on input line 82.
+(Font)              Font shape `JT1/gt/m/n' tried instead on input line 84.
 LaTeX Font Info:    Font shape `JY1/mc/bx/n' in size <9.61035> not available
-(Font)              Font shape `JY1/gt/m/n' tried instead on input line 82.
+(Font)              Font shape `JY1/gt/m/n' tried instead on input line 84.
 [1
 
 
 ]
 File: images/Rakudo.pdf Graphic file (type pdf)
- <images/Rakudo.pdf> Excluding 'comment' comment.
-Excluding 'comment' comment. [2]
+ <images/Rakudo.pdf> Excluding 'comment' comment. [2]
 File: fig/tgraph.pdf Graphic file (type pdf)
  <fig/tgraph.pdf>
+Underfull \hbox (badness 10000) in paragraph at lines 162--162
+[]\OT1/cmr/bx/n/9.61035 EVALFILE \JY1/gt/m/n/9.61035 と \OT1/cmr/bx/n/9.61035 M
+ONKEY-SEE-NO-
+ []
+
+(./code/eval.p6) [3]
 File: images/abyss.pdf Graphic file (type pdf)
  <images/abyss.pdf>
-Overfull \hbox (21.64644pt too wide) in paragraph at lines 181--182
+Overfull \hbox (21.64644pt too wide) in paragraph at lines 193--194
  [] 
  []
 
-(./code/abyss.p6 [3]
+(./code/abyss.p6
 Overfull \hbox (4.58815pt too wide) in paragraph at lines 6--7
 [][] 
  []
 
-) (./code/client.p6)
-LaTeX Font Info:    Calculating math sizes for size <8.8711> on input line 213.
+) (./code/client.p6) [4]
+LaTeX Font Info:    Calculating math sizes for size <8.8711> on input line 227.
 
 
 No file koo.bbl.
-[4] (./koo.aux)
+[5
+
+] (./koo.aux)
 
 LaTeX Warning: There were multiply-defined labels.
 
  ) 
 Here is how much of TeX's memory you used:
- 4103 strings out of 493777
- 61817 string characters out of 6151334
- 218664 words of memory out of 5000000
- 7562 multiletter control sequences out of 15000+600000
+ 4110 strings out of 493777
+ 61881 string characters out of 6151334
+ 181664 words of memory out of 5000000
+ 7566 multiletter control sequences out of 15000+600000
  28364 words of font info for 125 fonts, out of 8000000 for 9000
  929 hyphenation exceptions out of 8191
- 36i,7n,49p,590b,1657s stack positions out of 5000i,500n,10000p,200000b,80000s
+ 36i,7n,49p,639b,1446s stack positions out of 5000i,500n,10000p,200000b,80000s
 
-Output written on koo.dvi (4 pages, 23220 bytes).
+Output written on koo.dvi (5 pages, 26752 bytes).
Binary file Paper/koo.pdf has changed
Binary file Paper/koo.synctex.gz has changed
--- a/Paper/koo.tex	Tue Nov 05 15:46:34 2019 +0900
+++ b/Paper/koo.tex	Fri Nov 08 13:51:06 2019 +0900
@@ -46,55 +46,54 @@
 
 %概要
 \begin{abstract}
+Perl6 の実装の一つであるRakudoは, Byte code である MoarVM と, その上で動作する Perl6 のsubsetである nqp (Not Quite Perl) 上に構成されている,
 
-スクリプト言語であるPerl5の後継言語としてPerl6が現在開発されている.
-Perl6は設計と実装が区分されており様々な処理系が開発されている.
-現在主流なPerl6はRakudoと言われるプロジェクトである.
-RakudoではPerl6自体をNQP(NotQuitPerl)と言われるPerl6のサブセットで記述し, NQPをVMが解釈するという処理の流れになっている.
-このVMは任意のVMが選択できるようになっており,主に利用されているVMにCで書かれたMoarVMが存在する.
-MoarVMはJITコンパイルなどをサポートしているが, 全体的な起動時間及び処理速度がPerl5と比較し非常に低速である.
-この問題を解決するためにContinuation based C (CbC)という言語を一部用いてMoarVMの書き換えを行う.
-CbCはCよりも細かな単位で記述が可能である為, 言語処理系の実装に適していると考えられる.
-CbCに関する今までの研究においては, 言語処理系にCbCを利用した事例が少ない.
-その為, 本稿ではCbCを言語処理系に用いた場合の利点やデバッグ手法などについても述べる.
+現状の Perl6 の実行は Perl6 で記述されたコンパイラを load して JIT しながら実行すること自体に時間がかかっている.
+そこで, Perl6 をサーバーとして動作させ, 実行するファイルをサーバーに投げて実行する方法を実装してみた. これにより高速化を実現できた. 
 
-
+本論文では, サーバーで script 言語を実行する場合の利点と欠点について考察する.
 \end{abstract}
 
 \begin{jkeyword}
-プログラミング言語,  コンパイラ, CbC, Perl6, MoarVM, Raku
+プログラミング言語, Perl6, サーバー, Raku 
 \end{jkeyword}
 
 \maketitle
 
 % Body %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\section{スクリプト言語の高速実行}
-スクリプト言語Perl6は任意のVMが選択できるようになっており,主に利用されているVMにCで書かれたMoarVMが存在する.
-MoarVMはJITコンパイルなどをサポートしているが, 全体的な起動時間及び処理速度がPerl5やPython,Rubyなどの主要なスクリプト言語と比較し非常に低速である.
-この問題を解決するために, Perl6プログラムのサーバーを用いた実行手法の提案を行う.
-ここでいうサーバーとは転送したスクリプトを実行する環境のことである.
+\section{Perl6 の起動時間の改善}
+現在開発の進んでいる言語に Perl6 がある.
+スクリプト言語 Perl6 は任意の VM が選択できるようになっており, 主に利用されている VM に C で書かれた MoarVM が存在する. 
+MoarVM は JIT コンパイルなどをサポートしているが, 全体的な起動時間及び処理速度が Perl5 や Python , Ruby などの他のスクリプト言語と比較し非常に低速である.
+その為, 現在日本国内では Perl6 は実務としてあまりない.
 
-またサーバーでは,サーバーに投げられたRakuをコンパイラで実行する際に,そのスクリプトが次に実行するスクリプトに影響を与えないことを保証する必要がある.
-この問題を解決するために,サーバーのコンテナ化を行う.
-\section{Raku}
-この章では現在までのRakuの遍歴及びRakuの言語的な特徴について記載する.
+Perl6 の持つ言語機能や型システムは非常に柔軟かつ強力であるため, 実用的な処理速度に達すれば, 言語の利用件数が向上することが期待される.
+Perl6 は MoarVM に基づくJIT コンパイラを持っており,コンパイルされた結果はプロセッサが実行可能な機械語に相当する
+
+しかし現状の Perl6 は起動時間が非常に遅いことが問題である.
+
+この問題を解決するために, 実行するファイル名をサーバーに転送し,サーバー上であらかじめ立ち上げておいたコンパイラでコンパイルを行う手法を提案する.
+
+またサーバーでは,サーバーに投げられた Raku をコンパイラで実行する際に,そのスクリプトが次に実行するスクリプトに影響を与えないことを保証する必要がある.
+この問題を解決するために,本研究ではサーバーのコンテナ化を行う.
+研究をするにあたり得られた, サーバー上でscript言語を実行する場合の利点と欠点について述べ, 今後の展望について記載する.
 
-\subsection{Rakuの構想}
-Perl6 は 2002 年に LarryWall が Perl を置き換え
-る言語として設計を開始した.Perl5 の言語的な問題点であるオブジェクト指向機能の強力なサポー トなどを取り入れた言語として設計された.Perl5 は設計と実装が同一であり, Larry らによって書かれた C 実装のみだった.Perl6 は設計と実装が分離している.言語的な特徴としては, 独自に Perl6 の文法を拡張可能な Grammar, Perl5 と比較した 場合のオブジェクト指向言語としての進化も見られる.また Perl6 は漸進的型付け言語である.従来の Perl の様に変数に代入する対象の型や, 文脈に応じて型を変更する動的型言語としての側面を 持ちつつ, 独自に定義した型を始めとする様々な 型に, 静的に変数の型を設定する事が可能である.
-Perl6 は言語仕様及び処理実装が Perl5 と大幅に異なっており, 言語的な互換性が存在しない.従って現在では Perl6 と Perl5 は別言語としての開発方針になっている.Perl6 は現在有力な処理系である Rakudo から名前を取り Raku という別名がつけられている.
+\section{Perl6}
+この章では現在までの Perl6 の遍歴及び Perl6 の言語的な特徴について記載する.
 
+\subsection{Perl6 の構想}
+Perl6 は 2002 年に LarryWall が Perl を置き換える言語として設計を開始した. Perl5 の言語的な問題点であるオブジェクト指向機能の強力なサポートなどを取り入れた言語として設計された. Perl5 は設計と実装が同一であり, Larry らによって書かれた C 実装のみだった. Perl6 は設計と実装が分離している. 言語的な特徴としては, 独自に Perl6 の文法を拡張可能な Grammar, Perl5 と比較した場合のオブジェクト指向言語としての進化も見られる. また Perl6 は漸進的型付け言語である. 従来の Perl の様に変数に代入する対象の型や, 文脈に応じて型を変更する動的型言語としての側面を持ちつつ, 独自に定義した型を始めとする様々な型に, 静的に変数の型を設定する事が可能である.
+Perl6 は言語仕様及び処理実装が Perl5 と大幅に異なっており, 言語的な互換性が存在しない. 従って現在では Perl6 と Perl5 は別言語としての開発方針になっている. Perl6 は現在有力な処理系である Rakudo から名前を取り Raku という別名がつけられている.
 
-Rakuは元はPerl5の後継言語のPerl6として開発されていたが,現在は名称が変更されRakuとなっている.
-Rakuの現在の主流な実装はRakudoである.RakudoはMoarVM,とNQPと呼ばれるRakuのサブセット,NQPとRaku自身で記述されたRakuという構成である.
-MoarVMはNQPとByte Codeを解釈する.
+Raku の現在の主流な実装は Rakudo である. Rakudo は MoarVM, と NQP と呼ばれる Raku のサブセット, NQPと Raku 自身で記述された Raku という構成である.
+MoarVM は NQP と Byte Code を解釈する. 
+
+NQP とは Not Quite Perl の略で Raku のサブセットである. その為基本的な文法などは Raku に準拠しているが, 変数を束縛で宣言するなどの違いが見られる.
 
-NQP とは Not Quite Perl の略で Raku のサブセットである.その為基本的な文 法などは Raku に準拠しているが,変数を束縛で宣言する などの違いが見られる.
+この NQP で記述された Raku の事を Rakudo と呼ぶ.
+Rakudo は MoarVM の他に JVM , Javascript を動作環境として選択可能である.
 
-このNQPで記述されたRakuの事をRakudoと呼ぶ.
-RakudoはMoarVMの他にJVM,Javascriptを動作環境として選択可能である.
-
-Rakuの起動は,MoarVMを起動,nqpをロード,Rakudoをロードもしくはコンパイルし,その後JITしながら実行する.
+Raku の起動は, MoarVM を起動, NQP をロード, Rakudo をロードもしくはコンパイルし, その後 JIT しながら実行する.
 
 \begin{figure}[H]
      \begin{center}
@@ -106,19 +105,17 @@
 
 \subsection{MoarVM}
 
-\begin{comment}
-MoarVM は Raku に特化した VM である.C言語で実装されている. JITコンパイルなどが現在導入されているが,起動時間などが低速である問題がある. MoarVM 独自の ByteCode があり, NQP からこれを出力する機能などが存在している.
-\end{comment}
+MoarVM は Raku に特化した VM である. C 言語で実装されている. JIT コンパイルなどが現在導入されているが, 起動時間などが低速である問題がある. MoarVM 独自の ByteCode があり, NQP からこれを出力する機能などが存在している.
 
 \subsection{NQP}
 \begin{comment}
-NQPとはRakuのサブセットである.
-その為基本的な文法などはRakuに準拠しているが,変数を束縛で宣言するなどの違いが見られる.
+NQP とは Raku のサブセットである.
+その為基本的な文法などは Raku に準拠しているが,変数を束縛で宣言するなどの違いが見られる.
 
-NQPは最終的にはNQP自身でブートストラップする言語であるが,ビルドの最初にはすでに書かれたMoarvMByteCodeを必要とする.
-このMoarVMByteCodeの状態をStage0と言う.
-Rakuの一部はNQPを拡張したもので書かれている為,Rakudoを動作させる為にはMoarVMなどのVM,VMに対応させる様にビルドしたNQPがそれぞれ必要となる.
-NQPは与えられたStage0を使いStage1をビルドし,そのStage1を利用しStage2をビルドする事で生成できる.
+NQP は最終的には NQP 自身でブートストラップする言語であるが,ビルドの最初にはすでに書かれた MoarvM ByteCode を必要とする.
+この MoarVMByteCode の状態を Stage0 と言う.
+Raku の一部は NQP を拡張したもので書かれている為, Rakudo を動作させる為には MoarVM などの VM , VM に対応させる様にビルドした NQP がそれぞれ必要となる.
+NQP は与えられた Stage0 を使い Stage1 をビルドし, そのStage1 を利用し Stage2 をビルドする事で生成できる.
 \end{comment}
 
 RakudoにおけるNQPは現在MoarVM, JVM上で動作する.
@@ -137,13 +134,13 @@
 %NQPは6modelと呼ばれるオブジェクトモデルを採用としている.%が, これを構築する為に必要なNQPCORE,正規表現系のQRegex,MoarVMのModuleLoaderなどがMoarVMBytecodeで記述されている.これらMoarVMBytecodeの拡張子は.MoarVMである.
 %MoarVMに対してStage0のディレクトリにライブラリパスを設定し, nqp.MoarVMを実行させることでnqpの対話型環境が起動する.
 
-\begin{figure}[ht]
+\begin{figure*}[ht]
      \begin{center}
-     \includegraphics[width=70mm]{fig/tgraph.pdf}
+     \includegraphics[width=140mm]{fig/tgraph.pdf}
      \end{center}
      \caption{NQPのビルドフロー}
     \label{fig:nqpbuild}
-\end{figure}
+\end{figure*}
 
 NQPのビルドフローを図\ref{fig:nqpbuild}に示す.
 RakudoによるPerl6に処理系はNQPにおけるnqpと同様に, moarにライブラリパスなどを設定したperl6というシェルスクリプトである.
@@ -162,15 +159,30 @@
 %従ってyaccやlexと言ったPerl5の文字解析, 構文解析に利用していたプログラムは利用せず, NQP側で構文定義などを行っている.
 %NQPはNQP自身でBootstrappingされている為, Rakudo Perl6のbuild時にはNQPの実行環境として要したVM, それに基づいてbuildしたNQPがそれぞれ必要となる.
 
-\subsection{なぜRakuは遅いのか}
+\subsection{EVALFILEとMONKEY-SEE-NO-EVAL}
+Perl6にはEVALというものがある. 
+通常, 変数や埋め込みコードを含む文字列などの入力は, デフォルトでは無効ですが, EVALは文字列リテラルとして受け取ったものをプログラムとしてそのまま解釈し, オーバーライドできます.
+
+Perl6では, EVALは非常に危険な関数であるため通常時は使用できないようになっているが, 下記のようにMONKEY-SEE-NO-EVAL というpragmaを動作させることによって使用することができるようになる.
+\lstinputlisting[label=codeseg,  caption=evalのサンプルコード]{code/eval.p6}
+
+\subsection{なぜ Perl6 は遅いのか}
 通常Rubyのようなスクリプト言語ではまずrubyVMが起動し,その後スクリプトをByte code に変換して実行という手順を踏む.
-Rakudo はインタプリタの起動時間及び、 全体的な処理時間が他のスクリプト言語と比較して非常に低速である。
-これはRakudo自体がRakuで書かれているため,MoarVMを起動し,RakudoとNQP をコンパイルし,その後スクリプトのByte code変換というような手順で進むためである。
-またRakuは実行時の情報が必要であり,メソッドを実行する際にinvokeが走ることも遅い原因である.
+Rakudo はインタプリタの起動時間及び、 全体的な処理時間が他のスクリプト言語と比較して非常に低速である.
+これはRakudo自体がRakuで書かれているため, MoarVMを起動し, Rakudo と NQP をコンパイルし, その後スクリプトのByte code 変換というような手順で進むためである.
+また Raku は実行時の情報が必要であり, メソッドを実行する際に invoke が走ることも遅い原因である.
+
+\section{Microsoft CLR}
+.NET Framework には, 共通言語ランタイム(Common Language Runtime)と呼ばれるランタイム環境がある.
+.NET対応のソフトウェアは、様々なプログラミング言語で書かれたソースコードから, いったん共通中間言語 ( Common Intermediate Language )による形式に変換されて利用者のもとに配布される.
+CIL形式のプログラムを解釈し, コンピュータが直に実行可能な機械語によるプログラムに変換して実行するソフトウェアがCLRである.
 
 
-\section{Abyssサーバー}
-ここではAbyssサーバーについて説明する.AbyssサーバーはRakuで書かれている. クライアント側から投げられたRakuを実行するためのサーバーである.
+\section{Perl6によるAbyssの実装}
+ここではAbyssサーバーについて説明する.
+
+\subsection{Abyssサーバーの構成}
+AbyssサーバーはRakuで書かれている. クライアント側から投げられたRakuを実行するためのサーバーである.
 図1はAbyssサーバーを用いたスクリプト言語実行手順である. AbyssサーバーはユーザーがRakuを実行する際,クライアント側から転送されてきたファイルを事前に起動してあるサーバー側が処理し,その実行結果を返す構造となっている.
 
 この手法を用いることで,サーバー上で事前にRakudoを起動したRakudoを再利用し,投げられたRakuスクリプトの実行を行うためRakudoの起動時間を短縮できると推測できる.
@@ -195,8 +207,10 @@
 \lstinputlisting[label=codeseg,  caption=クライアント側のsource code]{code/client.p6}
 %通常、自分でプロセス立ち上げてPerl6を実行する際は,
 %\section{問題点}
+\subsection{実行時間の比較}
 
-\section{まとめ}
+
+\section{今後の課題}
 中間予稿までにPerl6スクリプトを投げて実行するサーバーの実装、および「自分でプロセス立ち上げてPerl6実行する手法」と「既にあるサーバーに投げてPerl6スクリプトを実行する手法」の差を測るために時間の計測を行った。
 
 今回実装したサーバーでは,別のスクリプトを実行する前にサーバーのコンテナ化をできていないので次回以降の課題とする.
@@ -207,7 +221,7 @@
 今回用いたRakuのEVALFILE自体にクライアント側に出力を返す実装追加することも今後の課題に挙げられる.
 
 \begin{acknowledgment}
-謝辞が必要であれば,ここに書く.
+謝辞が必要であれば,ここに書く. 
 \end{acknowledgment}
 
 \begin{thebibliography}{9}
@@ -215,6 +229,8 @@
   \bibitem{キー2} 清水隆博, 河野真治. CbC を用いた Perl6 処理系. 琉球大学工学部情報工学科平成 30 年度学位論文 (学士), 2018.
   \bibitem{キー3}  Perl6 Documentation\\{https://docs.perl6.org} (2019/10/22 アクセス)
   \bibitem{latex} 奥村晴彦, 黒木裕介: \textbf{LaTeX2e美文書作成入門}. 技術評論社, 2013.
+  \bibitem{roast}The Official Raku Test Suite \\{https://github.com/perl6/roast/}
+  \bibitem{nqp}NQP - Not Quite Perl \\{https://github.com/perl6/nqp}
 \end{thebibliography}
 
 \nocite{*}