Git Product home page Git Product logo

The Glasgow Haskell Compiler

pipeline status

This is the source tree for GHC, a compiler and interactive environment for the Haskell functional programming language.

For more information, visit GHC's web site.

Information for developers of GHC can be found on the GHC issue tracker, and you can also view proposals for new GHC features.

Getting the Source

There are two ways to get a source tree:

  1. Download source tarballs

    Download the GHC source distribution:

    ghc-<version>-src.tar.xz
    

    which contains GHC itself and the "boot" libraries.

  2. Check out the source code from git

    $ git clone --recurse-submodules [email protected]:ghc/ghc.git
    

    Note: cloning GHC from Github requires a special setup. See Getting a GHC repository from Github.

See the GHC team's working conventions regarding how to contribute a patch to GHC. First time contributors are encouraged to get started by just sending a Merge Request.

Building & Installing

For full information on building GHC, see the GHC Building Guide. Here follows a summary - if you get into trouble, the Building Guide has all the answers.

Before building GHC you may need to install some other tools and libraries. See, Setting up your system for building GHC.

NB. In particular, you need GHC installed in order to build GHC, because the compiler is itself written in Haskell. You also need Happy, Alex, and Cabal. For instructions on how to port GHC to a new platform, see the GHC Building Guide.

For building library documentation, you'll need Haddock. To build the compiler documentation, you need Sphinx and Xelatex (only for PDF output).

Quick start: GHC is built using the Hadrian build system. The following gives you a default build:

$ ./boot
$ ./configure
$ hadrian/build         # can also say '-jX' for X number of jobs

On Windows, you need an extra repository containing some build tools. These can be downloaded for you by configure. This only needs to be done once by running:

$ ./configure --enable-tarballs-autodownload

Additionally, on Windows, to run Hadrian you should run hadrian/build.bat instead of hadrian/build.

(NB: Do you have multiple cores? Be sure to tell that to hadrian! This can save you hours of build time depending on your system configuration, and is almost always a win regardless of how many cores you have. As a simple rule, you should have about N+1 jobs, where N is the amount of cores you have.)

The ./boot step is only necessary if this is a tree checked out from git. For source distributions downloaded from GHC's web site, this step has already been performed.

These steps give you the default build, which includes everything optimised and built in various ways (eg. profiling libs are built). It can take a long time. To customise the build, see the file HACKING.md.

Filing bugs and feature requests

If you've encountered what you believe is a bug in GHC, or you'd like to propose a feature request, please let us know! Submit an issue and we'll be sure to look into it. Remember: Filing a bug is the best way to make sure your issue isn't lost over time, so please feel free.

If you're an active user of GHC, you may also be interested in joining the glasgow-haskell-users mailing list, where developers and GHC users discuss various topics and hang out.

Hacking & Developing GHC

Once you've filed a bug, maybe you'd like to fix it yourself? That would be great, and we'd surely love your company! If you're looking to hack on GHC, check out the guidelines in the HACKING.md file in this directory - they'll get you up to speed quickly.

Governance and Acknowledgements

GHC is a community project developed by a team of highly-talented researchers, individual contributors, and full-time developers. We are indebted to the many people whose work has brought GHC to its current state.

Some larger decisions are made by a smaller group of core contributors, as described in our governance documentation.

Glasgow Haskell Compiler's Projects

ghc icon ghc

Mirror of the Glasgow Haskell Compiler. Please submit issues and patches to GHC's Gitlab instance (https://gitlab.haskell.org/ghc/ghc). First time contributors are encouraged to get started with the newcomers info (https://gitlab.haskell.org/ghc/ghc/wikis/contributing).

ghc-diffs icon ghc-diffs

Staging area for testing of Phabricator Differentials via CircleCI

ghc-tarballs icon ghc-tarballs

Mirror of ghc-tarballs repository. DO NOT SUBMIT PULL REQUESTS HERE

git-sandbox icon git-sandbox

Git sandbox (mirror of http://git.haskell.org/git-sandbox.git)

gmp-tarballs icon gmp-tarballs

Mirror of gmp-tarballs repository. DO NOT SUBMIT PULL REQUESTS HERE

haddock icon haddock

Mirror of haddock repository. DO NOT SUBMIT PULL REQUESTS HERE. Use http://github.com/haskell/haddock instead!

hsc2hs icon hsc2hs

Mirror of hsc2hs repository. DO NOT SUBMIT PULL REQUESTS HERE

libffi-tarballs icon libffi-tarballs

Mirror of libffi-tarballs repository. DO NOT SUBMIT PULL REQUESTS HERE

nofib icon nofib

Mirror of nofib repository. DO NOT SUBMIT PULL REQUESTS HERE

packages-array icon packages-array

Mirror of packages-array repository. DO NOT SUBMIT PULL REQUESTS HERE

packages-base icon packages-base

Mirror of packages-base repository. DO NOT SUBMIT PULL REQUESTS HERE

packages-binary icon packages-binary

Mirror of packages-binary repository. DO NOT SUBMIT PULL REQUESTS HERE

packages-cabal icon packages-cabal

Mirror of packages-Cabal repository. DO NOT SUBMIT PULL REQUESTS HERE. Use https://github.com/haskell/cabal instead.

packages-containers icon packages-containers

Mirror of packages-containers repository. DO NOT SUBMIT PULL REQUESTS HERE. Use https://github.com/haskell/containers instead.

packages-deepseq icon packages-deepseq

Mirror of packages-deepseq repository. DO NOT SUBMIT PULL REQUESTS HERE. Use https://github.com/haskell/deepseq instead.

packages-directory icon packages-directory

Mirror of packages-directory repository. DO NOT SUBMIT PULL REQUESTS HERE. Use https://github.com/haskell/directory instead.

packages-dph icon packages-dph

Mirror of packages-dph repository. DO NOT SUBMIT PULL REQUESTS HERE

packages-filepath icon packages-filepath

Mirror of packages-filepath repository. DO NOT SUBMIT PULL REQUESTS HERE. Use http://github.com/haskell/filepath instead.

packages-hoopl icon packages-hoopl

Mirror of packages-hoopl repository. DO NOT SUBMIT PULL REQUESTS HERE

packages-hpc icon packages-hpc

Mirror of packages-hpc repository. DO NOT SUBMIT PULL REQUESTS HERE

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.