Standard ML C Emacs Lisp TeX Makefile Lex Other
Clone or download
MatthewFluet Merge pull request #271 from MatthewFluet/unused-var-warnings
Remove unused functions

Uses of these functions were removed by b068814.
Latest commit 678049e Jun 13, 2018
Permalink
Failed to load latest commit information.
basis-library Merge pull request #267 from richardmunson/Sequence_Refactor Jun 1, 2018
benchmark Merge branch 'master' of github.com:MLton/mlton into parse-ssa May 18, 2018
bin Merge branch 'master' of github.com:MLton/mlton into parse-ssa May 18, 2018
doc Update link to C-- on CMinusMinus page May 30, 2018
ide Replace `labels` with `cl-labels` Jun 10, 2018
include Merge branch 'master' of github.com:MLton/mlton into parse-ssa May 18, 2018
lib Add `Vector.toListKeepAllMapi` Jun 8, 2018
man Merge branch 'master' of github.com:MLton/mlton into parse-ssa May 18, 2018
mllex Merge branch 'master' of github.com:MLton/mlton into parse-ssa May 18, 2018
mlnlffigen Merge branch 'master' of github.com:MLton/mlton into parse-ssa May 18, 2018
mlprof Merge branch 'master' of github.com:MLton/mlton into parse-ssa May 18, 2018
mlton Remove unused functions Jun 13, 2018
mlyacc Merge branch 'master' of github.com:MLton/mlton into parse-ssa May 18, 2018
package Merge branch 'master' of github.com:MLton/mlton into parse-ssa May 18, 2018
regression corrected real ok files to conform with convention Jun 11, 2018
runtime Refactored Real.*{+,-} to use C99 fma{f,} functions Jun 7, 2018
util/cm2mlb Merge branch 'master' of github.com:MLton/mlton into parse-ssa May 18, 2018
.gitignore Update `./gitignore` Jan 31, 2018
.travis.yml Update TravisCI; OSX is slow, don't run regressions Feb 2, 2018
CHANGELOG.adoc Note `functor ParseSsa` in CHANGELOG.adoc May 18, 2018
Dockerfile Drop `apt-get install autotools` from `./Dockerfile` Feb 1, 2018
LICENSE Merge branch 'master' of github.com:MLton/mlton into parse-ssa May 18, 2018
Makefile Merge branch 'master' of github.com:MLton/mlton into parse-ssa May 18, 2018
Makefile.binary Set `LIB_REL_BIN` in `mlton` script when installing Feb 15, 2018
README.adoc Minor updates to `./README.adoc` and Features page Feb 5, 2018

README.adoc

MLton

Build Status

MLton is a whole-program optimizing compiler for the Standard ML programming language.

Features

  • Portability. Runs on the following platforms:

    • ARM: Linux (Debian).

    • Alpha: Linux (Debian).

    • AMD64: Darwin (Mac OS X), FreeBSD, Linux (Debian, Fedora, Ubuntu, …​), OpenBSD, Solaris (10 and above).

    • HPPA: HPUX (11.11 and above), Linux (Debian).

    • IA64: HPUX (11.11 and above), Linux (Debian).

    • PowerPC: AIX (5.2 and above), Darwin (Mac OS X), Linux (Debian, Fedora).

    • PowerPC64: AIX (5.2 and above).

    • S390: Linux (Debian).

    • Sparc: Linux (Debian), Solaris (8 and above).

    • X86: Cygwin/Windows, Darwin (Mac OS X), FreeBSD, Linux (Debian, Fedora, Ubuntu, …​), MinGW/Windows, NetBSD, OpenBSD, Solaris (10 and above).

  • Robustness.

    • Supports the full SML 97 language as given in The Definition of Standard ML (Revised).

    • A complete implementation of the Basis Library.

    • Generates standalone executables.

    • Compiles large programs.

    • Support for large amounts of memory (up to 4G on 32-bit systems; more on 64-bit systems).

    • Support for large array lengths (up to 231 - 1 on 32-bit systems; up to 263-1 on 64-bit systems).

    • Support for large files, using 64-bit file positions.

  • Performance.

    • Executables have excellent running times.

    • Generates small executables.

    • Untagged and unboxed native integers, reals, and words.

    • Unboxed native arrays.

    • Multiple garbage collection strategies.

    • Fast arbitrary-precision arithmetic based on the GMP.

  • Tools.

    • Source-level profiling for both time and allocation.

    • MLLex lexer generator.

    • MLYacc parser generator.

    • MLNLFFIGEN foreign-function-interface generator.

  • Extensions.

    • A simple and fast C FFI that supports calling from SML to C and from C to SML.

    • The ML Basis system for programming in the very large.

    • Libraries for continuations, finalization, interval timers, random numbers, resource limits, resource usage, signal handlers, object size, system logging, threads, weak pointers, and world save and restore.

