Langages fonctionnels, typage et interopérabilité : objective Caml sur .net
Institution:
Paris 7Disciplines:
Directors:
Abstract EN:
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 vérifiable. 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 effïciency and clarity/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. Wc 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.
Abstract FR:
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 clarté/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 iNET avec les programmes Objective Caml originaux.