Poly/ML: una implementación madura de Standard ML con compilador rápido y depurador simbólico

Fuentes: Poly/ML: a fast, standards-compliant Standard ML implementation with threading and FFI

Poly/ML es una implementación del lenguaje de programación Standard ML escrita originalmente en un lenguaje experimental llamado Poly. Desde la versión 4.0 es totalmente compatible con el estándar ML97 y mantiene un enfoque conservador, evitando extensiones incompatibles con la especificación. El proyecto añade, no obstante, bibliotecas propias, en particular una completa biblioteca de hilos.

Entre sus características destacadas figuran un compilador rápido, una interfaz de funciones externas (FFI) que permite cargar bibliotecas estáticas y dinámicas y exponer sus funciones como funciones Poly/ML, y un depurador simbólico. También ofrece una interfaz de programación para Windows y una biblioteca de hilos basada en una versión simplificada de los hilos POSIX, adaptada a Standard ML y capaz de aprovechar múltiples núcleos; el recolector de basura está igualmente paralelizado.

Poly/ML es la implementación preferida en proyectos de gran envergadura como el demostrador de teoremas Isabelle y el sistema HOL. Dispone de soporte nativo para arquitecturas i386 (32 y 64 bits) y ARM (64 bits), y puede funcionar en otras arquitecturas mediante un intérprete de código de bytes. El proyecto se distribuye con documentación de la biblioteca Basis y canales de soporte a través de una lista de correo.