comparison slides/2018/06/12/slide.md @ 47:32e35be2ce71

auto-Update generated slides by script
author Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
date Tue, 26 Jun 2018 22:41:26 +0900
parents
children
comparison
equal deleted inserted replaced
46:8972d59ad904 47:32e35be2ce71
1 title: CbCによるMoarVMの改良
2 author: Takahiro Shimizu
3 profile:
4 lang: Japanese
5
6
7 # 研究目的
8 - Perl5の後継言語として開発されているPerl6はMoarVMと呼ばれるVMを搭載している.
9 - Perl6はMoarVM,JVM,JavaScript上で動くRakudoと呼ばれる実装と,コンパイラ開発者用のサブセットであるNQPが主な実装となっている.
10 - 現在Perl6及びMoarVMは全体的な速度がPerl5と比較し低下しており,実務として利用できるレベルに達していない.
11 - さらにPerl6の実装自体巨大なcase-switch文など見通しが悪くなっている.
12 - この問題を解決するために現在当研究室で開発している継続を中心にしたContinuation based Cを用いて改良を行う
13 - CbCの設計理念からVMの実装と親和性が高い事も推測できる為,実際にCbCを用いてどのようにVMが実装できるかを検証する
14
15 # 今週の進捗
16 * Perl5のプロファイラを用意
17 * ついでにPerl5もlldbで追ってみていました
18 * nqpのメソッド一覧を発見しました
19 * nqpでプログラミングの為にテキスト読んでいます
20
21 # nqp
22 * [Opcode list](https://github.com/perl6/nqp/blob/master/docs/ops.markdown)を見つける
23 * 謎だったメソッド周りが定義
24 * `nqp::`にメソッドが生えているのでこれを使う
25
26 # Perl5
27
28 ## Profiler
29 * 最近は `Devel::NYTProfile` が良いらしい
30 * `cpanm Devel::NYTProfile`
31
32 ```
33 perl -d:NYTProfile hoge.pl
34 nytptofhtml --open
35 ```
36
37 ## lldb
38
39 * git clone git@github.com:Perl/perl5.git
40 * ./Configure -DDEBUGGING=-g -Doptimize=-O0
41 * 中々難解であまり良くわからなかった…
42
43 # NQP
44 * moarVMのプロファイラを利用可能
45 * 他のプロファイラに関しては[Wanted Modules](https://github.com/perl6/perl6-most-wanted/blob/master/most-wanted/modules.md)にも書かれているのでおそらく無い…
46 * `nqp::time_n()`でnqpで時間が計測出来るのでこれを使うのも単純には良さそう
47 * 残りは[スライド](http://edumentab.github.io/rakudo-and-nqp-internals-course/slides-day1.pdf)読み勧めてました
48
49 # NQPの文法
50
51 * Perl6のベースなので制約がわりと多い
52 * 基本束縛で変数を定義していく
53 * `my $hoge := "foo";`
54 * 配列のpop/pushは専用のメソッドを経由して行う
55
56 ```
57 my @hoge := ('1','2','3');
58 nqp::push(@hoge,4);
59 ```
60
61 # 今週のTODO
62
63 * 評価用のプログラムを作成
64 * 極力モジュールを使わない
65 * NQPで一回書くかどうか
66 * CbCをJITで吐き出したいのでJITの調査
67 * 確かLuaJitを使っていたような…
68 * [YouTube](https://www.youtube.com/watch?v=N5_drt7TEqE)
69 * [Controlled Stack Hacking for the MoarVM JIT Compiler](http://brrt-to-the-future.blogspot.com/2018/06/controlled-stack-hacking-for-moarvm-jit.html)