Build and Install (from source)

Requirements

Software

  • GCC or Clang (The C compiler must support -std=gnu11.)

  • GMP (GNU Multiple Precision arithmetic library)

  • GNU Make

  • GNU Bash

  • binutils (ar, ranlib, strip, …​)

  • miscellaneous Unix utilities (diff, find, grep, gzip, patch, sed, tar, xargs, …​)

  • Standard ML compiler and tools to bootstrap:

    • MLton (mlton, mllex, and mlyacc) recommended. Pre-built binary packages for MLton can be installed via an OS package manager or (for select platforms) obtained from http://mlton.org.

    • SML/NJ (sml, ml-lex, ml-yacc) supported, but not recommended.

  • (optional, for documentation only) TeX, AsciiDoc, Pygments, GraphicsMagick or ImageMagick, …​

Hardware

  • ≥ 1GB RAM (for 32-bit platforms) or ≥ 2GB RAM (for 64-bit platforms)

Build Instructions

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

$ make all

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

  • CC: Specify C compiler. Can be used for alternative tools (e.g., CC=clang or CC=gcc-7).

  • WITH_GMP_DIR, WITH_GMP_INC_DIR, WITH_GMP_LIB_DIR: Specify GMP include and library paths, if not on default search paths. (If WITH_GMP_DIR is set, then WITH_GMP_INC_DIR defaults to $(WITH_GMP_DIR)/include and WITH_GMP_LIB_DIR defaults to $(WITH_GMP_DIR)/lib.)

  • MLTON_RUNTIME_ARGS, MLTON_COMPILE_ARGS: Specify runtime and compile arguments given to (the to-be-built) mlton when compiling distributed executables ((self-compiled) mlton, mllex, mlyacc, mlprof, and mlnlffigen). Can be used for testing (e.g., MLTON_COMPILE_ARGS="-codegen c") or for downstream packaging.

  • BOOTSTRAP_MLTON_RUNTIME_ARGS, BOOTSTRAP_MLTON_COMPILE_ARGS: Specify runtime and compile arguments given to "old" mlton when compiling "bootstrapped" mlton. Can be used to work around bugs in "old" mlton when compiling "bootstrapped" mlton.

For example:

$ 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:

$ make docs

Install Instructions

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

$ make install

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

  • PREFIX: Specify the installation prefix.

For example:

$ make PREFIX=/opt/mlton install

Install (from binary package)

Requirements

Software

  • GCC or Clang (The C compiler must support -std=gnu11.)

  • GMP (GNU Multiple Precision arithmetic library)

  • GNU Make

  • GNU Bash

  • miscellaneous Unix utilities (bzip2, gzip, sed, tar, …​)

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:

  • CC: Specify C compiler. Can be used for alternative tools (e.g., CC=clang or CC=gcc-7).

  • WITH_GMP_DIR, WITH_GMP_INC_DIR, WITH_GMP_LIB_DIR: Specify GMP include and library paths, if not on default search paths. (If WITH_GMP_DIR is set, then WITH_GMP_INC_DIR defaults to $(WITH_GMP_DIR)/include and WITH_GMP_LIB_DIR defaults to $(WITH_GMP_DIR)/lib.)

For example:

$ 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:

$ make install

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

  • PREFIX: Specify the installation prefix.

For example:

$ make PREFIX=/opt/mlton install

Resources

Need help? Found a bug?

Submit an issue if you need any help. We welcome pull requests with bug fixes or changes.