Poly/ML is a Standard ML implementation originally written in an experimental
language called [Poly](http://www.polyml.org/Doc.html#poly). It has been fully compatible with the [ML97 standard](http://sml-family.org/sml97-defn.pdf)
since version 4.0. For a full history, see [here](http://www.polyml.org/FAQ.html#history).
Poly/ML takes a conservative approach to the Standard ML language and avoids incompatible extensions. It has added various library extensions particularly the thread library. Poly/ML's active development and unique features make it an exceptional implementation.
- Fast compiler
- Preferred implementation for large projects such as IsabelleandHOL. Foreign function interface- allows static and dynamic libraries to be loaded in Poly/ML and exposes their functions as Poly/ML functions. Seeherefor an example of static linking.Symbolic debuggerWindows programming interfaceThread library- provides a simplified version of Posix threads modified for Standard ML and allows Poly/ML programs to make use of multiple cores. The garbage collector is also parallelised.
The documentation for the Poly/ML Basis library can be found here and includes information on global values and types as well as structures, signatures and functors. More in-depth documentation can be found at
the SML Family website here. Poly/ML has native support for i386 (32- and 64-bit) and ARM (64-bit only). It will also work on other architectures using a byte-code interpreter. For more information, see the download page.
There is a mailing list for Poly/ML for questions and support.