# HG changeset patch # User Fukuda Kouki # Date 1571728302 -32400 # Node ID 82b28040bb64ddf451867bc7e8f06cca8a41893a # Parent 44ea97bd8e77ae08d427fe6b4b672e1bbf0a8955 add explanation of Perl6 and MoarVM diff -r 44ea97bd8e77 -r 82b28040bb64 midterm/midterm.aux --- a/midterm/midterm.aux Mon Oct 21 11:08:08 2019 +0900 +++ b/midterm/midterm.aux Tue Oct 22 16:11:42 2019 +0900 @@ -1,9 +1,11 @@ \relax +\bibcite{キー1}{1} +\bibcite{キー2}{2} \citation{*} \bibstyle{junsrt} \bibdata{reference} \@writefile{toc}{\contentsline {section}{\numberline {1}研究目的}{1}} -\@writefile{toc}{\contentsline {section}{\numberline {2}Perl6}{1}} +\@writefile{toc}{\contentsline {section}{\numberline {2}Raku}{1}} \@writefile{toc}{\contentsline {section}{\numberline {3}MoarVM}{1}} -\@writefile{toc}{\contentsline {section}{\numberline {4}問題点}{1}} +\@writefile{toc}{\contentsline {section}{\numberline {4}Perl6サーバーの実行}{1}} \@writefile{toc}{\contentsline {section}{\numberline {5}まとめ}{1}} diff -r 44ea97bd8e77 -r 82b28040bb64 midterm/midterm.log --- a/midterm/midterm.log Mon Oct 21 11:08:08 2019 +0900 +++ b/midterm/midterm.log Tue Oct 22 16:11:42 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) 21 OCT 2019 10:56 +This is e-pTeX, Version 3.14159265-p3.6-141210-2.6 (utf8.euc) (TeX Live 2015) (preloaded format=platex 2016.4.14) 22 OCT 2019 16:09 entering extended mode restricted \write18 enabled. file:line:error style messages enabled. @@ -210,9 +210,9 @@ LaTeX Font Info: External font `cmex10' loaded for size (Font) <6> on input line 43. LaTeX Font Info: Font shape `JT1/mc/bx/n' in size <14.4> not available -(Font) Font shape `JT1/gt/m/n' tried instead on input line 45. +(Font) Font shape `JT1/gt/m/n' tried instead on input line 47. LaTeX Font Info: Font shape `JY1/mc/bx/n' in size <14.4> not available -(Font) Font shape `JY1/gt/m/n' tried instead on input line 45. +(Font) Font shape `JY1/gt/m/n' tried instead on input line 47. No file midterm.bbl. File: ./images/emblem-bitmap.pdf Graphic file (type pdf) @@ -228,12 +228,12 @@ ] (./midterm.aux) ) Here is how much of TeX's memory you used: - 2375 strings out of 493777 - 31398 string characters out of 6151334 - 99127 words of memory out of 5000000 - 5883 multiletter control sequences out of 15000+600000 + 2377 strings out of 493777 + 31412 string characters out of 6151334 + 100133 words of memory out of 5000000 + 5885 multiletter control sequences out of 15000+600000 13101 words of font info for 51 fonts, out of 8000000 for 9000 929 hyphenation exceptions out of 8191 - 27i,15n,43p,687b,366s stack positions out of 5000i,500n,10000p,200000b,80000s + 27i,15n,43p,274b,366s stack positions out of 5000i,500n,10000p,200000b,80000s -Output written on midterm.dvi (1 page, 5316 bytes). +Output written on midterm.dvi (1 page, 5408 bytes). diff -r 44ea97bd8e77 -r 82b28040bb64 midterm/midterm.pdf Binary file midterm/midterm.pdf has changed diff -r 44ea97bd8e77 -r 82b28040bb64 midterm/midterm.synctex.gz Binary file midterm/midterm.synctex.gz has changed diff -r 44ea97bd8e77 -r 82b28040bb64 midterm/midterm.tex --- a/midterm/midterm.tex Mon Oct 21 11:08:08 2019 +0900 +++ b/midterm/midterm.tex Tue Oct 22 16:11:42 2019 +0900 @@ -36,16 +36,12 @@ \begin{document} -\title{Rakuのサーバーを使った実行 \\ -Running Raku using Raku server} +\title{Raku(Perl6) のサーバーを使った実行 \\ +Running Raku(Perl6) using Raku server} \author{165727F 氏名: 福田 光希 指導教員: 河野 真治} \date{2019/10} \maketitle -\begin{abstract} - -\end{abstract} - \thispagestyle{fancy} \section{研究目的} @@ -54,25 +50,34 @@ RakuはMoarVMというVM上で動作するが,起動時間がPerl5やPython,Rubyなどの主要なスクリプト言語に比べて非常に遅い. その為,本研究ではRakuプログラムの新たな実行手法の提案,またOS上でスクリプト言語を実行する最適な方法の見直し,スクリプト言語をサーバーで実行する利点と欠点の考察を行う。 -\section{Perl6} +\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{問題点} +\section{Perl6サーバーの実行} +%通常、自分でプロセス立ち上げてPerl6実行する際は, + +%\section{問題点} \section{まとめ} -中間予稿までにやったこととして, Paxosの論文を読み, ChristieにTopologyManagerという機能を実装した. - -Paxosを読んだ理由は, コンセンサスアルゴリズムの調査である. 実際, Paxosもビットコインで使用される候補に上がったコンセンサスアルゴリズムである. 分散システムはどのようなコンセンサスアルゴリズムを用いているかで性能が変わる. 例えばビットコインのコンセンサスアルゴリズムProof of Workは, 計算量を多くして改ざんを起こりにくくしているが無駄が多く, 10分以内で解かれないように動的に条件を変更している. これは先ほどの, 同時にブロックを変更するのを防ぐため, つまり信頼性を上げるためであるが, 速度面で大きな課題となる. 分散ファイルシステムを構成するにはスケーラビリティが課題であり, ノードの数が多くなればなるほど通信時間がかかる. そのため, コンセンサスリズムとして有名なPaxosの論文を読んだ. +中間予稿までにPerl6スクリプトを投げて実行するサーバーの実装、および「自分でプロセス立ち上げてPerl6実行する手法」と「既にあるサーバーに投げてPerl6スクリプトを実行する手法」の差を測るために時間の計測を行った。 -ChristieにTopologyManagerを実装した理由は, Christieのコードに慣れるため, そしてTopologyManager上に分散システムを実装するのが容易になるからである. TopologyManagerとは, ノードにTopologyを構成させ, ノードごとにどこのノードにつながればいいかを指定する機能である. Christieでは静的, 動的なトポロジー管理ができる. 静的ではdotファイルというものにノードごとの関係を記述する. 動的ではノードの木構造を作る. - +今回実装したサーバーでは,別のスクリプトを実行する前にサーバーの状態を初期状態にリフレッシュできてないので、信頼性が保てていない,この問題を解決するためにサーバーに投げられたPerl6をコンパイラで実行する際のセパレーションを保証する機構を作ることが課題としてあげられる. +また今回実装したサーバーとの通信はTCPソケット通信であり, 現状のPerl6にはUnix domain ソケット通信がないのでUnix domain ソケットを実装する予定である. +加えてUnix domain socket の permission を自分だけが実行できるように書き換える,外部から不正なアクセスを行わせないことも必要である. -また, ブロックチェーンについては実際にブロックを実装し, 簡易的ではあるがProof of Workを動かして理解を深めた. - -今後の課題として, ブロックチェーンのトランザクション部分と分散環境を実装する. そして, 実際に分散環境下においてブロックチェーンを動かし, データの整合性保持, 追跡が行えるかを確認していく. コンセンサスアルゴリズムも調査していき, ファイルシステムに組み込めるコンセンサスアルゴリズムを探していきたい. +\begin{thebibliography}{9} + \bibitem{キー1} Andrew Shitov. Perl6 Deep Dive + \bibitem{キー2} 清水隆博, 河野真治. CbC を用いた Perl6 処理系. 琉球大学工学部情報工学科平成 30 年度学位論文 (学士), 2018. +\end{thebibliography} \nocite{*} \bibliographystyle{junsrt}