MoarVM (abréviation de Metamodel On A Runtime Virtual Machine) est un runtime conçu pour le système d'objets 6model. Il est principalement destiné à exécuter NQP et Rakudo, mais devrait pouvoir servir de backend pour tous les compilateurs construits à l'aide de la chaîne d'outils du compilateur NQP.
Téléchargez-le depuis le site MoarVM ou clonez-le depuis GitHub :
git clone https://github.com/MoarVM/MoarVM.git
Si vous utilisez les archives tar ou les fichiers zip générés automatiquement, veuillez noter qu'ils ne contiennent pas les bibliothèques tierces nécessaires pour construire avec succès MoarVM.
Construire et installer la VM elle-même ne prend que :
perl Configure.pl
make install
(Ou nmake
/ gmake
sous Windows). Actuellement, il est connu pour s'appuyer sur Windows avec MSVC et gcc, et avec gcc
et clang
sur Linux et MacOS X. Nous élargissons cela avec le temps.
Tapez perl Configure.pl --help
pour voir les options de configuration, ainsi que quelques descriptions des options/cibles de création.
Après avoir installé MoarVM, vous pouvez cloner le référentiel NQP ou récupérer une archive tar source et y utiliser le script Configure.pl comme ceci :
perl Configure.pl --backend=moar --prefix=where_your_moarvm_install_lives
Alternativement, le même script Configure.pl dans NQP est capable de cloner, de créer et d'installer lui-même une copie de MoarVM si vous fournissez l'indicateur --gen-moar
.
Veuillez garder à l'esprit que ce sera le préfixe des répertoires
/bin
,/lib
et autres dans lesquels l'exécutablemoar
et d'autres fichiers seront installés, vous devrez donc utiliser/usr
si vous souhaitez quemoar
soit copié dans/usr/bin
.
Lorsque vous pointez le script Configure.pl
dans le référentiel de rakudo vers un --prefix
dans lequel un nqp-m
est installé, il détectera et configurera automatiquement le backend MoarVM. Alternativement, --backend=moar,jvm
peut être utilisé pour le forcer à construire les backends MoarVM et JVM, par exemple. Tout comme dans le script NQP Configure.pl
, vous avez la possibilité de fournir un indicateur --gen-moar
qui fera tout le travail à votre place, y compris la création d'un nqp-m
.
MoarVM est actuellement en développement. Il peut exécuter toute la suite de tests NQP, tous les tests de santé mentale Rakudo et réussir plus de spectres que tout autre backend Rakudo.
Contrairement au backend JVM ou JS de NQP, le dépôt MoarVM n'est pas intégré au dépôt source NQP mais peut à la place être extrait en exécutant le script Configure.pl --gen-moar
configure dans le dépôt NQP.
Certaines fonctionnalités clés fournies par MoarVM incluent :
Les contributions par pull request sont acceptées. Des bits de validation sont attribués à ceux qui contribuent à un travail de qualité. Si vous souhaitez contribuer, passez par la chaîne #moarvm
sur libera.chat.
Consultez le fichier LICENSE dans le répertoire racine pour plus d'informations sur la licence du code source dans le référentiel MoarVM.
Si MoarVM ne parvient pas à se construire et que l'erreur ressemble à ceci :
ld : symbole(s) introuvable(s) pour l'architecture x86_64
vous avez probablement un mélange incompatible d'utilitaires de build et de bin.
Bien qu’il soit courant d’installer des chaînes d’outils à partir de référentiels tiers sous macOS, elles ne sont pas toutes compatibles. Si vous rencontrez ce problème, veuillez essayer ces étapes.
brew unlink binutils
Si vous souhaitez utiliser une chaîne d'outils GNU et que vous obtenez une erreur vous indiquant de voir ce fichier, fournissez simplement l'indicateur --toolchain=gnu
et ce paquet sera configuré et construit avec une chaîne d'outils GNU.
Remarque : si vous utilisez des outils mixtes Xcode et non-Xcode, vous risquez de rencontrer des problèmes. En tant que telle, cette configuration n’est pas prise en charge.
gcc
et clang
Notez que les deux compilateurs définissent la macro __GNUC__
, donc la macro __clang__
doit d'abord être testée pour lever l'ambiguïté des deux.