Skip to content
The MLton repository
Branch: master
Clone or download
MatthewFluet Merge pull request #295 from MatthewFluet/bug-294
Fix bug in simplification of `x -? x`

A cut-n-paste error had `x -? x` returning `0`, rather than `false`.

Closes #294 (introduced by 11c33d8).
Latest commit fcd55d0 Apr 4, 2019
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
basis-library Generalize `Word_negCheckP of WordSize.t` to `Word_negCheckP of WordS… Mar 22, 2019
benchmark Merge branch 'master' of github.com:MLton/mlton into parse-ssa May 18, 2018
bin Add `gc-collect2` regression test for bug in MLton.GC.collect Mar 11, 2019
doc Update USERS with Heron project Feb 2, 2019
ide
include Remove unused `/runtime/basis/Word/Word-consts.h` file Mar 21, 2019
lib Occurrences of `(*` in string constants do not start comments Feb 17, 2019
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 Filter mlton_lib in mlnlffigen to only necessary structures Oct 31, 2018
mlprof Merge branch 'master' of github.com:MLton/mlton into parse-ssa May 18, 2018
mlton Fix bug in simplification of `x -? x` Apr 4, 2019
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 Add `gc-collect2` regression test for bug in MLton.GC.collect Mar 11, 2019
runtime
util/cm2mlb Merge branch 'master' of github.com:MLton/mlton into parse-ssa May 18, 2018
.gitignore Un-ignore vim configuration files Aug 14, 2018
.travis.yml Cleanup whitespace/formatting Nov 26, 2018
CHANGELOG.adoc Merge pull request #286 from MatthewFluet/useless-updates Jan 3, 2019
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 Drop extraneous newline in `README.adoc` Nov 26, 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.

You can’t perform that action at this time.