La boĂźte Ă outils Jitter a Ă©tĂ© officiellement adoptĂ©e par le projet GNU et sera dĂ©sormais dĂ©veloppĂ©e sous le nom de GNU Jitter, en utilisant l'infrastructure GNU et conformĂ©ment aux exigences du projet. Jitter gĂ©nĂšre des machines virtuelles portables et extrĂȘmement rapides pour des constructions de langages de programmation arbitraires, avec des performances d'exĂ©cution de code nettement supĂ©rieures Ă celles des interprĂ©teurs et proches du code compilĂ© natif. Le code source de Jitte est Ă©crit en C et sous licence GPLv3.
Jitter prend en entrĂ©e une spĂ©cification de haut niveau des instructions prises en charge par la machine virtuelle et produit une implĂ©mentation de machine virtuelle prĂȘte Ă l'emploi pour l'exĂ©cution des instructions spĂ©cifiĂ©es. La logique de chaque instruction de la spĂ©cification est spĂ©cifiĂ©e en code C (voir l'exemple de spĂ©cification de machine virtuelle pour Lisp). Parmi les fonctionnalitĂ©s supplĂ©mentaires, on trouve la prise en charge des opĂ©rations de branchement conditionnel, telles que la vĂ©rification des valeurs de balises et la vĂ©rification des dĂ©passements, difficiles Ă implĂ©menter en C et courantes dans les langages de programmation dynamique.
RĂ©sultat machine virtuelle La machine virtuelle est Ă©crite en C avec un nombre rĂ©duit de lignes d'assembleur. Des paramĂštres permettent d'activer diverses optimisations et de sĂ©lectionner les mĂ©canismes de rĂ©partition, simplifiant ainsi le portage de la machine virtuelle sur diffĂ©rentes plateformes. Les architectures d'exĂ©cution par registres, par pile et combinĂ©e sont prises en charge, de mĂȘme que la possibilitĂ© de mapper les structures de donnĂ©es de la machine virtuelle aux registres matĂ©riels du processeur et d'activer le ramasse-miettes. Le code gĂ©nĂ©rĂ© inclut une API C simple pour la substitution et l'exĂ©cution dynamiques de code dans la machine virtuelle, ainsi qu'un programme pilote permettant d'exĂ©cuter sĂ©parĂ©ment du code provenant de fichiers texte dans la machine virtuelle.
Source: opennet.ru
