Langages fonctionnels, typage et interopérabilité : Objective Caml sur .NET - TEL - Thèses en ligne Access content directly
Theses Year : 2007

Functional languages, typing and interoperability: Objective Caml on .NET

Langages fonctionnels, typage et interopérabilité : Objective Caml sur .NET

Raphaël Montelatici
  • Function : Author
  • PersonId : 829794

Abstract

The .NET platform is a modern, widespread execution environment, based on a virtual machine that interprets a typed bytecode. It claims to be perfectly suitable for running components written in many different programming languages and to allow a seamless interoperation between them.
Being a statically typed functional language with parametric polymorphism, Objective Caml has features that are quite challenging to the .NET runtime and its type system. We test the fit in a practical setting by designing and implementing OCamIL, a full-fledged compiler for Objective Caml producing verifiable .NET bytecode. It primarily aims at compatibility and interoperability.
This work questions the capabilities of the .NET platform as much as the adequacy of the official Objective Caml implementation (which is designed for an untyped runtime and discards type information early in the compilation chain). We discuss the representation of Caml values and compare two strategies: rebuilding and propagating the missing type information. Other design choices described here illustrate the trade-off between efficiency and readibility/interoperability.
We achieve interoperability by means of an Interface Description Language that closes the gap between the two distinct class systems of Objective Caml and .NET's underlying type system. We give non-trivial examples showing the benefits of interoperability.
As for performance, OCamIL proves competitive with other .NET compilers for functional languages. We also compare .NET executables with the original Objective Caml programs.
La plate-forme .NET est un environnement d'exécution moderne et répandu, reposant sur une machine virtuelle qui interprète du code-octet typé. Elle prétend être parfaitement adaptée à l'exécution de composants écrits dans une grande variété de langages de programmation et faciliter leur interopération.
En tant que langage fonctionnel statiquement typé avec polymorphisme paramétrique, Objective Caml présente des caractéristiques qui défient l'environnement d'exécution .NET et son système de types. Nous expérimentons ces difficultés dans un cadre pratique, par la conception et l'implantation de OCamIL, un compilateur complet pour Objective Caml qui produit du code-octet .NET vérifiable. Ses objectifs principaux sont la compatibilité et la possibilité d'interopérer.
Ce travail met à l'épreuve les capacités de la plate-forme .NET autant que l'adéquation de l'implantation officielle de Objective Caml dans un tel projet (celle-ci est conçue pour un environnement d'exécution dénué de types ce qui explique qu'elle élimine les informations de types assez tôt dans la chaîne de compilation). Nous examinons la représentation des valeurs Caml et comparons deux stratégies : la reconstruction et la propagation de l'information de typage manquante. D'autres choix de conception décrits ici illustrent le compromis entre efficacité d'une part et lisibilité/interopérabilité de l'autre.
Nous réalisons l'interopérabilité à l'aide d'un langage de description d'interface IDL qui construit un pont entre les deux systèmes de classes distincts utilisés par Objective Caml et l'environnement typé de .NET. Les bénéfices de l'interopération sont illustrés par des exemples non-triviaux.
Au chapitre des performances, OCamIL occupe une place respectable au sein des compilateurs de langages fonctionnels sur .NET. Nous comparons également les exécutables .NET avec les programmes Objective Caml originaux.
Fichier principal
Vignette du fichier
these.pdf (1.8 Mo) Télécharger le fichier
soutenance.ps (2.29 Mo) Télécharger le fichier
Format : Other

Dates and versions

tel-00154790 , version 1 (14-06-2007)

Identifiers

  • HAL Id : tel-00154790 , version 1

Cite

Raphaël Montelatici. Langages fonctionnels, typage et interopérabilité : Objective Caml sur .NET. Génie logiciel [cs.SE]. Université Paris-Diderot - Paris VII, 2007. Français. ⟨NNT : ⟩. ⟨tel-00154790⟩
119 View
115 Download

Share

Gmail Facebook X LinkedIn More