Poly/ML ist eine sehr schnelle Implementation von Standard ML 97. Interessante Besonderheit (abgesehen von der Performance): das System orientiert sich weitaus stärker an Lisp-Systemen als an klassischen Kommandozeilencompilern. Man hat eine interaktive Arbeitsumgebung und ein Image das automatisch bei Beenden der Session gespeichert wird und somit alle Definitionen beim nächsten Lauf wieder verfügbar macht.
Der Vorteil dieser Arbeitsweise ist einfach das man sich sein System im Laufe der Zeit immer besser anpasst an die eigenen Bedürfnisse. Zusammen mit dem FFI und externen Libraries kann man sich so nach und nach eine schöne Umgebung zusammenstellen die genau für die anvisierten Ziele optimiert ist. Ausserdem spart man sich oft extra Objekt-Datenbanken: man speichert Werte (bzw. im Falle von ML dann Strukturen) einfach im Image und behält sie dort.
Dadurch das Poly/ML das Image einfach mittels mmap in den Adressraum hängt und nicht erst liest und später wieder schreibt ist das ganze auch recht fix - bei Image-Systemen stört ja häufig der Systemstart.
Oh, und Poly/ML läuft übrigens problemlos unter OS X ...
Die Geschwindigkeit des Compilers setzt sich leider im generierten Code nicht unbedingt fort, wie man aus diesem Vergleich sehen kann. Aber ähnlich wie bei OpenMCL ist die schnelle Umgebung gerade beim Prototyping durchaus von Vorteil. Man kann ja hinterher einen Compiler ansetzen der zwar länger braucht, aber dafür dann besser optimierten Code ausspuckt wie MLTon.