2016-08-14 1 views
2

私はperl6とperl5よりもその変更を理解しようとしています。私はperl 6がコンパイルされた言語だが、どうやって手に入れていないのだろうか?中間コード(直接実行可能またはバイトコード)を生成していませんか? 同じことをするオプションがありません。どうやってするの?どのようにバイトコードを生成するperl6プログラムをコンパイルするには?

現在、自分のコードを直接実行することができます。私は、モジュールとプログラムの両方のファイルにバイトコードを書くhttps://github.com/rakudo/rakudo

答えて

2

次い

$ perl6-j hello.p6 
Hello world 

はまだサポート公式ではありません。したがって、--targetのドキュメントが不足しています。

5

perl6コマンドラインで--target=を使用すると、コンパイラの各ステージの人間が読めるトレースを見ることができます。 JVMでは、 "コンパイルされた"バイトコード出力をしたい場合は、--target=jarを使用して、その内部を見てください。しかし、最終的にPerl 6は別の方法で質問されない限り、オンザフライでコンパイルします。それは、コンパイルステップが次回より速くなるように、各 "CompUnit"のライブラリパスディレクトリにキャッシュされたバイトコード表現を残します。これは.precompディレクトリに見ることができます。プリコンパイルキャッシュは、Perl 6がどのようにすべてのcompユニットをハッシュし索引するかによって手作業で使うのは非常に難しいです。これは同じ名前のライブラリですが、異なるバージョンと著者が並んで座ることができます。 MoarVMでは--target = jarと等価ではありませんが、.precompディレクトリには実行時設定をリンクすると生のバイトコードファイルが表示されます。これはmoarで直接実行できます。

+1

'--target = moar'は物です – ugexe

+0

MoarVMで実行可能なファイルが1つあるので、moarパッケージをすべて対象にしますか?あるいは、それが.precompで見つかったクラスファイルと等価です。 –

関連する問題