The Mercury logic programming system.
Switch branches/tags
version-14_01_1 version-14_01 version-13_05_2 version-13_05_1 version-13_05 version-12_08-branchpoint version-12_08-GIT version-11_07_2 version-11_07_1 version-11_07 version-11_07-branchpoint version-11_01 version-11_01-branchpoint version-10_04_2 version-10_04_1 version-10_04 version-10_04-branchpoint version-0_13_1 version-0_13-branchpoint version-0_12_2 version-0_12_1 version-0_12-branchpoint version-0_11_0 version-0_11-branchpoint version-0_10 version-0_9_1 version-0_9 version-0_9_x-snapshot version-0_9_x-snapshot-19991220 unstable-version-0_13_1-x86_64-unknown-linux-gnu-libc2_3 unstable-version-0_13_1-i686-pc-linux-libc2_3-gnu-O5-intermod unstable-version-0_13-branch-x86_64-unknown-linux-gnu-libc2_3 unstable-version-0_13-branch-i686-pc-linux-libc2_3-gnu-O5-intermod unstable-version-0_12_2-i686-pc-linux-libc2_2-gnu-O5-intermod unstable-version-0_12_2-i386-pc-solaris2_8 unstable-version-0_12_1-i686-pc-linux-libc2_3-gnu-O4-intermod unstable-version-0_12_1-i686-pc-linux-libc2_3-gnu-O2 unstable-version-0_12_1-i686-pc-linux-libc2_2-gnu-O5-intermod unstable-version-0_12_1-i386-pc-solaris2_8 unstable-version-0_12-branch-i686-pc-linux-libc2_3-gnu-O5 unstable-version-0_12-branch-i686-pc-linux-libc2_3-gnu-O4-intermod unstable-version-0_12-branch-i686-pc-linux-libc2_3-gnu-O4-hlc unstable-version-0_12-branch-i686-pc-linux-libc2_3-gnu-O2 unstable-version-0_12-branch-i686-pc-linux-libc2_2-gnu-O5 unstable-version-0_12-branch-i686-pc-linux-libc2_2-gnu-O5-intermod unstable-version-0_12-branch-i686-pc-linux-libc2_2-gnu-O3 unstable-version-0_12-branch-i386-pc-solaris2_8 unstable-version-0_11_0-sparc-sun-solaris2_7 unstable-version-0_11_0-i686-pc-linux-libc2_3-gnu-O5-intermod unstable-version-0_11_0-i686-pc-linux-libc2_2-gnu-O5 unstable-version-0_11_0-i686-pc-linux-libc2_2-gnu-O5-lcc unstable-version-0_11_0-i686-pc-linux-libc2_2-gnu-O5-hlc unstable-version-0_11_0-i686-pc-linux-libc2_1-gnu-O4 unstable-version-0_11_0-i686-pc-linux-libc2_1-gnu-O4-asm unstable-version-0_11_0-i686-pc-linux-libc2_1-gnu-O3 unstable-version-0_11_0-i386-pc-solaris2_8 unstable-version-0_11-branch-i686-pc-linux-libc2_3-gnu-O5-intermod unstable-version-0_11-branch-i686-pc-linux-libc2_2-gnu-O5-intermod unstable-version-0_11-branch-i686-pc-linux-libc2_2-gnu-O5-hlc unstable-version-0_11-branch-i686-pc-linux-libc2_1-gnu-O5 unstable-version-0_11-branch-i686-pc-linux-libc2_1-gnu-O5-lcc unstable-version-0_11-branch-i686-pc-linux-libc2_1-gnu-O5-intermod unstable-version-0_11-branch-i686-pc-linux-libc2_1-gnu-O5-hlc unstable-version-0_11-branch-alpha-dec-osf5_1 unstable-version-0_10_y-sparc-sun-solaris2_7 unstable-version-0_10_y-i686-pc-linux-libc2_1-gnu-O5 unstable-version-0_10_y-i686-pc-linux-libc2_1-gnu-O5-lcc unstable-version-0_10_y-i686-pc-linux-libc2_1-gnu-O5-intermod unstable-version-0_10_y-i686-pc-linux-libc2_1-gnu-O5-hlc unstable-version-0_10_y-i686-pc-linux-libc2_1-gnu-O4 unstable-version-0_10_y-i686-pc-linux-libc2_1-gnu-O4-hlc unstable-version-0_10_y-i686-pc-linux-libc2_1-gnu-O2 unstable-version-0_10_y-i586-pc-linux-libc2_1-gnu-O0 unstable-version-0_10_y-alpha-dec-osf5_1 unstable-version-0_10_y-alpha-dec-osf3_2 unstable-version-0_10_x-sparc-sun-solaris2_7 unstable-version-0_10_x-i686-pc-linux-libc2_1-gnu-O5 unstable-version-0_10_x-i686-pc-linux-libc2_1-gnu-O5-lcc unstable-version-0_10_x-i686-pc-linux-libc2_1-gnu-O4 unstable-version-0_10_x-i686-pc-linux-libc2_1-gnu-O4-hlc unstable-version-0_10_x-i686-pc-linux-libc2_1-gnu-O3 unstable-version-0_10_x-i686-pc-linux-libc2_1-gnu-O2 unstable-version-0_10_x-i586-pc-linux-libc2_1-gnu-O0 unstable-version-0_10_x-alpha-dec-osf3_2 termination2_trunk stable-version-0_11_0-i686-pc-linux-libc2_3-gnu-O5-intermod stable-version-0_11_0-i686-pc-linux-libc2_2-gnu-O5 stable-version-0_11_0-i686-pc-linux-libc2_2-gnu-O5-lcc stable-version-0_11_0-i686-pc-linux-libc2_2-gnu-O5-hlc stable-version-0_11_0-i686-pc-linux-libc2_1-gnu-O4 stable-version-0_11_0-i686-pc-linux-libc2_1-gnu-O4-asm stable-version-0_11_0-i686-pc-linux-libc2_1-gnu-O3 stable-version-0_11-branch-i686-pc-linux-libc2_3-gnu-O5-intermod stable-version-0_11-branch-i686-pc-linux-libc2_2-gnu-O5-lcc stable-version-0_11-branch-i686-pc-linux-libc2_2-gnu-O5-intermod stable-version-0_11-branch-i686-pc-linux-libc2_1-gnu-O5 stable-version-0_11-branch-i686-pc-linux-libc2_1-gnu-O5-lcc stable-version-0_11-branch-i686-pc-linux-libc2_1-gnu-O5-intermod stable-version-0_11-branch-i686-pc-linux-libc2_1-gnu-O5-hlc stable-version-0_11-branch-alpha-dec-osf5_1
Nothing to show
Clone or download
zsomogyi Warn about non-contiguous clauses in the Mercury system by default.
    Require the installed compiler to have the recent bug fix to
    contiguity warnings, since without that bug fix, we get warnings
    for code that is actually perfectly ok.

    Specify both --warn-non-contiguous-clauses and
    --warn-non-contiguous-foreign-procs as the default in each directory.

    Disable the warnings for exception.m and io.m, which are have not
    been cleaned up yet wrt these warnings.
