MoarVM (Metamodel On A Runtime Virtual Machine の略) は、6model オブジェクト システム用に構築されたランタイムです。これは主に NQP とrakudo を実行することを目的としていますが、NQP コンパイラ ツールチェーンを使用して構築されたコンパイラのバックエンドとしても機能できるはずです。
MoarVM サイトからダウンロードするか、GitHub からクローンを作成します。
git clone https://github.com/MoarVM/MoarVM.git
自動的に生成されたリリース tarball または zip ファイルを使用する場合は、MoarVM を正常に構築するために必要なサードパーティ ライブラリが含まれていないことに注意してください。
VM 自体の構築とインストールには次の作業だけが必要です。
perl Configure.pl
make install
(または Windows ではnmake
/ gmake
)。現在、Windows では MSVC と gcc を使用してビルドすること、Linux と MacOS X ではgcc
とclang
を使用してビルドすることが知られています。私たちはこれを時間の経過とともに拡張していく予定です。
perl Configure.pl --help
と入力すると、configure-time オプションと make-time オプション/ターゲットの説明が表示されます。
MoarVM をインストールした後、NQP リポジトリのクローンを作成するか、ソース tarball を取得して、その中で Configure.pl スクリプトを次のように使用できます。
perl Configure.pl --backend=moar --prefix=where_your_moarvm_install_lives
あるいは、 --gen-moar
フラグを指定すると、NQP の同じ Configure.pl スクリプトで MoarVM のコピーを独自に複製、構築、インストールできます。
これは、
moar
実行可能ファイルやその他のファイルがインストールされる/bin
、/lib
、およびその他のディレクトリのプレフィックスとなるため、moar
をコピーする場合は/usr
使用する必要があることに注意してください。/usr/bin
。
nqp-m
がインストールされている--prefix
で rakudo のリポジトリ内のConfigure.pl
スクリプトを指定すると、MoarVM バックエンドが自動的に検出され、構成されます。あるいは、 --backend=moar,jvm
使用して、たとえば MoarVM および JVM バックエンドを強制的に構築することもできます。 NQP Configure.pl
スクリプトと同様に、 nqp-m
作成を含むすべての作業を自動的に実行する--gen-moar
フラグを指定するオプションがあります。
MoarVM は現在開発中です。すべての NQP テスト スイート、すべてのrakudo 健全性テストを実行でき、他のrakudo バックエンドよりも多くの spectest に合格します。
NQP の JVM または JS バックエンドとは異なり、MoarVM リポジトリは NQP ソース リポジトリに統合されていませんが、NQP リポジトリでConfigure.pl --gen-moar
configure スクリプトを実行することで取り込むことができます。
MoarVM が提供する主な機能には次のようなものがあります。
プルリクエストによる貢献も受け付けます。コミットビットは、質の高い仕事に貢献した人に与えられます。貢献に興味がある場合は、libera.chat の#moarvm
チャンネルにお立ち寄りください。
MoarVM リポジトリ内のソース コードのライセンスについては、ルート ディレクトリにある LICENSE ファイルを参照してください。
MoarVM のビルドに失敗し、次のようなエラーが表示される場合:
ld: アーキテクチャ x86_64 のシンボルが見つかりません
build ユーティリティと bin ユーティリティの組み合わせに互換性がない可能性があります。
macOS ではツールチェーンをサードパーティのリポジトリからインストールするのが一般的ですが、すべてに互換性があるわけではありません。この問題が発生した場合は、次の手順をお試しください。
brew unlink binutils
GNU ツールチェーンを使用する場合、このファイルを参照するように求めるエラーが表示された場合は、 --toolchain=gnu
フラグを指定するだけで、このパッケージは GNU ツールチェーンを構成してビルドします。
注意: Xcode ツールと Xcode 以外のツールを混合して使用すると、問題が発生する可能性があります。そのため、この構成はサポートされていません。
gcc
とclang
では異なるコードが必要ですどちらのコンパイラもマクロ__GNUC__
を定義しているため、この 2 つの曖昧さをなくすためにマクロ__clang__
最初にテストする必要があることに注意してください。