Jitter офіційно став частиною проекту GNU

Кілька днів тому було оголошено, що проект Jitter офіційно став проектом під егідою GNU Project і тепер розробляється під назвою GNU Jitter з використанням інфраструктури GNU та відповідно до вимог проекту.

Для тих, хто не знайомий з Jitter, це реалізація, яка дозволяє створювати портативні та дуже швидкі віртуальні машини для довільних мов програмування, продуктивність виконання коду яких значно випереджає інтерпретатори та наближається до рідного компільованого коду.

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

Джиттер приймає на вхід високорівневу специфікацію інструкцій, що підтримуються віртуальною машиною, а на виході формує готову до використання реалізацію віртуальної машини для виконання заданих інструкцій.

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

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

Отримана віртуальна машина відформатована на 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