A Language and Execution Platform-agnostic Framework for Polyglot Development

Type de soutenance
Thèse
Date de début
Date de fin
Salle
Amphithéâtre Inria
Orateur
Philémon HOUDAILLE (KHORA)
Département principal
Sujet

Résumé :
À mesure que les applications logicielles modernes gagnent en ampleur et en complexité, elles sont confrontées à une grande diversité de problématiques. Pour répondre à cette diversité, la programmation polyglotte s'est imposée comme une solution. Plutôt que de développer une application avec un seul langage, il est possible de combiner différents langages afin d'obtenir la réponse la plus adaptée à chaque problème du système, en tirant parti des spécificités de chacun. Cependant, la programmation polyglotte engendre une complexité accrue, car elle exige des développeurs une connaissance approfondie de l'hétérogénéité sémantique de chaque langage, ainsi que des interactions entre eux. Les outils d'analyse de programmes permettent d'atténuer cette complexité et ont été étudiés dans un contexte polyglotte, mais ils se concentrent généralement sur l'implémentation de combinaisons de langages spécifiques ou sont limités à une plateforme d'exécution polyglotte particulière. Cette thèse explore les avantages et les limites d'un cadre de développement polyglotte indépendant du langage et de la plateforme d'exécution, dont les outils sont génériques et compatibles avec tous les langages et toutes les plateformes sous-jacentes.

En établissant un cadre d'opérations polyglottes communes aux plateformes d'exécution polyglottes, nous modélisons les interactions polyglottes génériques au sein des programmes. À partir de là, nous créons un cadre pour le développement polyglotte via la mise en place d'outils d'analyse de programmes. Nous explorons l'application pratique de notre cadre à travers trois cas d'usage. Nous développons d'abord une approche pour créer un arbre de syntaxe abstraite unifié des programmes polyglottes, permettant l'analyse statique pour les outils d'édition de code (tels que les linters ou les outils de navigation dans le code). Nous proposons ensuite une approche pour le débogage des programmes polyglottes, avec PolyDebug, e
lyglot pron tirant parti des débogueurs existants de chaque écosystème. Enfin, nous explorons une approche pour un contrôle précis des scénarios d'exécution entre les langages, dans le contexte des systèmes de programmation dynamique basés sur des exemples, grâce au langage dédié LivEx. Pour chaque cas, nous évaluons notre contribution en examinant l'effort d'implémentation nécessaire pour étendre nos outils à de nouveaux langages et plateformes d'exécution, en analysant le code source et en discutant de l'architecture globale.

Ces applications démontrent la faisabilité de notre cadre et de notre approche pour développer des outils polyglottes indépendants du langage et de la plateforme d'exécution. Elles mettent également en évidence les avantages et les limites d'un tel cadre, ouvrant ainsi de nouvelles perspectives pour le développement polyglotte dans la recherche en génie logiciel

 

 

Abstract :

As modern software applications grow ever larger in scope and scale, they also grow more complex and encounter a high diversity of various concerns that need to be addressed. To answer this diversity, one solution that has appeared over the years is polyglot programming. Rather than building an application using only one software language, different languages can be combined and mixed to provide the most adapted answer to any given problem within the system being built, leveraging the specialities of each language. However polyglot programming comes at a cost in complexity, as it requires developers to be aware of the heterogeneity of the semantics of each software language, as well as the semantics of the cross-language interactions. Program analysis tools can be used to mitigate this complexity and have been studied in polyglot contexts, but mostly focus on implementing specific language combinations, or are limited to a specific polyglot execution platform on which they rely. This dissertation investigates the benefits and limitations of a language and execution platform-agnostic framework for polyglot development, where tooling support is generic both of languages and underlying execution platforms.

 

By establishing a framework of polyglot operations common across polyglot execution platforms, we are able to model generic polyglot interactions within programs. From this we establish a framework to support polyglot development via the creation of program analysis tools. We explore the practical application of our framework over three use-cases. We first develop an approach to create a unified abstract syntax tree of polyglot programs, to allow static analysis in the case of code editing tools (such as linter or code navigation tools). We then propose an approach to support debugging of polyglot programs, with PolyDebug by leveraging individual existing debuggers from each language's established ecosystem. Finally, we explore an approach to provide fine-control over execution scenarios across languages in the context of example-based live programming systems, through the LivEx domain-specific language. Each time we evaluate our contribution by examining the required implementation effort to extend our tools to support both new languages and new execution platforms, by looking at source lines of code and discussing the overall architecture.

 

These applications showcase the feasibility of applying our framework and approach to develop language-agnostic, execution platform-agnostic polyglot tooling. It also highlights both the benefits and limitations of such an agnostic framework, which opens new perspectives for the support of polyglot development in software engineering research.

 

 


 
Composition du jury
Rapporteur :
- Jean-Rémy FALLERI, Professeur, Bordeaux INP, LaBRI, Bordeaux, FRANCE
- Robert HIRSCHFELD, Professor, Hasso Plattner Institute, University of Potsdam, Potsdam, GERM
Examinateur :
- Jean-Marc JEZEQUEL, Professeur, Univ. Rennes, Rennes, FRANCE
- Mira MEZINI, Full Professor, TU Darmstadt, Darmstadt, ALLEMAGNE
- Thomas WUERTHINGER, Ph.D - VP, Oracle, Zürich, SUISSE
Directeur de thèse :
- Benoit COMBEMALE, Directeur de Recherche, Inria, IRISA, Univ. Rennes, Rennes, FRANCE
Co-encadrant de thèse :
- Djamel-Eddine KHELLADI, Chargé de Recherche, CNRS, IRISA, Univ. Rennes, Rennes, FRANCE
- Gunter MUSSBACHER, Associate Professor, McGill University, Montréal, CANADA