Mercurial > hg > Papers > 2019 > koo-midterm
view midterm/midterm.tex @ 1:82b28040bb64
add explanation of Perl6 and MoarVM
author | Fukuda Kouki <k.fukuda@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Tue, 22 Oct 2019 16:11:42 +0900 |
parents | 44ea97bd8e77 |
children | 10b5e6b8583d |
line wrap: on
line source
\documentclass[twocolumn,twoside,9.5pt]{jarticle} \usepackage[dvipdfmx]{graphicx} \usepackage{picins} \usepackage{fancyhdr} \usepackage{url} \usepackage{bussproofs} \usepackage{listings,jlisting} \usepackage{cite} \lhead{\parpic{\includegraphics[height=1zw,keepaspectratio,bb=0 0 251 246]{./images/emblem-bitmap.pdf}}琉球大学主催 工学部情報工学科 中間発表予稿} \rhead{} \cfoot{} \setlength{\topmargin}{-1in \addtolength{\topmargin}{15mm}} \setlength{\headheight}{0mm} \setlength{\headsep}{5mm} \setlength{\oddsidemargin}{-1in \addtolength{\oddsidemargin}{11mm}} \setlength{\evensidemargin}{-1in \addtolength{\evensidemargin}{21mm}} \setlength{\textwidth}{181mm} \setlength{\textheight}{261mm} \setlength{\footskip}{0mm} \pagestyle{empty} \lstset{ frame=single, keepspaces=true, breaklines=true, xleftmargin=0zw, xrightmargin=0zw, framerule=.2pt, columns=[l]{fullflexible}, language={}, tabsize=4, lineskip=-0.5zw, escapechar={@}, } \begin{document} \title{Raku(Perl6) のサーバーを使った実行 \\ Running Raku(Perl6) using Raku server} \author{165727F 氏名: 福田 光希 指導教員: 河野 真治} \date{2019/10} \maketitle \thispagestyle{fancy} \section{研究目的} Perl5の後継言語として,Rakuが開発されている. RakuはMoarVMというVM上で動作するが,起動時間がPerl5やPython,Rubyなどの主要なスクリプト言語に比べて非常に遅い. その為,本研究ではRakuプログラムの新たな実行手法の提案,またOS上でスクリプト言語を実行する最適な方法の見直し,スクリプト言語をサーバーで実行する利点と欠点の考察を行う。 \section{Raku} Perlの現在の主流な実装はRakudoである.RakudoはMoarVM,とNQPと呼ばれるPerl6のサブセット,NQPで記述されたPerl6という構成である. MoarVMはNQPを解釈する. このNQPで記述されたPerl6の事をRakudoと呼ぶ. RakudoはMoarVMの他にJVM,Javascriptを動作環境として選択可能である. 言語的な特徴ではPerl5とは違いオブジェクト指向のサポートが強力になり,漸進的型付け言語としての特徴を持つ. 現状のPerl6の実行はPerl6で記述されたコンパイラをloadしてJITしながら実行すること自体に時間がかかっている。 \section{MoarVM} MoarVM は Perl6 に特化した VM である.C言語で実装されている. JITコンパイルなどが現在導入されているが,起動時間などが低速である問題がある. MoarVM 独自の ByteCode があり, NQP からこれを出力する機能などが存在している. \section{Perl6サーバーの実行} %通常、自分でプロセス立ち上げてPerl6実行する際は, %\section{問題点} \section{まとめ} 中間予稿までにPerl6スクリプトを投げて実行するサーバーの実装、および「自分でプロセス立ち上げてPerl6実行する手法」と「既にあるサーバーに投げてPerl6スクリプトを実行する手法」の差を測るために時間の計測を行った。 今回実装したサーバーでは,別のスクリプトを実行する前にサーバーの状態を初期状態にリフレッシュできてないので、信頼性が保てていない,この問題を解決するためにサーバーに投げられたPerl6をコンパイラで実行する際のセパレーションを保証する機構を作ることが課題としてあげられる. また今回実装したサーバーとの通信はTCPソケット通信であり, 現状のPerl6にはUnix domain ソケット通信がないのでUnix domain ソケットを実装する予定である. 加えてUnix domain socket の permission を自分だけが実行できるように書き換える,外部から不正なアクセスを行わせないことも必要である. \begin{thebibliography}{9} \bibitem{キー1} Andrew Shitov. Perl6 Deep Dive \bibitem{キー2} 清水隆博, 河野真治. CbC を用いた Perl6 処理系. 琉球大学工学部情報工学科平成 30 年度学位論文 (学士), 2018. \end{thebibliography} \nocite{*} \bibliographystyle{junsrt} \bibliography{reference} \end{document}