Skip to content
Snippets Groups Projects
Forked from Glasgow Haskell Compiler / GHC
Loading
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
HACKING.md 4.57 KiB

Contributing to the Glasgow Haskell Compiler

So you've decided to hack on GHC, congratulations! We hope you have a rewarding experience. This file will point you in the direction of information to help you get started right away.

The GHC Developer's Wiki

The home for GHC hackers is our Trac instance, located here:

http://ghc.haskell.org/trac/ghc

From here, you can file bugs (or look them up,) use the wiki, view the git history, among other things. Of particular note is the building page, which has the high level overview of the build process and how to get the source:

http://ghc.haskell.org/trac/ghc/wiki/Building

Contributing patches to GHC in a hurry

Make sure your system has the necessary tools to compile GHC. You can find an overview here:

http://ghc.haskell.org/trac/ghc/wiki/Building/Preparation

Next, clone the repository and all the associated libraries:

$ git clone http://git.haskell.org/ghc.git
$ cd ghc
$ ./sync-all get

First copy mk/build.mk.sample to mk/build.mk and ensure it has your preferred build settings. (You probably want to at least set BuildFlavour to quick):

$ cp mk/build.mk.sample mk/build.mk
$ ... double-check mk/build.mk ...

Now build. If you have multiple cores, you should always use them to speed up compilation:

$ ./boot
$ ./configure
$ make -jN # <N> is the number of cores you have.

You can use the ./inplace/bin/ghc-stage2 binary to play with the newly built compiler.

Now, hack on your copy and rebuild (with make) as necessary.

Then start by making your commits however you want. When you're done, you can use git format-patch to create a series of .patch files you can give to us. In this example, we'll assume I'm on a bugfix branch and want to submit my patches:

$ git branch
* bugfix
  master
$ git format-patch master -o patches
...
$