comparison Slide/Slide.pdf.html @ 8:3343b5914245

add Slide
author e165727 <e165727@ie.u-ryukyu.ac.jp>
date Wed, 25 Dec 2019 16:10:22 +0900
parents 126266fc2c30
children 480229d0ea65
comparison
equal deleted inserted replaced
7:126266fc2c30 8:3343b5914245
93 <h2 id="研究概要">研究概要</h2> 93 <h2 id="研究概要">研究概要</h2>
94 <ul> 94 <ul>
95 <li>Perl6 の実装の一つであるRakudoは、Byte code である MoarVM と、それ上で動作する Perl6 のsubsetであるnqp (Not Quite Perl)上に構成されている。</li> 95 <li>Perl6 の実装の一つであるRakudoは、Byte code である MoarVM と、それ上で動作する Perl6 のsubsetであるnqp (Not Quite Perl)上に構成されている。</li>
96 <li>現状のPerl6の実行はPerl6で記述されたコンパイラをloadしてJITしながら実行すること自体に時間がかかっている。</li> 96 <li>現状のPerl6の実行はPerl6で記述されたコンパイラをloadしてJITしながら実行すること自体に時間がかかっている。</li>
97 <li>そこで、Perl6をサーバとして動作させ、実行するファイルをサーバに投げて実行する方法を検討する</li> 97 <li>そこで、Perl6をサーバとして動作させ、実行するファイルをサーバに投げて実行する方法を検討する</li>
98 </ul> 98 <li>同一ホスト内で終了せずに実行を続けるサーバープロセスを立ち上げ, このサーバープロセス上で立ち上げておいたコンパイラに実行するファイル名を転送し, サーバー上でコンパイルを行う手法を提案し実装する.</li>
99 99 </ul>
100 100
101 101
102 </div> 102
103 103 </div>
104 <div class='slide'> 104
105 <!-- _S9SLIDE_ --> 105 <div class='slide'>
106 <h2 id="perl6-による-abyss-の実装">Perl6 による Abyss の実装</h2> 106 <!-- _S9SLIDE_ -->
107 <h2 id="perl6raku">Perl6(Raku)</h2>
108
109
110
111 </div>
112
113 <div class='slide'>
114 <!-- _S9SLIDE_ -->
115 <h2 id="rakudo">Rakudo</h2>
116 <ul>
117 <li>Rakudoとは現在のPerl6の主力な実装である.</li>
118 <li>Rakudo は MoarVM, と NQP と呼ばれる Perl6 のサブセット, NQP と Perl6 自身で記述された Perl6 という構成である.</li>
119 </ul>
120
121 <p><img src="fig/Rakudo.pdf" alt="" /></p>
122 <ul>
123 <li>Rakudoの構成</li>
124 </ul>
125
126
127
128 </div>
129
130 <div class='slide'>
131 <!-- _S9SLIDE_ -->
132 <h2 id="nqp">NQP</h2>
133
134
135
136 </div>
137
138 <div class='slide'>
139 <!-- _S9SLIDE_ -->
140 <h2 id="perl6-による-abyssサーバーの実装">Perl6 による Abyssサーバーの実装</h2>
141 <ul>
142 <li>提案手法に沿い『Abyssサーバー』を実装した.</li>
143 <li>Abyssサーバーはクライアント側から投げられた Perl6 を実行するためのサーバーである.</li>
144 <li>下記の図は,Abyss サーバーを用いたスクリプト言語の実行手順である.</li>
145 </ul>
146
147 <p><img src="fig/abyss.pdf" alt="" /></p>
148
149
150
151 </div>
152
153 <div class='slide'>
154 <!-- _S9SLIDE_ -->
155 <h2 id="abyss-server側の実装">Abyss Server側の実装</h2>
156 <ul>
157 <li>Abyss サーバーは起動すると, まず自身にファイル パスを転送するためのソケットを生成し, その後 ファイルを受け取るための待機ループに入る.</li>
158 </ul>
107 159
108 <pre><code>unit class Abyss::Server:ver&lt;0.0.1&gt;; 160 <pre><code>unit class Abyss::Server:ver&lt;0.0.1&gt;;
109 use MONKEY-SEE-NO-EVAL; 161 use MONKEY-SEE-NO-EVAL;
110 162
111 method readeval { 163 method readeval {
128 180
129 </div> 181 </div>
130 182
131 <div class='slide'> 183 <div class='slide'>
132 <!-- _S9SLIDE_ --> 184 <!-- _S9SLIDE_ -->
133 <h2 id="todo">Todo</h2> 185 <h2 id="abyss-client側の実装">Abyss Client側の実装</h2>
186 <ul>
187 <li>ユーザーはAbyssのサーバーを起動後,ファイルパスをサーバーに送信する.</li>
188 </ul>
189
190 <pre><code>my $conn = IO::Socket::INET.new( :host&lt;localhost&gt;,
191 :port(3333) );
192
193 $conn.print: 'FILEPASS';
194 </code></pre>
195
196
197
198 </div>
199
200 <div class='slide'>
201 <!-- _S9SLIDE_ -->
202 <h2 id="perl6のeval">Perl6のEVAL</h2>
203 <ul>
204 <li>Perl6 では EVAL 関数があり文字列を Perl6 のソースコード自身として評価できる</li>
205 <li>Perl6 では, EVAL は通常は使用できないようになっており, MONKEY-SEE-NO-EVAL という pragma を実行することで使うことができるようになる.</li>
206 </ul>
207
208 <pre><code>use MONKEY-SEE-NO-EVAL;
209
210 EVAL "say { 5 + 5 }"; # OUTPUT: 10
211 </code></pre>
212
213
214
215 </div>
216
217 <div class='slide'>
218 <!-- _S9SLIDE_ -->
219 <h2 id="まとめと今後の課題">まとめと今後の課題</h2>
220 <ul>
221 <li>Perl6 の新たな実行方法の提案,及び実装を行なった.</li>
222 </ul>
134 223
135 </div> 224 </div>
136 225
137 226
138 </div><!-- presentation --> 227 </div><!-- presentation -->