Standard ML C++ C Shell Assembly OCaml Other
Clone or download
dcjm Make sure locked mutables from the permanent mutable areas are not ad…
…ded to the sharing chains.

The GC sharing pass needs to scan the permanent mutable areas for the addresses of cells to
share but must not add them to the sharing chains if they have been locked.
Latest commit 04ba183 Jul 9, 2018
Permalink
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 Fix load of 32-bit value from C-memory in 64-bit mode. This was broke… May 4, 2018
basis Fix Posix lseek by using the correct dispatch call number. Feb 12, 2018
documentation Update documentation. Update references to the int type and remove re… Dec 18, 2017
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 Make sure locked mutables from the permanent mutable areas are not ad… Jul 9, 2018
m4 Reorganise configure scripts so that there is a separate script for l… Dec 3, 2017
mlsource Fix load of 32-bit value from C-memory in 64-bit mode. This was broke… May 4, 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 Split out the concrete register allocation step. Sep 22, 2017
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 Rebuilt configure for RISC-V. Jul 4, 2018
config.sub Reorganise configure scripts so that there is a separate script for l… Dec 3, 2017
configure Rebuilt configure for RISC-V. Jul 4, 2018
configure.ac Add support for RISC-V Jun 30, 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 Split out the concrete register allocation step. Sep 22, 2017
polymlInterpreted.pyp Clean up some build files and modify the code-generator for the recen… Jul 31, 2017
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 Add autoconf check for endian-ness and update winconfig.h. Jun 9, 2016

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.