För några dagar sedan tillkännagavs att Jitter-projektet officiellt blev ett projekt under GNU-projektets paraply och nu utvecklas under namnet GNU Jitter med hjälp av GNU-infrastruktur och i enlighet med projektets krav.
För de som inte är bekanta med Jitter är det en implementering som låter dig generera portabla och mycket snabba virtuella maskiner för godtyckliga programmeringsspråk, vars kodkörningsprestanda ligger betydligt före tolkar och närmar sig inbyggd kompilerad kod.
Jitter är mycket portabel och en korrekt virtuell dator kommer att uppvisa exakt samma beteende på alla plattformar som bara har en kompilator och ett standard C-bibliotek; prestandan kommer dock att bli bättre med en av de stödda arkitekturerna (för närvarande: M68k, MIPS, PowerPC, RISC-V, SPARC, x86_64; nivå 64: Aarch390, Alpha, ARM, SXNUMXx) på ELF-system med GCC. Naturligtvis är Jitter en del av GNU-projektet och är främst designat för användning på GNU-systemet.
Jitter tar som indata en högnivåspecifikation av instruktioner som stöds av en virtuell maskin, och bildar som utdata en färdig implementering av en virtuell maskin för att exekvera de givna instruktionerna.
Logiken för varje instruktion i specifikationen specificeras med hjälp av C-kod. Ytterligare funktioner inkluderar stöd för villkorliga förgreningsoperationer som är svåra att implementera i C och som är inneboende i dynamiska programmeringsspråk, såsom kontroll av etikettvärden och överflödeskontroll.
Jitter-körtiden har också effektivt stöd för svårimplementerade villkorliga förgreningsoperationer med endast C, såsom värdetaggkontroll som krävs av dynamiskt skrivna språk och aritmetik med överflödeskontroll. VM-kod får åtkomst till proceduranrop och returoperationer, i de flesta fall beroende på effektiva hårdvarumekanismer.
Den resulterande virtuella maskinen formateras i C med ett litet antal assemblerinsatser. Konfigurationer tillhandahålls för att möjliggöra olika optimeringar och välja leveransmekanismer, vilket gör det enkelt att migrera en virtuell maskin till olika plattformar.
Det stöder användningen av exekveringsarkitekturer för register, stack och join, såväl som möjligheten att spegla datastrukturer för virtuella maskiner i CPU-hårdvaruregister och ansluta sophämtare.
Den genererade koden inkluderar ett enkelt C API för att dynamiskt ersätta och exekvera kod i en virtuell maskin, samt ett styrprogram för att separat exekvera kod från textfiler i en virtuell maskin.
Den genererade C-koden är kraftigt konditionerad och kan konfigureras för att köras med olika distributionstekniker av varierande sofistikering; de mest effektiva sändningsteknikerna förlitar sig på något arkitekturspecifikt, men inte VM-specifikt, monteringsstöd från Jitter; alla leveransmodeller, men en är också baserad på GNU C-tillägg.
Slutligen, för de som är intresserade av att lära sig mer, är den ursprungliga Jitter-koden skriven i C och tillgänglig under GPLv3-licensen. Du kan läsa mer på följande länk.
Hur får man Jitter?
För de som är intresserade av att kunna testa Jitter kan de få källkoden genom att öppna en terminal och skriva följande kommando i den:
git clone http://git.ageinghacker.net/jitter
När detta är gjort, nu fortsätter vi att gå in i mappen som har koden, vi ska köra startskriptet som används för att generera de nödvändiga filerna för att konfigurera och bygga Jitter, inklusive ett konfigurationsskript. Vi gör detta med:
cd jitter && ./bootstrap
Det är värt att nämna att Jitter följer GNU:s konventioner för konfiguration och konstruktion och stödjer konstruktion från källkatalogen; i själva verket stöder den korskompilering och till och med körning av testsviten i en korskompilering via en emulator.
./configure && make
Slutligen, för att köra, skriv bara:
make check