• Stars
    star
    2,936
  • Rank 14,810 (Top 0.4 %)
  • Language
    Haskell
  • License
    Other
  • Created about 13 years ago
  • Updated 3 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

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).

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.

Contributors & Acknowledgements

GHC in its current form wouldn't exist without the hard work of its many contributors. Over time, it has grown to include the efforts and research of many institutions, highly talented people, and groups from around the world. We'd like to thank them all, and invite you to join!

More Repositories

1

packages-base

Mirror of packages-base repository. DO NOT SUBMIT PULL REQUESTS HERE
Haskell
38
star
2

haddock

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

testsuite

Mirror of testsuite repository. OBSOLETE. DO NOT SUBMIT PULL REQUESTS HERE
Haskell
15
star
4

nofib

Mirror of nofib repository. DO NOT SUBMIT PULL REQUESTS HERE
Haskell
12
star
5

packages-dph

Mirror of packages-dph repository. DO NOT SUBMIT PULL REQUESTS HERE
Haskell
11
star
6

packages-ghc-prim

Mirror of packages-ghc-prim repository. DO NOT SUBMIT PULL REQUESTS HERE
Haskell
8
star
7

hadrian

The Hadrian build system for GHC
Haskell
8
star
8

hsc2hs

Mirror of hsc2hs repository. DO NOT SUBMIT PULL REQUESTS HERE
Haskell
8
star
9

packages-haskeline

Mirror of packages-haskeline repository. DO NOT SUBMIT PULL REQUESTS HERE
Haskell
8
star
10

packages-Cabal

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

packages-process

Mirror of packages-process repository. DO NOT SUBMIT PULL REQUESTS HERE. Use https://github.com/haskell/process instead.
Haskell
8
star
12

packages-unix

Mirror of packages-unix repository. DO NOT SUBMIT PULL REQUESTS HERE. Use https://github.com/haskell/unix instead.
Haskell
7
star
13

packages-template-haskell

Mirror of packages-template-haskell repository. DO NOT SUBMIT PULL REQUESTS HERE
Haskell
7
star
14

packages-array

Mirror of packages-array repository. DO NOT SUBMIT PULL REQUESTS HERE
Haskell
6
star
15

packages-containers

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

packages-hpc

Mirror of packages-hpc repository. DO NOT SUBMIT PULL REQUESTS HERE
Haskell
5
star
17

packages-hoopl

Mirror of packages-hoopl repository. DO NOT SUBMIT PULL REQUESTS HERE
Haskell
5
star
18

packages-haskell2010

Mirror of packages-haskell2010 repository. DO NOT SUBMIT PULL REQUESTS HERE
Haskell
5
star
19

packages-transformers

Mirror of packages-transformers repository. DO NOT SUBMIT PULL REQUESTS HERE
Haskell
5
star
20

packages-bytestring

Mirror of packages-bytestring repository. DO NOT SUBMIT PULL REQUESTS HERE
Haskell
5
star
21

packages-vector

Mirror of packages-vector repository. DO NOT SUBMIT PULL REQUESTS HERE. Use https://github.com/haskell/vector instead.
Haskell
5
star
22

packages-integer-gmp

Mirror of packages-integer-gmp repository. DO NOT SUBMIT PULL REQUESTS HERE
Haskell
5
star
23

packages-directory

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

packages-parallel

Mirror of packages/parallel repository. DO NOT SUBMIT PULL REQUESTS HERE. Use https://github.com/haskell/parallel instead!
Haskell
4
star
25

packages-old-time

Mirror of packages-old-time repository. DO NOT SUBMIT PULL REQUESTS HERE
Haskell
4
star
26

packages-deepseq

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

packages-pretty

Mirror of packages-pretty repository. DO NOT SUBMIT PULL REQUESTS HERE
Haskell
4
star
28

packages-primitive

Mirror of packages-primitive repository. DO NOT SUBMIT PULL REQUESTS HERE. Use https://github.com/haskell/primitive instead.
Haskell
4
star
29

packages-integer-simple

Mirror of packages-integer-simple repository. DO NOT SUBMIT PULL REQUESTS HERE
Haskell
4
star
30

packages-mtl

Mirror of packages-mtl repository. DO NOT SUBMIT PULL REQUESTS HERE
Haskell
3
star
31

packages-terminfo

Mirror of packages-terminfo repository. DO NOT SUBMIT PULL REQUESTS HERE
Haskell
3
star
32

packages-stm

Mirror of packages-stm repository. DO NOT SUBMIT PULL REQUESTS HERE
Haskell
3
star
33

ghc-tarballs

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

packages-extensible-exceptions

Mirror of packages-extensible-exceptions repository. DO NOT SUBMIT PULL REQUESTS HERE
Haskell
3
star
35

packages-Win32

Mirror of packages-Win32 repository. DO NOT SUBMIT PULL REQUESTS HERE
Haskell
3
star
36

packages-random

Mirror of packages-random repository. DO NOT SUBMIT PULL REQUESTS HERE
Haskell
3
star
37

packages-binary

Mirror of packages-binary repository. DO NOT SUBMIT PULL REQUESTS HERE
Haskell
3
star
38

packages-haskell98

Mirror of packages-haskell98 repository. DO NOT SUBMIT PULL REQUESTS HERE
Haskell
3
star
39

packages-filepath

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

packages-xhtml

Mirror of packages-xhtml repository. DO NOT SUBMIT PULL REQUESTS HERE
Haskell
2
star
41

git-notifier

fork of Robin Sommer's git-notifier 0.2
Python
2
star
42

packages-old-locale

Mirror of packages-old-locale repository. DO NOT SUBMIT PULL REQUESTS HERE
Haskell
2
star
43

packages-time

Mirror of packages-time repository. DO NOT SUBMIT PULL REQUESTS HERE. Use https://github.com/haskell/time instead.
Haskell
2
star
44

packages-utf8-string

Mirror of packages-utf8-string repository. DO NOT SUBMIT PULL REQUESTS HERE
Haskell
2
star
45

git-sandbox

Git sandbox (mirror of http://git.haskell.org/git-sandbox.git)
Haskell
1
star
46

ghc-diffs

Staging area for testing of Phabricator Differentials via CircleCI
Haskell
1
star
47

packages-text

Mirror of text repository. DO NOT SUBMIT PULL REQUESTS HERE. Use http://github.com/bos/text instead!
Haskell
1
star
48

libffi-tarballs

Mirror of libffi-tarballs repository. DO NOT SUBMIT PULL REQUESTS HERE
Shell
1
star
49

packages-parsec

Mirror of parsec repository. DO NOT SUBMIT PULL REQUESTS HERE. Use http://github.com/haskell/parsec instead!
Haskell
1
star
50

arcanist-external-json-linter

Mirror of http://git.haskell.org/arcanist-external-json-linter.git
PHP
1
star