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,/libund andere Verzeichnisse ist, in denen die ausführbaremoarDatei und andere Dateien installiert werden. Sie müssen also/usrverwenden, wennmoarkopiert 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.