MoarVM (abreviação de Metamodel On A Runtime Virtual Machine) é um tempo de execução construído para o sistema de objetos 6model. Ele tem como objetivo principal executar NQP e Rakudo, mas deve ser capaz de servir como back-end para qualquer compilador construído usando o conjunto de ferramentas do compilador NQP.
Baixe-o do site MoarVM ou clone-o do GitHub:
git clone https://github.com/MoarVM/MoarVM.git
Se você usar os tarballs ou arquivos zip de lançamento gerados automaticamente, observe que eles não contêm as bibliotecas de terceiros necessárias para construir o MoarVM com sucesso.
Construir e instalar a própria VM leva apenas:
perl Configure.pl
make install
(Ou nmake
/ gmake
no Windows). Atualmente é conhecido por compilar no Windows com MSVC e gcc, e com gcc
e clang
no Linux e MacOS X. Estamos expandindo isso com o tempo.
Digite perl Configure.pl --help
para ver as opções de tempo de configuração, bem como algumas descrições das opções/destinos de tempo de produção.
Depois de instalar o MoarVM, você pode clonar o repositório NQP ou pegar um tarball de origem e usar o script Configure.pl da seguinte forma:
perl Configure.pl --backend=moar --prefix=where_your_moarvm_install_lives
Alternativamente, o mesmo script Configure.pl no NQP é capaz de clonar, construir e instalar uma cópia do MoarVM por conta própria se você fornecer o sinalizador --gen-moar
.
Por favor, tenha em mente que este será o prefixo para
/bin
,/lib
e outros diretórios onde o executávelmoar
e outros arquivos serão instalados, então você terá que usar/usr
se quiser quemoar
seja copiado para/usr/bin
.
Ao apontar o script Configure.pl
no repositório do rakudo para um --prefix
que possui um nqp-m
instalado, ele detectará e configurará automaticamente o backend do MoarVM. Alternativamente, --backend=moar,jvm
pode ser usado para forçá-lo a construir os backends MoarVM e JVM, por exemplo. Assim como no script NQP Configure.pl
, você tem a opção de fornecer um sinalizador --gen-moar
que fará todo o trabalho para você, incluindo a criação de um nqp-m
.
MoarVM está atualmente em desenvolvimento. Ele pode executar todo o conjunto de testes NQP, todos os testes de sanidade do Rakudo e passar em mais testes do que qualquer outro back-end do Rakudo.
Ao contrário do back-end JVM ou JS do NQP, o repositório MoarVM não está integrado ao repositório de origem NQP, mas pode ser obtido executando o script Configure.pl --gen-moar
configure no repositório NQP.
Alguns recursos principais fornecidos pelo MoarVM incluem:
Contribuições por pull request são aceitas. Os bits de commit são dados àqueles que contribuem com um trabalho de qualidade. Se você tiver interesse em contribuir, dê uma passada no canal #moarvm
no libera.chat.
Consulte o arquivo LICENSE no diretório raiz para obter informações sobre a licença do código fonte no repositório MoarVM.
Se o MoarVM falhar na compilação e o erro for semelhante a este:
ld: símbolo(s) não encontrado(s) para arquitetura x86_64
você provavelmente tem uma combinação incompatível de utilitários build e bin.
Embora seja comum instalar conjuntos de ferramentas de repositórios de terceiros no macOS, nem todos são compatíveis. Caso você se depare com esse problema, tente estas etapas.
brew unlink binutils
Se você quiser usar um conjunto de ferramentas GNU e receber um erro solicitando que você veja este arquivo, simplesmente forneça o sinalizador --toolchain=gnu
e este pacote irá configurar e construir com um conjunto de ferramentas GNU.
Observação: se você usar ferramentas mistas Xcode e não Xcode, provavelmente terá problemas. Como tal, esta configuração não é suportada.
gcc
e clang
Observe que ambos os compiladores definem macro __GNUC__
, então macro __clang__
precisa ser testado primeiro para desambiguar os dois.