Bootstrap-Based Language Development: Turning an existing VM into a polyglot VM - INRIA - Institut National de Recherche en Informatique et en Automatique Accéder directement au contenu
Thèse Année : 2021

Bootstrap-Based Language Development: Turning an existing VM into a polyglot VM

Développement de langages basé l’amorçage

Résumé

Programming languages need to evolve as software requirements change, but their prototyping and extension comes at the cost of great development efforts. Reflective languages which are able to modify their own semantics provide a high-level approach to language implementation. While easy to use, the reflective approach has a limited range of languages it can produce, because modifications to core system elements can break circular references and leave the system in an inconsistent state. To overcome this limitation the system’s kernel architecture must be re-built in a bootstrap process. Bootstrap has been shown effective to produce a family of similar languages. However, adapting an existing bootstrap implementation to generate new languages is challenging. This difficulty is caused by a lack of proper abstractions for language specification and, similarly to other techniques, a late manifestation of errors together with abstraction leaps during debugging tasks. In this dissertation, we study the design of a bootstrap-based language development technique that supports the generation of multiple languages with low effort. For this, we introduce MetaL, a bootstrapping framework where language specification is based on metamodels and high-level reflective initialization instructions. A Meta-Object Protocol (MOP) that is aware of VM constraints keeps the abstraction level high, providing operations to build the model of the language and then the kernel. Our MOP ensures model correctness by construction and ensures kernel health, detecting corruption early during the generation process. To validate our approach, we report on the successful generation of seven object-oriented language kernels, plus an experiment by an external user. These experiments show that MetaL: (i) removes the need for expertise with virtual machines,(ii) reduces the abstraction gap in debugging tasks, (iii) it is positively perceived as meeting the need for easy-to-use bootstrapping solutions, and (iv) it is applicable in real world scenarios. Nevertheless, this experience also shows that using the metamodel for language specification hinders code reuse since a semantic feature implementation is spread across multiple metamodel classes. To solve the previous limitation we propose using Aspect-Oriented Programming (AOP) to bootstrap. For this, we implemented AspectMetaL, an aspect-oriented layer on top of MetaL that allows language specification at the level of semantic features. To validate AspectMetaL, we generated 3 kernels by combining both predefined and custom semantic features, learning that AOP is effective for improving code reuse and rising the abstraction level for language specification in bootstrap.
Les langages de programmation doivent évoluer au fur et à mesure que les exigences des logiciels changent, mais leur prototypage et leur extension se font au prix de grands efforts de développement. Les langages réflectifs, qui sont capables de modifier leur propre sémantique, offrent une approche de haut niveau pour l’implémentation des langages. Bien que facile à utiliser, l’approche réflexive ne peut produire qu’une gamme limitée de langages, car les modifications apportées aux éléments centraux du système peuvent briser les références circulaires et laisser le système dans un état incohérent. Pour surmonter cette limitation, l’architecture du noyau du système doit être reconstruite avec un processus d’amorçage (bootstrap). Cette technique s’est avérée efficace pour produire une famille de langages similaires. Cependant, l’adaptation d’une implémentation de bootstrap existante pour générer de nouveaux langages est un défi. Cette difficulté est due à un manque d’abstractions appropriées pour la spécification des langages et, comme pour d’autres techniques, à une manifestation tardive des erreurs avec des sauts d’abstraction pendant les tâches de débogage. Dans cette thèse, nous étudions la conception d’une technique de développement de langages basée sur le bootstrap qui permet de générer plusieurs langages avec peu d’efforts. Pour cela, nous introduisons MetaL, un cadriciel d’amorçage où la spécification du langage est basée sur des métamodèles et des instructions d’initialisation réflectives de haut niveau. Un Meta-Object Protocol (MOP) réifie les contraintes de la machine virtuelle (VM) et assure un niveau d’abstraction élevé, fournissant des opérations pour construire un modèle de langage et ensuite un noyau. Notre MOP garantit la correction du modèle par construction et assure la cohérence du noyau, en détectant la corruption au début du processus de génération. Pour valider notre approche, nous rapportons la génération réussie de sept noyaux de langages orientés objet, ainsi qu’une expérience par un utilisateur externe. Ces expériences montrent que MetaL: (i) supprime le besoin d’expertise sur la VM (ii) réduit le fossé d’abstraction dans les tâches de débogage, (iii) est perçu positivement comme répondant au besoin de solutions d’amorçage faciles à utiliser, (iv) est applicable dans des scénarios du monde réel. Néanmoins, cette expérience montre également que l’utilisation du métamodèle pour la spécification du langage entrave la réutilisation du code, car l’implémentation d’une fonctionnalité sémantique est répartie sur plusieurs classes du métamodèle. Pour résoudre cette limitation, nous proposons AspectMetaL, une couche orientée aspect (POA) au dessus de MetaL qui permet de spécifier un langage au niveau des fonctionnalités sémantiques. Pour valider AspectMetaL, nous avons généré 3 noyaux en combinant des caractéristiques sémantiques prédéfinies et personnalisées. Nous avons ainsi pu montrer que la POA est efficace pour améliorer la réutilisation du code et augmenter le niveau d’abstraction pour la spécification du langage.
Fichier principal
Vignette du fichier
HernPhDThesis.pdf (3.64 Mo) Télécharger le fichier
Origine : Fichiers produits par l'(les) auteur(s)

Dates et versions

tel-03511998 , version 1 (05-01-2022)

Identifiants

  • HAL Id : tel-03511998 , version 1

Citer

Carolina Hernández Phillips. Bootstrap-Based Language Development: Turning an existing VM into a polyglot VM. Computer Science [cs]. Université de Lille; IMT Lille Douai, 2021. English. ⟨NNT : ⟩. ⟨tel-03511998⟩
99 Consultations
100 Téléchargements

Partager

Gmail Facebook X LinkedIn More