Jitter oficjalnie stał się częścią projektu GNU

Kilka dni temu pojawiła się wiadomość, że projekt Jitter oficjalnie stał się projektem pod skrzydłem Projektu GNU i jest obecnie rozwijany pod nazwą GNU Jitter przy użyciu infrastruktury GNU i zgodnie z wymaganiami projektu.

Dla tych, którzy nie znają Jittera, powinniście wiedzieć, że jesta to implementacja pozwalająca na generowanie przenośnych i bardzo szybkich maszyn wirtualnych dla dowolnych projektów języków programowania, których wydajność wykonywania kodu znacznie wyprzedza interpretery i jest zbliżona do natywnego kodu skompilowanego.

Jitter jest wysoce przenośny, a poprawna maszyna wirtualna będzie wykazywać dokładnie to samo zachowanie na każdej platformie, która ma tylko kompilator i standardową bibliotekę C; jednak wydajność będzie lepsza przy użyciu jednej z obsługiwanych architektur (obecnie: M68k, MIPS, PowerPC, RISC-V, SPARC, x86_64; 64. poziom: Aarch390, Alpha, ARM, SXNUMXx) na systemach ELF z GCC. Oczywiście Jitter jest częścią projektu GNU i jest przeznaczony głównie do użytku w systemie GNU.

jitter przyjmuje jako dane wejściowe wysokopoziomową specyfikację obsługiwanych instrukcji przez maszynę wirtualną, a w wyniku powstaje gotowa do użycia implementacja maszyny wirtualnej wykonać podane instrukcje.

Logika każdej instrukcji w specyfikacji jest określony za pomocą kodu C. Dodatkowe funkcje obejmują obsługę operacji warunkowego rozgałęzienia, które są trudne do zaimplementowania w języku C i nieodłącznie związane z dynamicznymi językami programowania, takie jak sprawdzanie wartości znaczników i sprawdzanie przepełnienia.

Środowisko wykonawcze Jitter oferuje również wydajną obsługę trudnych do zaimplementowania operacji warunkowego rozgałęzienia przy użyciu tylko języka C, takich jak sprawdzanie tagów wartości wymagane przez języki z typami dynamicznymi oraz operacje arytmetyczne ze sprawdzaniem przepełnienia. Kod VM uzyskuje dostęp do operacji wywołania procedur i operacji powrotu, w większości przypadków opierając się na wydajnych mechanizmach sprzętowych.

Powstała maszyna wirtualna jest sformatowana w C z niewielką liczbą wstawek monter. Dostępne są konfiguracje umożliwiające różne optymalizacje i wybrane mechanizmy dostarczania, co ułatwia migrację maszyny wirtualnej na różne platformy.

Obsługuje użycie architektur rejestrowania, stosu i łączenia, a także umożliwia tworzenie kopii lustrzanych struktur danych maszyn wirtualnych w rejestrach sprzętowych procesora i podłączanie garbage collectorów.

Wygenerowany kod zawiera proste C API do dynamicznego zastępowania i wykonywania kodu na maszynie wirtualnej, a także program kontrolera do oddzielnego wykonywania kodu z plików tekstowych na maszynie wirtualnej.

Wygenerowany kod C jest silnie uwarunkowany i może być skonfigurowany do uruchamiania przy użyciu różnych technik dystrybucji o różnym stopniu zaawansowania; najbardziej wydajne techniki wysyłania opierają się na niektórych specyficznych dla architektury, ale nie specyficznych dla maszyn wirtualnych, wsparcia assemblera zapewnianego przez Jitter; wszystkie modele dyspozytorskie, ale jeden jest również oparty na rozszerzeniach GNU C.

Wreszcie, ci, którzy chcą dowiedzieć się więcej na ten temat, powinni wiedzieć, że oryginalny kod Jitter jest napisany w C i jest dostępny na licencji GPLv3. Możesz dowiedzieć się więcej w następujący link.

Jak zdobyć Jittera?

Dla tych, którzy są zainteresowani testowaniem Jittera, mogą uzyskać kod źródłowy, otwierając terminal i wpisując w nim następujące polecenie:

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

Gdy to zrobisz, teraz przechodzimy do folderu, w którym znajduje się kod, wykonamy skrypt startowy, który jest używany do generowania plików niezbędnych do skonfigurowania i zbudowania Jittera, w tym skryptu konfiguracyjnego. Robimy to za pomocą:

cd jitter && ./bootstrap

Warto wspomnieć, że Jitter przestrzega konwencji GNU dotyczących konfiguracji i konstrukcji oraz obsługuje konstrukcję z katalogu źródłowego; w rzeczywistości obsługuje kompilację krzyżową, a nawet uruchamianie zestawu testów w kompilacji krzyżowej za pośrednictwem emulatora.

./configure && make

Na koniec, aby wykonać, po prostu wpisz:

make check


Dodaj jako preferowane źródło w Google