Mercurial > hg > Papers > 2020 > koo-thesis
changeset 12:0320a82ac2e2
update chapter1
author | e165727 <e165727@ie.u-ryukyu.ac.jp> |
---|---|
date | Sat, 15 Feb 2020 16:41:11 +0900 |
parents | c3768c16a27a |
children | 521a4e1d5af6 |
files | Paper/chapter1.tex Paper/chapter2.tex Paper/chapter3.tex Paper/chapter5.tex Paper/main.pdf |
diffstat | 5 files changed, 14 insertions(+), 17 deletions(-) [+] |
line wrap: on
line diff
--- a/Paper/chapter1.tex Sat Feb 15 06:36:16 2020 +0900 +++ b/Paper/chapter1.tex Sat Feb 15 16:41:11 2020 +0900 @@ -7,21 +7,21 @@ \section{背景と目的} %\section{ Perl6 の起動時間の改善} -現在開発の進んでいる言語に Perl6 がある. -スクリプト言語 Perl6 は任意の VM が選択できるようになっており, 主に利用されている VM に C で書かれた MoarVM が存在する. +現在開発の進んでいる言語に Raku がある. +スクリプト言語 Raku は任意の VM が選択できるようになっており, 主に利用されている VM に C で書かれた MoarVM が存在する. MoarVM は JIT コンパイルなどをサポートしているが, 全体的な起動時間及び処理速度が Perl5 や Python , Ruby などの他のスクリプト言語と比較し非常に低速である. -その為, 現在日本国内では Perl6 は実務としてあまり使われていない. +その為, 現在日本国内では Raku は実務としてあまり使われていない. -Perl6 の持つ言語機能や型システムは非常に柔軟かつ強力であるため, 実用的な処理速度に達すれば, 言語の利用件数が向上することが期待される. -Perl6 は MoarVM に基づくJIT コンパイラを持っており,コンパイルされた結果はプロセッサが実行可能な機械語に相当する. +Raku の持つ言語機能や型システムは非常に柔軟かつ強力であるため, 実用的な処理速度に達すれば, 言語の利用件数が向上することが期待される. +Raku は MoarVM に基づくJIT コンパイラを持っており,コンパイルされた結果はプロセッサが実行可能な機械語に相当する. -しかし現状の Perl6 は起動時間が非常に遅いことが問題である. +Raku のような言語に JITコンパイラを持ち, 起動時間が遅い PyPy などの言語がある +本研究では, このようなスクリプト言語の起動時間及び, 処理速度の改善を図る -この問題を解決するために, 同一ホスト内で終了せずに実行を続けるサーバープロセスを立ち上げ, このサーバープロセス上で立ち上げておいたコンパイラに実行するファイル名をサーバーに転送し,サーバー上でコンパイルを行う手法を提案する. +また, その手法として同一ホスト内で終了せずに実行を続けるサーバープロセスを立ち上げ, このサーバープロセス上で立ち上げておいたコンパイラに実行するファイル名を転送し,サーバー上でコンパイルを行う手法を提案する. 著者らは, この提案手法に沿って『Abyss サーバー』を実装している. -またサーバーでは, サーバーに投げられた Perl6 をコンパイラで実行する際に, そのスクリプトが次に実行するスクリプトに影響を与えないことを保証する必要がある. -この問題を解決するために,本研究ではサーバーのコンテナ化を行う. +またサーバーでは, サーバーに投げられた Raku スクリプトをコンパイラで実行する際に, そのスクリプトが次に実行するスクリプトに影響を与えないことを保証する必要がある. 研究をするにあたり得られた, サーバー上でscript言語を実行する場合の利点と欠点について述べ, 今後の展望について記載する.
--- a/Paper/chapter2.tex Sat Feb 15 06:36:16 2020 +0900 +++ b/Paper/chapter2.tex Sat Feb 15 16:41:11 2020 +0900 @@ -114,4 +114,5 @@ \end{tabular} \end{center} \caption{起動時間の比較} -\end{table} \ No newline at end of file +\end{table} +
--- a/Paper/chapter3.tex Sat Feb 15 06:36:16 2020 +0900 +++ b/Paper/chapter3.tex Sat Feb 15 16:41:11 2020 +0900 @@ -17,7 +17,7 @@ \section{Abyss Server側の実装} \ref{Server}はAbyss サーバーのソースコードである. -Abyssサーバーは起動すると, まず自身にファイルパスを転送するためのソケットを生成し, その後ファイルを受け取り実行して . 出力結果をソケットに書き込む +Abyssサーバーは起動すると, まず自身にファイルパスを転送するためのソケットを生成し, その後ファイルパスを受け取り実行して . 出力結果をソケットに書き込む \lstinputlisting[label=Server, caption= Abyss Server側の source code ]{code/abyss.p6}
--- a/Paper/chapter5.tex Sat Feb 15 06:36:16 2020 +0900 +++ b/Paper/chapter5.tex Sat Feb 15 16:41:11 2020 +0900 @@ -1,16 +1,12 @@ \chapter{結論} \section{まとめ} -本稿では実行する Perl6 ファイル名をサーバーに転送し,コンパイラサーバーでコンパイルを行い実行することで全体的に処理時間が早くなることを示した. +本稿では実行する Raku スクリプトのファイル名をサーバーに転送し,コンパイラサーバーでコンパイルを行い実行することで全体的に処理時間が早くなることを示した. \\ 今後Abyssサーバーでの開発をより深く行っていくにあたって以下のような改善点が見られた \\ \begin{itemize} \item コンパイラの起動が遅い言語だけでなく, モジュールの読み込みが遅い言語などを, あらかじめサーバーを側でモジュールを読み込んでおき, それを利用してプログラムを実行する手法も応用できるように改良を行う. -\item 今回の実装では TCP ソケットを用いたが TCP ソケットを用いるとサーバーを立ち上げた際に外部からファイルを転送される可能性があるので, Unix domain socket の実装を行い, それを用いたクライアント・サーバーを作成することで安全性が高まると考えた. -Perl6 には現状 Unix domain socket の実装がないので, Unix domain socket を実装し, 自分以外が実行できないようにすることが今後の課題に挙げられる. -\item 今回用いた Perl6 の EVALFILE 自体にクライアント側に出力を返す実装追加することも今後の課題に挙げられる. -\item 現状の Raku の EVALFILE では, 出力がサーバー側に返っているので, クライアント側から出力を見るためにクライアント側に返す必要がある. \item モジュールを送信する機能の追加 -\item プログラムの実行終了したらモジュールを削除する機能の追加\\ +\item プログラムの実行終了したらモジュールを削除する機能の追加 \\ \end{itemize} %またscript言語をサーバー上で実行する場合の欠点については以下のようなものが見られる %\begin{itemize}