Perl6を用いたコード例の日本語コメント付きのものです。
Perl6 Design Documents が仕様になっています。
Using Perl6(日本語版) を読んでみるとよいかもしれません。
rakudo が Perl6 の実装です。Rakudo は MoarVM/JVM を対象として実装されている Perl6 の処理系で、nqp および Perl6 で実装されています。
nqp は not-quite-perl(6) の略で、Perl6 のサブセットです。Perl6 の実装のためにつくられた処理系です。 Perl6 に依存して実装されているわけではなく、汎用のプログラミング言語作成ツールキットになっています。
roast が test suite です。 テストコードは、サンプルコードとして参考になります。
一部、通ってないテストもあることに注意してください。
2015.07.02 バージョンでは、すでに起動速度の最適化が行われており、十分に高速です。以下は Core i7 3.5GHz のマシンでの起動速度です。
time perl6-m -e '0'
perl6-m -e '0' 0.08s user 0.02s system 97% cpu 0.098 total
既存のコードベースが大量にありますので、そんなことにはならないでしょう。 Perl6 がリリースされても Perl5 のメンテナンスは継続されます。
MoarVM とは、Perl6 をターゲットに開発された VM です。JIT なども積んでおり、高速に安定して動作します。
Parrot はもはや Rakudo のメインターゲットではありません。MoarVM をご利用ください。
https://rt.perl.org/Public/ ← が BTS です。
Perl5 で言うところの __PACKAGE__->can("done_testing")
は &::('done_testing')
で実現できます。
panda install Linenoise
するとまともになります。
panda というのがそれです。
Moar の場合、--stagestats オプションでどのステージで時間がかかっているか確認することができます。
$ perl6-m --stagestats -Ilib bin/crustup
Stage start : 0.000
Stage parse : 8.409
Stage syntaxcheck: 0.000
Stage ast : 0.000
Stage optimize : 0.003
Stage mast : 0.019
Stage mbc : 0.001
Stage moar : 0.000
Usage:
bin/crustup [--port=<Int>] [--shotgun] [--workers=<Int>] <appfile> [<host>]
eval-server ついてるのでご利用ください。
./install/bin/perl6-eval-server -cookie TESTTOKEN -app ./perl6.jar
でサーバー起動。
./install/bin/eval-client.pl TESTTOKEN 'run' '-e' 'say 4'
でクライアント走ります。
perl6 のライブラリをインストールするときに、最近の panda だと precompile が行われなくなっています。 precompile とはつまり、.pm ファイルを .moarvm ファイルにコンパイルしておく処理のことです。
Perl6 は開発途中のため、このあたりがまだ手薄です。
https://github.com/perl6-users-jp/perl6-examples/blob/master/bin/perl6-precompile-all を実行するととりあえず全部 precompile するので、速くなります。
https://github.com/shoichikaji/mi6 があります。モジュール作るときはこれ使うのがおすすめです。
require ::($module_name);
::($module_name).new;
Stage mbc : Killed
などと出ていませんか?
現状の rakudo のビルドは 800MB ほどのメモリを必要とするため OOM が走ってしまうことがあります。
OOM が走る場合にはメモリを増やしてください。
perl6 --target=ast -e 'my @a = $_.split(/\s/)'
のようにすると、良い感じに動くようになります。
環境変数 RAKUDO_MODULE_DEBUG=1
を設定して実行してみましょう.
perl6 の実行オプションに --stagestats
や --ll-exceptions
を付与して実行してみるのも手です.
また strace
を使ってシステムコールを見るというのも選択肢の一つとなるでしょう.
cd /path/to/MoarVM && perl Configure.pl --prefix=/tmp/perl6/ --make-install
cd /path/to/nqp && perl Configure.pl --prefix=/tmp/perl6/ --backends=moar --make-install
cd /path/to/rakudo && perl Configure.pl --prefix=/tmp/perl6/ --backends=moar --make-install
などとして,rakudo をビルドしつつ開発をすることが可能です.
sub EXPORT
を利用してください。