Latest commit 1f8d8ae Nov 14, 2018
Failed to load latest commit information.
benchmarks Update code in benchmarks. Apr 26, 2016
bindist Move licensing information to separate file. Aug 16, 2017
boehm_gc @ b08a6f1 Upgrade Boehm GC to v7.6.6, plus a patch (again) May 12, 2018
browser Warn about non-contiguous clauses in the Mercury system by default. Nov 14, 2018
bytecode Compile everything with --halt-at-warn-if-possible. Aug 2, 2018
compiler Warn about non-contiguous clauses in the Mercury system by default. Nov 14, 2018
deep_profiler Warn about non-contiguous clauses in the Mercury system by default. Nov 14, 2018
doc Improve the transition guide. Nov 7, 2018
extras Fix bitrot in extras. Jul 6, 2018
grade_lib Fix some comments and simplify some code. Oct 23, 2018
java/runtime Fix minor documentation problems. Oct 9, 2018
library Warn about non-contiguous clauses in the Mercury system by default. Nov 14, 2018
m4 Support editline as an alternative to GNU readline. Jun 19, 2018
mdbcomp Warn about non-contiguous clauses in the Mercury system by default. Nov 14, 2018
mfilterjavac Warn about non-contiguous clauses in the Mercury system by default. Nov 14, 2018
profiler Warn about non-contiguous clauses in the Mercury system by default. Nov 14, 2018
robdd Shut up some warnings in the robdd directory. Sep 1, 2015
runtime Fix minor documentation problems. Oct 9, 2018
samples Initialise standard library in standalone Java example. Nov 9, 2018
scripts Add a --halt-at-warn-if-possible option to mgnuc. Jul 29, 2018
slice Warn about non-contiguous clauses in the Mercury system by default. Nov 14, 2018
ssdb Warn about non-contiguous clauses in the Mercury system by default. Nov 14, 2018
tests Add array.swap/4 and array.unsafe_swap/4. Nov 12, 2018
tools Add ad-hoc profiling for module name to file name translations. Oct 21, 2018
trace Fix minor documentation problems. Oct 9, 2018
util Delete unnecessary foreign_exported procedures. Sep 28, 2016
vim Improve vim syntax highlighting. Sep 1, 2018 Mention editline in INSTALL file. Jun 23, 2018 Remove "Australia" from location of home site in README Nov 13, 2018
.gitignore [net] Impement a Mercury interface to getaddrinfo Apr 7, 2015
.gitmodules Upgrade Boehm GC to 7.6.0 Sep 22, 2016
.nocopyright Support OpenBSD. Mar 1, 2018
BUGS Update email addresses and URLs. Apr 24, 2013
COPYING Added a copy of the GPL. Mar 20, 1995
COPYING.LIB Update the COPYING.LIB file and references to it. Jun 9, 2018
HISTORY Fix minor documentation problems. Oct 9, 2018
INSTALL.git Improve the robustness of the INSTALL scripts. Apr 21, 2017
LICENSE Update the COPYING.LIB file and references to it. Jun 9, 2018
LIMITATIONS Clearly explain what part of partial instantiation isn't supported. Mar 18, 2014
Makefile Tell vim not to expand tabs in Makefiles. Jan 8, 2015
Makefile.DLLs Introduce two new directories, trace and browser, containing libraries Sep 29, 1998 Pass compiler flags to build bdwgc for musl. Sep 21, 2017
Mmake.workspace Fix some minor make annoyances. Aug 25, 2015
Mmakefile Make tags in trace as well as in other directories. Feb 16, 2018
NEWS Add array.swap/4 and array.unsafe_swap/4. Nov 12, 2018
README.AIX Fix and update README files. Jan 5, 2015
README.CSharp Bump the minimum requirements for the C# backend. Jan 4, 2018
README.Cygwin Fix and update README files. Jan 5, 2015
README.Erlang Update status of Erlang backend. Sep 28, 2016
README.FreeBSD Shared libraries work on FreeBSD. Oct 18, 2015
README.HPUX Minor rewording of README.{AIX,HPUX}. Jun 16, 2014
README.Java Bump the minimum version of Java required. Oct 8, 2017
README.Linux Remove documentation for --cross-compiling option. Mar 27, 2015
README.Linux-Alpha Move the patch for making the GNU assembler into the configuration sc… Dec 22, 1998
README.Linux-PPC Fix spelling and double up words. Jul 14, 2010
README.Linux-m68k Port to Linux-m68k. A lot of this work was done by Roman Hodek, Oct 2, 1998
README.MS-VisualC Note problems with recent versions of MS Visual Studio and Windows SDK. Jul 24, 2018
README.MS-Windows Add instructions for MSYS2 environment with MinGW-w64. Aug 31, 2015
README.MacOS Make mdb interactive queries work on OS X. Aug 21, 2015
README.MinGW Fix a spelling error in README.MinGW: Sep 3, 2015
README.MinGW-cross Fix instructions for finishing cross-compiler installation. Oct 18, 2015
README.OpenBSD Support OpenBSD. Mar 1, 2018
README.Solaris Merge late changes from the 0.13 branch onto the main branch. Sep 15, 2006
README.ThreadScope Make a note that ThreadScope support is currently broken. May 5, 2013
README.bootstrap Update instructions for building from git. Mar 31, 2016
README.clang Mention that Mercury works with clang on Windows. Oct 3, 2011 Support OpenBSD. Mar 1, 2018
README.sanitizers Support building with AddressSanitizer and UndefinedBehaviorSanitizer. Oct 13, 2016
README.ssdebug Add option --ssdb-trace which allows one to control which modules are… Jul 19, 2012
RELEASE_NOTES Fix some minor errors in the release notes. Jan 4, 2015
RESERVED_MACRO_NAMES Remove support for the MPS garbage collector. Aug 5, 2014
VERSION Revert my earlier change to VERSION Jan 3, 2014
config.guess Update config.guess and config.sub. Aug 31, 2015
config.sub Update config.guess and config.sub. Aug 31, 2015 Warn about non-contiguous clauses in the Mercury system by default. Nov 14, 2018
install-sh Use an autoconf-generated configure script rather than manual configu… May 12, 1995
mercury.snk Sign the all the assemblies in the csharp grade. Nov 22, 2012 Use nested submodules to include boehm_gc/libatomic_ops Oct 19, 2015


Mercury is a logic/functional programming language which combines the clarity and the expressiveness of declarative programming with advanced static analysis and error detection features.

More information is available on the website's about pages, in other README files in the source code repository, and in the documentation.

README files

The Mercury compiler has a number of different backends and works on different operating systems. Specific information is contained in individual README files:

Other information

See the current release notes for the latest stable release. The history file is relevant if you want to find out more about the past development of Mercury. News lists any current or future enhancements (but this isn't always up-to-date). The limitations file lists a number of ways in which the Mercury implementation does not yet meet its goals.

Information for developers

If you are considering contributing to the Mercury project the website contains some documents that may be helpful. These include a document about contributions in general and specific information about contributing such as coding styles.


See our contact page.