The Mercury logic programming system.
Mercury C HTML Makefile M4 Shell Other
Latest commit 7231df1 Feb 20, 2017 @zsomogyi zsomogyi Simplify hlds_dependency_graph.m.
compiler/hlds_dependency_graph.m:
    Make module_info_ensure_dependency_info return the dependency info,
    so that the caller does not have to get it separately.

    Simplify the type class used in the module: make it cover only the
    operation used in traversing goals. Making it cover the operations
    used in traversing predicates as well takes more code and adds more
    complexity than it saves.

    Rewrite the code that traverses predicates to avoid code duplication.
    The tests for whether a predicate or procedure should be processed
    used to be duplicated, and in one case the duplication was imperfect,
    i.e. two different pieces of code implicitly made inconsistent assumptions
    about each other. Rewriting the code so that code that adds arcs to the
    digraph accepts the decisions of the code that added the nodes to the
    digraph eliminates this problem.

    Factor out the common code for adding a new edge to the digraph.

    Traversing a predicate or procedure does not guarantee that we will add it
    to the digraph as a node. To reflect this, add a "maybe" prefix to the
    names of the affected predicates.

    Put related predicates next to each other.

compiler/closure_analysis.m:
compiler/deep_profiling.m:
compiler/deforest.m:
compiler/exception_analysis.m:
compiler/inlining.m:
compiler/rbmm.interproc_region_lifetime.m:
compiler/rbmm.points_to_analysis.m:
compiler/stratify.m:
compiler/structure_reuse.indirect.m:
compiler/structure_sharing.analysis.m:
compiler/tabling_analysis.m:
compiler/termination.m:
compiler/trailing_analysis.m:
compiler/tupling.m:
    Conform to the first change above.
Permalink
Failed to load latest commit information.
benchmarks Update code in benchmarks. Apr 26, 2016
bindist Copyright notices for 2017. Jan 2, 2017
boehm_gc @ 81ac175 Update boehm_gc submodule. Oct 13, 2016
browser Make --warn-unused-imports the default for the Mercury system. Jan 18, 2017
bytecode Tell vim not to expand tabs in Makefiles. Jan 8, 2015
compiler Simplify hlds_dependency_graph.m. Feb 20, 2017
deep_profiler Make some previously incomplete switches complete. Jan 22, 2017
doc Add a new compiler option --inform-incomplete-switch. Feb 19, 2017
extras Avoid deprecated predicates in extras/error Jan 19, 2017
grade_lib Add field names to grade_vars. Apr 25, 2016
java/runtime Add a builtin unsigned word sized integer type -- Part 1. Oct 24, 2016
library Make each SCC in the dependency graph a set, not a list. Feb 19, 2017
m4 Bump the minimum version of Java required. Oct 10, 2016
mdbcomp Make --warn-unused-imports the default for the Mercury system. Jan 18, 2017
mfilterjavac Make --warn-unused-imports the default for the Mercury system. Jan 18, 2017
profiler Make --warn-unused-imports the default for the Mercury system. Jan 18, 2017
robdd Shut up some warnings in the robdd directory. Sep 1, 2015
runtime Fix grammar in comment. Jan 6, 2017
samples Update concurrency samples. Oct 2, 2016
scripts Fix mmake's .i target Oct 20, 2016
slice Make --warn-unused-imports the default for the Mercury system. Jan 18, 2017
ssdb Make --warn-unused-imports the default for the Mercury system. Jan 18, 2017
tests Fix missing word in error message. Feb 19, 2017
tools Add $mmake_opts to mmake invocations where it was missing. Oct 7, 2016
trace Copyright notices for 2017. Jan 2, 2017
util Delete unnecessary foreign_exported procedures. Sep 28, 2016
vim Highlight more C keywords in vim. Jan 30, 2017
.INSTALL.in Reduce the number of publicly documented base grades. Apr 16, 2015
.README.in Copyright notices for 2017. Jan 2, 2017
.gitignore [net] Impement a Mercury interface to getaddrinfo Apr 7, 2015
.gitmodules Upgrade Boehm GC to 7.6.0 Sep 22, 2016
.nocopyright Add mercury.snk to .nocopyright. Nov 22, 2012
BUGS Update email addresses and URLs. Apr 24, 2013
COPYING Added a copy of the GPL. Mar 20, 1995
COPYING.LIB Update the README file, and add the LGPL to the CVS archive. Mar 28, 1995
HISTORY Move 13.05.X NEWS into HISTORY. Jan 7, 2014
INSTALL.git Update instructions for building from git. Mar 31, 2016
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
Mmake.common.in Support building with AddressSanitizer and UndefinedBehaviorSanitizer. Oct 13, 2016
Mmake.workspace Fix some minor make annoyances. Aug 25, 2015
Mmakefile Rename the top-level of the compiler. Feb 17, 2016
NEWS Document underscores in numeric literals. Jan 16, 2017
README.AIX Fix and update README files. Jan 5, 2015
README.CSharp Update README files for non-C backends. Feb 18, 2016
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 10, 2016
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 Fix and update README files. Jan 5, 2015
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.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
README.md Fix an incomplete sentence in README.md: Jan 5, 2015
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
configure.ac Check bootstrap compiler supports uints. Nov 1, 2016
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
prepare.sh Use nested submodules to include boehm_gc/libatomic_ops Oct 19, 2015

README.md

Mercury

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.

Contact

See our contact page.