Virtualization support for application runtime specialization and extension

Guillermo Polito · 2015

Virtualisation pour spécialisation et extension d'environnements d'exécution Un environnement d'exécution est l'ensemble des éléments logiciels qui représentent une application pendant son exécution. Les environnements d'exécution doivent être adaptables à différents contextes. Les progrès des technologies de l'information, tant au niveau logiciel qu'au niveau matériel, rendent ces adaptations nécessaires. Par exemple, nous pouvons envisager d'étendre un langage de programmation pour améliorer la productivité des développeurs. Aussi, nous pouvons envisager de réduire la consommation mémoire des applications de manière transparente afin de les adapter à certaines contraintes d'exécution e.g., des réseaux lents ou de la mémoire limités. Nous proposons Espell, une infrastructure pour la virtualisation d'environnement d'éxécution de langages orienté-objets haut-niveau. Espell fournit une infrastructure généraliste pour le contrôle et la manipulation d'environnements d'exécution pour différentes situations. Une représentation de "premier-ordre" de l'environnement d'exécution orienté-objet, que nous appelons "object space", fournit une interface haut-niveau qui permet la manipulation de ces environnements et clarifie le contrat entre le langage et la machine virtuelle. Un hyperviseur est client d'un object space et le manipule soit directement au travers d'objets "miroirs", soit en y exécutant des expressions arbitraires. Nous avons implémenté un prototype de Espell sur Pharo. Nous montrons au travers de notre prototype que cet infrastructure supporte le "bootstrapping" (i.e., l'amorçage ou initialisation circulaire) des langages et le "tailoring"~(i.e., la construction sur-mesure ou "taille") d'environnement d'exécution. En utilisant l'amorçage nous initialisons un langage orienté-objet haut-niveau qui est auto-décrit. Un langage amorcé profite de ses propres abstractions se montrant donc plus simple à étendre. Nous avons amorcé quatre langages qui présentent des modèles de programmation différents e.g., avec des "traits", avec des variables d'instance de 'premier-ordre' ou avec une couche réflexive basé sur le concept de "miroirs". La taille d'environnements d'exécution est une technique qui génère une application spécialisé en extrayant seulement le code utilisé pendant l'exécution d'un programme. Une application taillée inclut seulement les classes et méthodes qu'elle nécessite, et évite que des librairies et des frameworks externes surchargent inutilement la base de code. Notre technique de taille basé sur Espell, que nous appelons "run-fail-grow" (i.e., exécuter-échouer-grandir), créé des versions spécialisées des applications, en sauvant entre un 95% et 99% de la mémoire en comparaison avec la distribution officielle de Pharo.

Read the paper · More papers on PaperTik