Poly/ML: una implementación de Standard ML rápida y compatible con el estándar ML97

Fuentes: Poly/ML: a fast, standard-compliant Standard ML implementation

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 mantiene plena compatibilidad con el estándar ML97 y adopta un enfoque conservador, evitando extensiones incompatibles con la norma, aunque incorpora bibliotecas adicionales, en particular una biblioteca de hilos (threads).

El proyecto destaca por su compilador rápido, lo que lo convierte en la implementación preferida para proyectos de gran envergadura como el demostrador de teoremas Isabelle y HOL. Entre sus funcionalidades principales se encuentra una interfaz de funciones externas (FFI) que permite cargar bibliotecas estáticas y dinámicas y exponer sus funciones dentro de Poly/ML; un depurador simbólico; una interfaz de programación para Windows; y una biblioteca de hilos que simplifica el uso de pthreads adaptado a Standard ML, con un recolector de basura paralelizado que posibilita el aprovechamiento de múltiples núcleos.

Poly/ML ofrece soporte nativo para las arquitecturas i386 (32 y 64 bits) y ARM (64 bits), además de funcionar en otras arquitecturas mediante un intérprete de código de bytes. Su documentación incluye la biblioteca Basis —con información sobre valores, tipos, estructuras, signaturas y functores— y vínculos al sitio de la familia SML para material más detallado. El código está disponible en GitHub y dispone de una lista de correo de soporte.

Consideraciones: se trata de una herramienta especializada, orientada a lenguajes de programación funcionales y verificación formal, por lo que su público objetivo son desarrolladores e investigadores que trabajan con Standard ML, Isabelle u HOL. Como alternativa dentro del ecosistema SML existen otras implementaciones como Standard ML of New Jersey (SML/NJ) o Moscow ML.