Не существует спецификации переносимого байт-кода для Ruby, и, следовательно, нет стандартного способа загрузки предварительно скомпилированных архивов байт-кода. Однако почти все реализации Ruby используют какой-либо формат байт-кода или intcode, и некоторые из них могут создавать дампы и перезагружать архивы байт-кода.
YARV всегда компилируется в байт-код перед выполнением кода, однако обычно это делается только в памяти. Есть способы выгрузить байт-код на диск. В настоящее время нет способа прочитать его обратно в , однако. Это изменится в будущем: ведется работа по проверке байт-кода для YARV, и, как только это будет сделано, байт-код можно безопасно загрузить в ВМ, не опасаясь повреждения. Кроме того, разработчики JRuby указали, что они готовы внедрить эмулятор виртуальной машины YARV внутри JRuby после стабилизации формата байтового кода YARV и верификатора, чтобы можно было загружать байт-код YARV в JRuby. (Обратите внимание, что эта версия устарела .)
Rubinius также всегда компилируется в байт-код, и у него есть формат для скомпилированных файлов (.rbc
файлов, аналогичный файлам JVM .class
), и идет речь о формат архива байт-кода (файлы .rba
, аналогичные файлам JVM .jar
). Существует вероятность, что Rubinius может реализовать эмулятор YARV, если развертывание приложений в виде байт-кода YARV когда-либо станет популярным. Кроме того, разработчики JRuby указали, что они готовы реализовать эмулятор байт-кода Rubinius внутри JRuby , если байт-код Rubinius становится популярным способом развертывания приложений Ruby. (Обратите внимание, что эта версия устарела .)
XRuby - это чистый компилятор, он компилирует исходный код Ruby прямо в байт-код JVM (файлы .class
). Вы можете развернуть эти .class
файлы, как и любое другое приложение Java.
JRuby начинался как интерпретатор, но у него есть и JIT-компилятор, и AOT-компилятор (jrubyc
), который может компилировать исходный код Ruby в байт-код JVM (.class
) файлы). Кроме того, ведется работа по созданию нового компилятора, который может компилировать (аннотированный тип) код Ruby в байт-код JVM , который на самом деле выглядит как класс Java и может использоваться из кода Java без барьеры.
Ruby.NET - это чистый компилятор, который компилирует исходный код Ruby в байт-код CIL (файлы PE .dll
или .exe
). Вы можете развернуть их как любое другое приложение CLI.
IronRuby также компилируется в байт-код CIL, но обычно делает это в памяти. Тем не менее, вы можете передать ключи командной строки на него , чтобы он выгружал файлы .dll
и .exe
на диск. Когда они у вас есть, их можно развернуть как обычно.
BlueRuby автоматически выполняет предварительный синтаксический анализ исходного кода Ruby в BRIL (BlueRuby Intermediate Language), который по сути является сериализованным парсетом. (Подробнее см. Blue Ruby - виртуальная машина Ruby в SAP ABAP (PDF).)
Я думаю (но я точно не уверен), что есть способ получить Кардинал для выгрузки Parrot архивов байт-кода. (На самом деле, Cardinal компилирует только в PAST, а затем Parrot вступает во владение, поэтому Parrot будет выполнять задачу выгрузки и загрузки архивов байт-кода.)