MLton / mlton

The MLton repository
http://mlton.org
Other
960 stars 127 forks source link
compiler functional-programming mlton sml standard-ml

= http://mlton.org[MLton]

ifdef::env-github[] image:https://github.com/MLton/mlton/actions/workflows/ci.yml/badge.svg[CI, link = https://github.com/MLton/mlton/actions/workflows/ci.yml] endif::[]


MLton is a whole-program optimizing compiler for the Standard{nbsp}ML programming language. MLton generates small executables with excellent runtime performance, utilizing untagged and unboxed native integers, reals, and words, unboxed native arrays, fast arbitrary-precision arithmetic based on GMP, and multiple code generation and garbage collection strategies. In addition, MLton provides a feature rich Standard{nbsp}ML programming environment, with full support for SML97 as given in The Definition of Standard{nbsp}ML (Revised), a number of useful language extensions, a complete implementation of the Standard ML Basis Library, various useful libraries, a simple and fast C foreign function interface, the ML Basis system for programming with source libraries, and tools such as a lexer generator, a parser generator, and a profiler.


== Features

== Build and Install (from source)

=== Requirements

==== Software

==== Hardware

=== Build Instructions

On typical platforms, building MLton requires no configuration and can be accomplished via:

[source,shell]

$ make all

A small set of Makefile variables can be used to customize the build:

For example:

[source,shell]

$ make CC=clang WITH_GMP_DIR=/opt/gmp MLTON_COMPILE_ARGS="-codegen c" all

The build artifacts are located under ./build. The just-built mlton can be executed via ./build/bin/mlton.

Building documentation can be accomplished via:

[source,shell]

$ make docs

=== Install Instructions

On typical platforms, installing MLton (after performing make all and, optionally, make docs) to /usr/local can be accomplished via:

[source,shell]

$ make install

A small set of Makefile variables can be used to customize the installation:

For example:

[source,shell]

$ make PREFIX=/opt/mlton install

== Install (from binary package)

=== Requirements

==== Software

=== Binary Package

A .tgz or .tbz binary package can be extracted at any location, yielding README.adoc (this file), CHANGELOG.adoc, LICENSE, Makefile, bin/, lib/, and share/. The compiler and tools can be executed in-place (e.g., ./bin/mlton).

A small set of Makefile variables can be used to customize the binary package via make update:

For example:

[source,shell]

$ make CC=clang WITH_GMP_DIR=/opt/gmp update

=== Install Instructions

On typical platforms, installing MLton (after optionally performing make update) to /usr/local can be accomplished via:

[source,shell]

$ make install

A small set of Makefile variables can be used to customize the installation:

For example:

[source,shell]

$ make PREFIX=/opt/mlton install

== Resources

== Support and Contributing

To report bugs or suggest new features, use the https://github.com/MLton/mlton/issues[issue tracker] or ask on the mailto:mlton-user@mlton.org[mailing list].

https://github.com/MLton/mlton/pulls[Pull requests] with bug fixes or changes are welcome.