Survol de l'implémentation de Caml Light
Le système Caml Light comprend:
- Un système interactif, basé sur une boucle de
lecture-évaluation-impression: l'utilisateur entre une phrase, le
système la compile et l'exécute au vol, puis imprime le résultat de
l'évaluation. Le système interactif est excellent pour apprendre le
langage et tester ses programmes.
- Un compilateur indépendant et un éditeur de liens,
camlc
, avec une interface sur la ligne de commande
similaire à celle des compilateurs C. Le compilateur produit des
programmes exécutables qui sont lancés comme toutes les autres
commandes du système. Il s'intègre harmonieusement avec
l'environnement Unix (make, Emacs, ...).
- Une bibliothèque de taille moyenne, offrant bon nombre de
fonctions d'usage général et l'implémentation de quelques structures
de données essentielles (listes, tableaux, tables de hachage, ensembles, ...).
- Un outil pour construire ses propres bibliothèques de modules.
- Un générateur d'analyseurs lexicaux et syntaxiques, dans le style
de
lex
et yacc
.
- Des outils de programmation variés:
- Un débogueur au niveau source avec la possibilité de retour en
arrière dans l'exécution (``voyage dans le temps).
- Un navigateur hypertexte sur les modules sources.
- Un mode d'édition Emacs simple, plus la possibilité de lancer
un interprète ou le débogueur sous Emacs.
- La recherche de fonctions par leurs types.
Cliquez ici pour plus de détails.
- Plusieurs bibliothèques d'interface:
- Une interface graphique basée sur Tk.
- Des primitives graphiques portables (simples tracés de lignes et de
textes).
- Une interface avec les appels système Unix.
- Une bibliothèque d'arithmétique rationnelle en précision
arbitraire (extrêmement efficace).
- Une bilbiothèque offrant des opérations de haut niveau sur les
chaînes de caractères (expressions régulières, ...).
Disponibilité
Caml Light est distribué gratuitement pour des usages non
commerciaux. Cliquez ici
pour transférer le système.
Caml Light est disponible sur les machines suivantes:
- La plupart des machines Unix. Nous avons testé la distribution
actuelle sur les machines suivantes, mais on nous a signalé qu'elle
marchait sur beaucoup d'autres machines:
- DecStation 3000/300 sous OSF/1 2.0.
- Sun Sparcstation 10 sous SunOS 4.1.
- DecStation 5000/200 sous Ultrix 4.1.
- 486 PC sous Linux 1.2.6
- N'importe quel Macintosh avec au moins 2M de RAM et le Système 6 ou 7.
- N'importe quel PC sous Window 95, Windows NT, et Windows 3.1
pourvu que l'utilitaire de compatibilité
Win32s
soit installé.
- N'importe quelle machine Atari ST avec au moins 2M de RAM.
Matériel nécessaire
Caml Light est implémenté par un compilateur de code par octets (bytecode)
(il produit du code pour une machine abstraite, qui est ensuite interprété
par un programme C), c'est pourquoi le système est petit, portable et
frugal (pas de gros besoins en mémoire). Le support à l'exécution
(la partie écrite en C) fait environ 100k, plus encore 100k de code
par octets pour le compilateur.
Le compilateur lui-même est écrit en Caml et ``autogène'' -- compilé
par lui-même.
Deux mégaoctets de mémoire suffisent pour recompiler tout le
système. Les autres implémentations de ML nécessitent souvent au moins
dix fois plus de mémoire. Les programmes exécutables produits sont
également très compacts.
Performances
Du fait de l'interprétation du code par octets, les programmes
produits par Caml Light tournent à peu près 10 fois plus lentement que
les programmes produits par les meilleurs compilateurs vers le code
natif. Si cette différence est marquée pour les programmes qui font
beaucoup d'opérations arithmétiques et de boucles, elle s'atténue
nettement pour les programmes symboliques.
Grâce à ses besoins mémoire restreints, les programmes Caml Light
démarrent instantanément et ne posent pas de problèmes avec la mémoire
virtuelle. Avec l'avantage supplémentaire d'une récupération mémoire à
générations et incrémentale, les programmes Caml Light interactifs
sont très prompts à réagir, sans arrêts intempestifs au milieu d'une
interaction avec l'utilisateur.
Le compilateur Caml Light est si petit et si simple qu'il
compile très vite (plus de 200 lignes par seconde sur une station de
travail moderne), beaucoup plus vite en fait que les compilateurs qui
produisent du code natif. En phase de développement d'un logiciel,
cette rapidité de compilation compense largement la perte de vitesse
d'exécution des programmes produits.
Pour la même raison, le système interactif est remarquablement rapide.
Portabilité
Caml Light est entièrement écrit en C et en Caml. Les seules
hypothèses sont: une architecture 32 ou 64-bits, avec un espace
d'adressage à plat; un compilateur C de bonne qualité (ANSI ou K &
R); et le sous-système POSIX d'Unix.