MoarVM (сокращение от Metamodel On A Runtime Virtual Machine) — это среда выполнения, созданная для объектной системы 6model. Он в первую очередь предназначен для запуска NQP и Rakudo, но должен быть в состоянии служить серверной частью для любых компиляторов, созданных с использованием набора инструментов компилятора NQP.
Загрузите его с сайта MoarVM или клонируйте с GitHub:
git clone https://github.com/MoarVM/MoarVM.git
Если вы используете автоматически созданные tar-архивы или zip-файлы выпуска, обратите внимание, что они не содержат сторонних библиотек, необходимых для успешной сборки MoarVM.
Для сборки и установки самой виртуальной машины требуется всего:
perl Configure.pl
make install
(Или nmake
/ gmake
в Windows). В настоящее время известно, что он работает на Windows с MSVC и gcc, а также с gcc
и clang
на Linux и MacOS X. Со временем мы расширяем эту возможность.
Введите perl Configure.pl --help
, чтобы просмотреть параметры времени настройки, а также некоторые описания параметров/целей времени создания.
После установки MoarVM вы можете клонировать репозиторий NQP или получить архив с исходным кодом и использовать в нем скрипт Configuration.pl следующим образом:
perl Configure.pl --backend=moar --prefix=where_your_moarvm_install_lives
Альтернативно, тот же сценарий Configure.pl в NQP может самостоятельно клонировать, собирать и устанавливать копию MoarVM, если вы укажете флаг --gen-moar
.
Имейте в виду, что это будет префикс для каталогов
/bin
,/lib
и других, куда будет установлен исполняемый файлmoar
и другие файлы, поэтому вам придется использовать/usr
если вы хотите, чтобыmoar
был скопирован в/usr/bin
.
При указании скрипту Configure.pl
в репозитории rakudo префикса --prefix
, в котором установлен nqp-m
, он автоматически обнаружит и настроит серверную часть MoarVM. В качестве альтернативы можно использовать --backend=moar,jvm
чтобы заставить его, например, создать серверные части MoarVM и JVM. Как и в сценарии NQP Configure.pl
, у вас есть возможность указать флаг --gen-moar
, который выполнит всю работу за вас, включая создание nqp-m
.
MoarVM в настоящее время находится в разработке. Он может запускать весь набор тестов NQP, все тесты работоспособности Rakudo и проходить больше спектральных тестов, чем любой другой бэкэнд Rakudo.
В отличие от JVM или JS-сервера NQP, репозиторий MoarVM не интегрирован в репозиторий исходного кода NQP, но вместо этого его можно получить, запустив скрипт настройки Configure.pl --gen-moar
в репозитории NQP.
Некоторые ключевые функции, предоставляемые MoarVM, включают:
Принимаются вклады по запросу. Биты коммита даются тем, кто вносит вклад в качественную работу. Если вы хотите внести свой вклад, загляните на канал #moarvm
на libera.chat.
См. файл LICENSE в корневом каталоге для получения информации о лицензии исходного кода в репозитории MoarVM.
Если MoarVM не удается собрать и ошибка выглядит примерно так:
ld: символы не найдены для архитектуры x86_64
у вас, скорее всего, несовместимое сочетание утилит build и bin.
Хотя в macOS часто устанавливаются наборы инструментов из сторонних репозиториев, не все они совместимы. Если вы столкнулись с этой проблемой, попробуйте выполнить следующие действия.
brew unlink binutils
Если вы хотите использовать цепочку инструментов GNU и получаете сообщение об ошибке, предлагающее просмотреть этот файл, просто укажите флаг --toolchain=gnu
, и этот пакет будет настроен и собран с использованием цепочки инструментов GNU.
Обратите внимание: если вы используете смешанные инструменты Xcode и не Xcode, у вас, скорее всего, возникнут проблемы. Таким образом, эта конфигурация не поддерживается.
gcc
и clang
Обратите внимание, что оба компилятора определяют макрос __GNUC__
, поэтому сначала необходимо протестировать макрос __clang__
, чтобы устранить неоднозначность.