GHC Haskell proposals
Note
Currently the process that goes along with this repository is itself in the proposal stage. See the first proposal, Pull Request #1, for details.
This repository contains specifications for proposed changes to the Glasgow Haskell Compiler.
What is a proposal?
A GHC Proposal is a document describing a proposed change to the compiler, the
GHC/Haskell language, or the libraries in the GHC.*
module namespace. These
include,
- A syntactic change to GHC/Haskell (e.g. the various
ShortImports
proposals,do
expressions without$
) - A major change to the user-visible behaviour of the compiler (e.g. the recent
change in super-class
solving, and
-Wall
behavior) - The addition of major features to the compiler (e.g.
-XTypeInType
, GHCi commands, type-indexedTypeable
representations)
How do I comment on a proposal?
Discussion on a proposal occurs on its associated pull request. Click on the Pull Requests tab in GitHub to see a listing of the proposals currently under discussion. To see the text of the proposal click on the "Files Changed" tab on corresponding Pull Request page.
Github offers two ways of viewing diffs: the "source diff" view, which shows a plain text diff, and the "rich diff" view, which provides a more readable rendered view of the markup. The view can be selected using the buttons on the top-right corner of the "Files Changed" tab.
![The view selector buttons.](https://raw.githubusercontent.com/Mistuke/ghc-proposals/master/rich-diff.png)
Use the view selector buttons on the top right corner of the "Files Changed" tab to change between "source diff" and "rich diff" views.
Feedback on a proposal can be offered on open pull requests using both Github's in-line and pull request commenting features.
![The ``+`` button appears while hovering over line in the source diff view.](https://raw.githubusercontent.com/Mistuke/ghc-proposals/master/inline-comment.png)
Hover over a line in the source diff view of a pull request and
click on the +
to leave an inline comment
How do I submit a proposal?
While the full process is described in the proposal describing the proposal process, here is a short summary,
- Clone this repository and create a branch in your clone for your new proposal.
- Starting with the template,
describe your proposed change in a file in the
proposals/
directory. Use a filename of the formproposals/0000-short-proposal-title.rst
. - Write down the details of your proposal. At very least this will involve filling in the empty fields of the template. Note that proposals are written in ReStructuredText, not Markdown, for its expressiveness and ease of integration into other GHC infrastructure.
- When you feel your proposal document is complete, open a
Pull Request
requesting that your branch be merged into themaster
branch of this repository. Be sure to include a link to the rendered view of your proposal in the pull request description. Your proposal will automatically be announced on theghc-devs
mailing list when this pull request is opened. - Discussion will proceed on the pull request; it is very likely that multiple iterations will be necessary before the proposal stabilizes.
- When discussion has died down email the (yet to be formed) GHC Commitee , who will review the proposal, the feedback collected on the pull request, and general community sentiment and decide whether the proposal will be accepted.
- When your proposal is accepted your pull request will be merged. At this point you or someone else may choose to implement your proposal.