MoarVM (kurz für Metamodel On A Runtime Virtual Machine) ist eine Laufzeitumgebung, die für das 6model-Objektsystem erstellt wurde. Es zielt in erster Linie auf die Ausführung von NQP und Rakudo ab, sollte aber auch als Backend für alle Compiler dienen können, die mit der NQP-Compiler-Toolchain erstellt wurden.
Laden Sie es entweder von der MoarVM-Site herunter oder klonen Sie es von GitHub:
git clone https://github.com/MoarVM/MoarVM.git
Wenn Sie die automatisch generierten Release-Tarballs oder ZIP-Dateien verwenden, beachten Sie bitte, dass diese nicht die Bibliotheken von Drittanbietern enthalten, die für die erfolgreiche Erstellung von MoarVM erforderlich sind.
Das Erstellen und Installieren der VM selbst dauert nur:
perl Configure.pl
make install
(Oder nmake
/ gmake
unter Windows). Derzeit ist bekannt, dass es auf Windows mit MSVC und gcc und mit gcc
und clang
auf Linux und MacOS X aufbaut. Wir erweitern dies mit der Zeit.
Geben Sie perl Configure.pl --help
ein, um die Optionen zur Konfigurationszeit sowie einige Beschreibungen der Optionen/Ziele zur Erstellungszeit anzuzeigen.
Nach der Installation von MoarVM können Sie das NQP-Repository klonen oder einen Quell-Tarball abrufen und das Skript „Configure.pl“ darin wie folgt verwenden:
perl Configure.pl --backend=moar --prefix=where_your_moarvm_install_lives
Alternativ kann dasselbe Skript „Configure.pl“ in NQP eine Kopie von MoarVM selbst klonen, erstellen und installieren, wenn Sie das Flag --gen-moar
angeben.
Bitte beachten Sie, dass dies das Präfix für
/bin
,/lib
und andere Verzeichnisse ist, in denen die ausführbaremoar
Datei und andere Dateien installiert werden. Sie müssen also/usr
verwenden, wennmoar
kopiert werden soll/usr/bin
.
Wenn Sie das Skript Configure.pl
im Rakudo-Repository auf ein --prefix
verweisen, in dem ein nqp-m
installiert ist, erkennt und konfiguriert es automatisch das MoarVM-Backend. Alternativ kann --backend=moar,jvm
verwendet werden, um beispielsweise die Erstellung der MoarVM- und JVM-Backends zu erzwingen. Genau wie im NQP-Skript „ Configure.pl
haben Sie die Möglichkeit, ein Flag --gen-moar
anzugeben, das die gesamte Arbeit für Sie erledigt, einschließlich der Erstellung eines nqp-m
.
MoarVM befindet sich derzeit in der Entwicklung. Es kann die gesamte NQP-Testsuite und alle Rakudo-Sicherheitstests ausführen und besteht mehr Spectests als jedes andere Rakudo-Backend.
Im Gegensatz zum JVM- oder JS-Backend von NQP ist das MoarVM-Repo nicht in das NQP-Quell-Repo integriert, sondern kann stattdessen durch Ausführen des Skripts Configure.pl --gen-moar
configure“ im NQP-Repo eingebunden werden.
Zu den wichtigsten Funktionen von MoarVM gehören:
Beiträge per Pull-Request werden akzeptiert. Commit-Bits werden an diejenigen vergeben, die qualitativ hochwertige Arbeit leisten. Wenn Sie daran interessiert sind, einen Beitrag zu leisten, schauen Sie im #moarvm
-Kanal auf libera.chat vorbei.
Informationen zur Lizenz des Quellcodes im MoarVM-Repository finden Sie in der Datei LICENSE im Stammverzeichnis.
Wenn MoarVM nicht erstellt werden kann und der Fehler etwa so aussieht:
ld: Symbol(e) für Architektur x86_64 nicht gefunden
Sie haben wahrscheinlich eine inkompatible Mischung aus Build- und Bin-Dienstprogrammen.
Obwohl es in macOS üblich ist, Toolchains aus Repositorys von Drittanbietern zu installieren, sind sie nicht alle kompatibel. Falls Sie auf dieses Problem stoßen, versuchen Sie bitte diese Schritte.
brew unlink binutils
Wenn Sie eine GNU-Toolchain verwenden möchten und eine Fehlermeldung erhalten, die Sie auffordert, diese Datei anzuzeigen, geben Sie einfach das Flag --toolchain=gnu
an und dieses Paket wird mit einer GNU-Toolchain konfiguriert und erstellt.
Bitte beachten Sie: Wenn Sie gemischte Xcode- und Nicht-Xcode-Tools verwenden, kann es zu Problemen kommen. Daher wird diese Konfiguration nicht unterstützt.
gcc
als für clang
Beachten Sie, dass beide Compiler das Makro __GNUC__
definieren, daher muss das Makro __clang__
zuerst getestet werden, um die beiden zu unterscheiden.