Clone or download
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
PolyImp Use "reference" paths to components in Windows installer. Dec 16, 2015
PolyML Change the VC project to use the Windows version of the X86/64 pre-bu… May 27, 2016
PolyPerf Change Visual Studio platform to v140_xp Dec 13, 2015
Tests Remove print from test. It spoils the output. Dec 1, 2018
basis Copy some of Real.fromDecimal into Real32. Nans at least need to be h… Nov 22, 2018
documentation Add Word16 structure written by Domagoj Stolfa derived from the Word8… Oct 23, 2018
imports Build pre-built compilers for 5.7.1. Nov 18, 2017
interruptpoly Remove old Visual Studio 6 project files. Jun 23, 2015
libpolymain Build updated configure for last change to configure.ac. Dec 8, 2017
libpolyml Remove tests for isnanf and instead use std::isnan. Fix problem with … Nov 24, 2018
m4 Reorganise configure scripts so that there is a separate script for l… Dec 3, 2017
mlsource When using the narrow context for flexible records they should only b… Dec 1, 2018
modules Build updated configure for last change to configure.ac. Dec 8, 2017
samplecode Add back to the example test programs for the FFI that were removed w… Apr 30, 2018
wininstall Update version information for 5.7.1 release. Nov 18, 2017
.gitattributes Add export-ignore entries so archives don't include .gitattributes an… Nov 26, 2017
.gitignore Create new Visual Studio Projects for VS2015 Dec 3, 2015
COPYING Additions and updates to Poly/ML version 5 beta 1. Sep 26, 2006
Makefile.am Move configuration of polyc to libpolyml/configure.ac but use a separ… Dec 6, 2017
Makefile.in Build updated configure for last change to configure.ac. Dec 8, 2017
PolyML.exe.manifest Enable Visual Styles for Windows GUI Mar 11, 2016
PolyML.rc Update version information for 5.7.1 release. Nov 18, 2017
PolyML.sln Update VS project files after moving libffi. Dec 3, 2017
README.md Adds installation instructions for source and OS X Mar 11, 2016
Root.ML Add an optimiser phase to the Icode to handle booleans and conditionals. Nov 17, 2018
RootInterpreted.ML Clean up some build files and modify the code-generator for the recen… Jul 31, 2017
compile Update configure which seemed to be out of synch and add ./compile fr… Dec 3, 2017
config.guess Reorganise configure scripts so that there is a separate script for l… Dec 3, 2017
config.h.in Remove tests for isnanf and instead use std::isnan. Fix problem with … Nov 24, 2018
config.sub Reorganise configure scripts so that there is a separate script for l… Dec 3, 2017
configure Remove tests for isnanf and instead use std::isnan. Fix problem with … Nov 24, 2018
configure.ac Remove tests for isnanf and instead use std::isnan. Fix problem with … Nov 24, 2018
depcomp Reorganise configure scripts so that there is a separate script for l… Dec 3, 2017
exportPoly.sml Remove CInterface since it's now been superseded. Dec 15, 2017
install-sh Reorganise configure scripts so that there is a separate script for l… Dec 3, 2017
ltmain.sh Reorganise configure scripts so that there is a separate script for l… Dec 3, 2017
missing Reorganise configure scripts so that there is a separate script for l… Dec 3, 2017
poly.1 Update version information for 5.7.1 release. Nov 18, 2017
poly.ico Additions and updates to Poly/ML version 5 beta 1. Sep 26, 2006
polyc.1 Update version information for 5.7.1 release. Nov 18, 2017
polyc.in More robust shell script: allow spaces in directory names. Dec 18, 2017
polyexports.h Merge branch 'master' into CodeChanges Aug 8, 2016
polyimport.1 Update version information for 5.7.1 release. Nov 18, 2017
polyimport.c Fix type of lpCmdLine argument to WinMain. Aug 26, 2015
polyml.pyp Add an optimiser phase to the Icode to handle booleans and conditionals. Nov 17, 2018
polymlInterpreted.pyp Add Real32 to the basis build. Oct 31, 2018
polystatistics.h Convert the statistics produced by the run-time system to use an ASN1… May 18, 2013
resource.h Additions and updates to Poly/ML version 5 beta 1. Sep 26, 2006
winconfig.h Restore endif deleted in last commit. Oct 30, 2018

README.md

Poly/ML logo

Poly/ML

Poly/ML is a Standard ML implementation originally written in an experimental language called Poly. It has been fully compatible with the ML97 standard since version 4.0. For a full history, see here.

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.

Table of Contents

Features

  • Fast compiler
  • Preferred implementation for large projects such as Isabelle and HOL.
  • Foreign function interface - allows static and dynamic libraries to be loaded in Poly/ML and exposes their functions as Poly/ML functions. See here for an example of static linking.
  • Symbolic debugger
  • Windows programming interface
  • Thread 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.

Basis

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.

Platforms and Installation

Poly/ML has native support for i386 (32- and 64-bit) and bytecode support for unsupported architectures. For more information, see the download page.

Debian/Ubuntu

$ apt-get install polyml

OS X

$ brew install polyml

FreeBSD

$ cd /usr/ports/lang/polyml && make install

Git

To build:

$ ./configure
$ make
$ make compiler
$ make install

To clean:

$ make clean-local clean distclean

Support

Support for Poly/ML can be found on Stackoverflow using the polyml and sml tags or on the Poly/ML mailing list provided by the University of Edinburgh.