Machines virtuelles – quelques liens

Cette page est embryonnaire. Il y a beaucoup à écrire sur le sujet, et j'ai vraiment trop peu de temps...

Quelques raccourcis :

Le projet LLVM, bien que passionant, est plus une technologie associée aux compilateurs et aux langages intermédiaires qu'aux machine virtuelles.

Thématique connexe : les émulateurs.

Quelques liens d'ordre général :

Faire votre propre machine virtuelle :

asm.js

La plateforme asm.js est un projet d'un grand intérêt, décrit sur ../Sujets/Web/JavaScript-Outils.html#asmjs

Alchemy

La plateforme Alchemy d'Adobe a pour objectif de supporter l'exécution de code C et C++ sur la machine virtuelle d'ActionScript..

CHIP-8

Une machine virtuelle qui a permis le développement de certains des premiers (et des plus célèbres!) jeux vidéos.

Le CLR de la plateforme .NET

Voir ceci pour des informations sur le DLR.

Conçue de prime abord pour supporter plusieurs langages (mais favorisant visiblement C# depuis le début), le Common Language Runtime (CLR) de la plateforme .NET exécute des programmes compilés dans le langage intermédiaire CIL (Common Intermediate Language), autrefois nommé MSIL.

Plus d'informations à venir quand j'aurai un peu plus de temps.

Quelques liens pertinents :

Comparatifs :

Critiques :

Quelques langages destinés à la plateforme .NET (une liste complémentaire est disponible sur http://en.wikipedia.org/wiki/List_of_CLI_languages)

La CVM

Le projet Coherent Virtual Machine, ou CVM, est de développer une machine virtuelle à mémoire distribuée sur plusieurs ordinateurs.

Le DGEE de la plateforme DotGNU

Projet GNU d'une machine virtuelle pour la plateforme .NET. Maintenant défunt, si on se fie au site officiel.

Le DLR de la plateforme .NET

On trouve une strate dynamique par-dessus le CLR pour la plateforme .NET. Cette strate se nomme le Dynamic Language Runtime, ou DLR, et permet de supporter des langages dynamiques qui ne sont pas desservis efficacement de prime abord par le CLR.

Pour en savoir plus :

ERTS

La machine virtuelle ERTS, pour Erlang Runtime System, est celle qui sous-tend l'exécution d'Erlang mais aussi de quelques autres langages de programmation, le plus connu de ces langages alternatifs étant Elixir.

Quelques langages destinés à ERTS :

HHVM

La Hip Hop Virtual Machine, utilisée en particulier chez Facebook pour les langages Hack et PHP.

IBNIZ

Projet expérimental de machine virtuelle audiovisuelle.

Texte de Ville-Matias Heikkilä en 2011 : http://countercomplex.blogspot.ca/2011/12/ibniz-hardcore-audiovisual-virtual.html?m=1

La JVM de la plateforme Java

Machine virtuelle traitant du bytecode, un langage intermédiaire. À l'origine conçue pour supporter le langage Java, cette plateforme sert maintenant à titre de « machine » hôte pour un grand nombre de langages. Il s'agit d'une plateforme d'une grande maturité, qui a fait école et a constitué une sorte de preuve qu'il était possible d'écrire des programmes destinés à une machine virtuelle et offrant des caractéristiques de performance acceptables.

Plus d'informations à venir quand j'aurai un peu plus de temps.

Quelques liens pertinents :

Comparatifs :

Quelques langages destinés à la JVM :

LuaJIT

La machine virtuelle LuaJIT se veut une machine virtuelle à haute performance pour le langage Lua.

Metascala

Projet de machine virtuelle métacirculaire en Scala, avec les sources.

Parrot

La machine virtuelle Parrot est une machine virtuelle à registres ayant entre autres la vocation de prendre en charge des programmes écrits dans des langages dynamiques (bien qu'elle supporte plusieurs autres types de langages). En particulier, elle est a été pensée pour exécuter les programmes Perl 6. Quelques liens :

Sol

Une toute petite machine virtuelle, à code ouvert.

Zend

La machine virtuelle supportant PHP 7.

Z-Machine

La machine virtuelle sur laquelle s'exécutait (entre autres) le jeu Zork.

Série d'articles par Eric Lippert en 2016, alors qu'il expérimente avec OCaml pour écrire sa propre version du jeu Zork, destiné à s'exécuter sur une Z-Machine :

Émulateurs

Une thématique connexe à celle des machines virtuelles est celle des émulateurs, des programmes qui simulent un matériel existant et offre une forme de virtualisation pour, par exemple, permettre l'exécution de logiciels plus anciens sur du matériel plus contemporain.

Quelques liens sur ce sujet :

MAME est un projet remarquable, qui sert en quelque sorte de musée de la connaissance en permettant aux oeuvres logicielles du passé de continuer à exister. Ce projet est entre les mains de Miodrag Milanović au moment d'écrire ces lignes

Certaines entreprises n'apprécient pas que l'on écrive des émulateurs pour leurs vieux binaires. À ce sujet :

Une pratique connexe à l'émulation est ce qu'on nomme en anglais le Rehosting. Cette pratique va comme suit : à partir d'un binaire, étudier les entrées et les sorties et comprendre le binaire comme une boîte noire qu'il est possible d'intégrer à un système plus complexe. Texte de 2003 par Peter Phillips et George Phillips décrivant le Rehosting : http://queue.acm.org/detail.cfm?id=945155


Valid XHTML 1.0 Transitional

CSS Valide !