For et par dage siden blev det annonceret, at Jitter-projektet officielt blev et projekt under GNU-projektets paraply og nu udvikles under navnet GNU Jitter ved hjælp af GNU-infrastruktur og i overensstemmelse med projektets krav.
For dem der ikke er bekendt med Jitter, er det en implementering, der giver dig mulighed for at generere bærbare og meget hurtige virtuelle maskiner til vilkårlige programmeringssprogdesign, hvis kodeudførelsesevne er betydeligt foran fortolkere og nærmer sig native kompileret kode.
Jitter er meget bærbar, og en korrekt VM vil udvise nøjagtig den samme adfærd på enhver platform, der kun har en compiler og et standard C-bibliotek; ydelsen vil dog være bedre ved at bruge en af de understøttede arkitekturer (i øjeblikket: M68k, MIPS, PowerPC, RISC-V, SPARC, x86_64; 64. niveau: Aarch390, Alpha, ARM, SXNUMXx) på ELF-systemer med GCC. Selvfølgelig er Jitter en del af GNU-projektet og er designet primært til brug på GNU-systemet.
Jitter tager som input en overordnet specifikation af instruktioner understøttet af en virtuel maskine, og danner i output en brugsklar implementering af en virtuel maskine til at udføre de givne instruktioner.
Logikken i hver instruktion i specifikationen er specificeret ved hjælp af C-kode. Yderligere funktioner inkluderer understøttelse af betingede forgreningsoperationer, der er vanskelige at implementere i C og er iboende i dynamiske programmeringssprog, såsom labelværdikontrol og overflow-kontrol.
Jitter-runtiden byder også på effektiv understøttelse af betingede forgreningsoperationer, der er svære at implementere, kun ved brug af C, såsom kontrol af værdimærker som krævet af dynamisk indtastede sprog og aritmetik med overløbskontrol. VM-kode får adgang til procedureopkalds- og returoperationer, i de fleste tilfælde afhængig af effektive hardwaremekanismer.
Den resulterende virtuelle maskine formateres i C med et lille antal assembler-indsættelser. Der gives konfigurationer for at muliggøre forskellige optimeringer og vælge leveringsmekanismer, hvilket gør det nemt at migrere en virtuel maskine til forskellige platforme.
Det understøtter brugen af register-, stack- og join-udførelsesarkitekturer samt muligheden for at spejle virtuelle maskinedatastrukturer i CPU-hardwareregistre og forbinde skraldopsamlere.
Den genererede kode inkluderer en simpel C API til dynamisk at erstatte og eksekvere kode i en virtuel maskine, samt et controllerprogram til separat eksekvering af kode fra tekstfiler i en virtuel maskine.
Den genererede C-kode er stærkt konditioneret og kan konfigureres til at køre ved hjælp af forskellige distributionsteknikker af varierende sofistikering; de mest effektive afsendelsesteknikker er afhængige af nogle arkitekturspecifikke, men ikke VM-specifikke, monteringssupport leveret af Jitter; alle forsendelsesmodeller, men en er også baseret på GNU C-udvidelser.
Endelig, for dem der er interesserede i at lære mere, er den originale Jitter-kode skrevet i C og tilgængelig under GPLv3-licensen. Du kan finde ud af mere på følgende link.
Hvordan får man Jitter?
For dem, der er interesseret i at kunne teste Jitter, kan de få kildekoden ved at åbne en terminal og skrive følgende kommando i den:
git clone http://git.ageinghacker.net/jitter
Når dette er gjort, fortsætter vi nu med at indtaste mappen, der har koden, vi skal udføre opstartsscriptet, der bruges til at generere de nødvendige filer til at konfigurere og bygge Jitter, inklusive et konfigurationsscript. Det gør vi med:
cd jitter && ./bootstrap
Det er værd at nævne, at Jitter følger GNU-konventionerne for konfiguration og konstruktion og understøtter konstruktion fra kildebiblioteket; faktisk understøtter den krydskompilering og endda kørsel af testpakken i en krydskompilering via en emulator.
./configure && make
Til sidst, for at udføre, skal du bare skrive:
make check