Mercury
=======

[Mercury](https://www.mercurylang.org/) 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](https://www.mercurylang.org/about.html),
in other README files in the source code repository, and in the
[documentation](https://www.mercurylang.org/documentation/documentation.html).

Small sample programs written in Mercury can be found
in the [samples](samples) and [extras](extras) directories
of the source code repository.

## README files

The Mercury compiler has two different
[backends](https://www.mercurylang.org/about/backends.html)
and works on different operating systems.
Specific information is contained in individual README files in the
[Documentation](Documentation) directory:

  * [Bootstrapping](Documentation/README.bootstrap) discusses
    how to get Mercury installed.

    This is important, as the Mercury compiler is written in Mercury.

  * C Low-level backend

    This backend works well with GCC but also works with:

      * [Clang](Documentation/README.clang.md)

  * High-level backend targets

      * C
      * [C#](Documentation/README.CSharp.md)
      * [Java](Documentation/README.Java.md)

  * Supported operating systems

      * [Linux](Documentation/README.Linux.md)
        ([AArch64](Documentation/README.Linux-aarch64.md),
        [PPC](Documentation/README.Linux-PPC.md),
        [m68k](Documentation/README.Linux-m68k.md))
      * [macOS](Documentation/README.macOS.md)
      * [FreeBSD](Documentation/README.FreeBSD.md)
      * [OpenBSD](Documentation/README.OpenBSD.md)
      * [AIX](Documentation/README.AIX.md)
      * [HP-UX](Documentation/README.HPUX.md)
      * [Solaris](Documentation/README.Solaris.md)
      * [Windows](Documentation/README.MS-Windows.md)
        ([Visual C](Documentation/README.MS-VisualC.md),
        [MSYS2](Documentation/README.MSYS2.md),
        [Cygwin](Documentation/README.Cygwin.md))

  * Other platform information
      * [Cross compilation](Documentation/README.cross.md)
      * [Docker](Documentation/README.Docker.md)
      * [x86](Documentation/README.x86.md)

## Other information

See the current [release notes](RELEASE_NOTES) for the latest stable release.
The [news](NEWS.md) file lists any recent changes.
The files in the Documentation directory
whose names start with `NEWS` are relevant
if you want to find out more about the past development of Mercury.
The [limitations](LIMITATIONS.md) file lists some 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](https://www.mercurylang.org/development/contributions.html) and
[specific information](https://www.mercurylang.org/development/developer.html)
about contributing such as coding styles.

## Contact

See [our contact page](https://www.mercurylang.org/contact.html).
