Jitter официально стал частью проекта GNU

Несколько дней назад появилась новость о том, что проект Jitter официально стал проектом под крылом GNU Project. и в настоящее время разрабатывается под названием GNU Jitter с использованием инфраструктуры GNU и в соответствии с требованиями проекта.

Тем, кто не знаком с джиттером, следует знать, что этоa — это реализация, позволяющая создавать портативные и очень быстрые виртуальные машины. для произвольных конструкций языков программирования, производительность выполнения кода которых значительно опережает интерпретаторы и близка к собственному скомпилированному коду.

Джиттер очень переносим, ​​и правильная виртуальная машина будет вести себя точно так же на любой платформе, имеющей только компилятор и стандартную библиотеку C; однако производительность будет лучше при использовании одной из поддерживаемых архитектур (в настоящее время: M68k, MIPS, PowerPC, RISC-V, SPARC, x86_64; 64-й уровень: Aarch390, Alpha, ARM, SXNUMXx) в системах ELF с GCC. Конечно, Jitter является частью проекта GNU и предназначен в первую очередь для использования в системе GNU.

Умэдзаваr принимает в качестве входных данных высокоуровневую спецификацию поддерживаемых инструкций через виртуальную машину, а на выходе формирует готовую к использованию реализацию виртуальной машины для выполнения данных инструкций.

Логика каждой инструкции в спецификации задается с помощью кода C. Дополнительные функции включают поддержку операций условного ветвления, которые сложно реализовать на языке C и которые присущи языкам динамического программирования, например проверка значения тега и проверка переполнения.

Среда выполнения Jitter также имеет эффективную поддержку сложных для реализации операций условного ветвления с использованием только C, таких как проверка тега значения, как того требуют языки с динамической типизацией, и арифметика с проверкой переполнения. Код VM обращается к операциям вызова и возврата процедуры, в большинстве случаев полагаясь на эффективные аппаратные механизмы.

Полученная виртуальная машина отформатирована в C с небольшим количеством вставок ассемблер. Предоставляются конфигурации для включения различных оптимизаций и выбора механизмов доставки, упрощающих миграцию виртуальной машины на другие платформы.

Он поддерживает использование архитектуры выполнения регистра, стека и соединения, а также возможность зеркалировать структуры данных виртуальной машины в аппаратных регистрах ЦП и подключать сборщики мусора.

Сгенерированный код включает в себя простой C API для динамической замены и выполнения кода на виртуальной машине, а также программу-контроллер для отдельного выполнения кода из текстовых файлов на виртуальной машине.

Сгенерированный код C сильно обусловлен и может быть настроен для работы с использованием различных методов распространения различной сложности; наиболее эффективные методы диспетчеризации полагаются на некоторую специфичную для архитектуры, но не специфичную для виртуальной машины поддержку сборки, предоставляемую Jitter; все модели диспетчеризации, но одна также основана на расширениях GNU C.

Наконец, тем, кто хочет узнать об этом больше, следует знать, что исходный код Jitter написан на C и доступен под лицензией GPLv3. Вы можете узнать больше в по следующей ссылке.

Как получить джиттер?

Для тех, кто заинтересован в возможности протестировать Jitter, они могут получить исходный код, открыв терминал и введя в нем следующую команду:

git clone http://git.ageinghacker.net/jitter

Как только это будет сделано, теперь мы приступаем к входу в папку с кодом, мы собираемся выполнить сценарий запуска, который используется для создания необходимых файлов для настройки и сборки Jitter, включая сценарий конфигурации. Мы делаем это с помощью:

cd jitter && ./bootstrap

Стоит отметить, что Jitter следует соглашениям GNU по конфигурации и построению и поддерживает построение из исходного каталога; на самом деле, он поддерживает кросс-компиляцию и даже запуск набора тестов в кросс-компиляции через эмулятор.

./configure && make

Наконец, чтобы выполнить, просто введите:

make check


Добавить в качестве предпочтительного источника в Google