... | ... | @@ -10,15 +10,15 @@ Here are some suggestions for projects related to GHC that could be undertaken b |
|
|
|
|
|
## Projects that should be within reach of a good undergraduate
|
|
|
|
|
|
- **Implement overlap and exhaustiveness checking for pattern matching**. GHC's current overlap and exhaustiveness checker is old and inadequate. Furthermore, it takes no account of GADTs and type families. See [\#595](https://gitlab.haskell.org//ghc/ghc/issues/595) and [\#2395](https://gitlab.haskell.org//ghc/ghc/issues/2395). There's an excellent selection of background material:
|
|
|
- **Implement overlap and exhaustiveness checking for pattern matching**. GHC's current overlap and exhaustiveness checker is old and inadequate. Furthermore, it takes no account of GADTs and type families. See [\#595](https://gitlab.haskell.org/ghc/ghc/issues/595) and [\#2395](https://gitlab.haskell.org/ghc/ghc/issues/2395). There's an excellent selection of background material:
|
|
|
|
|
|
- [ Warnings for pattern matching](http://pauillac.inria.fr/~maranget/papers/warn/warn.pdf) by Luc Maranget (JFP 17(3), 2007)
|
|
|
- [ Focusing on pattern matching](http://www.cs.cmu.edu/~neelk/pattern-popl09.pdf) by Neelakantan Krishnaswami (POPL 2009)
|
|
|
- [ Compiling pattern matching to good decision trees](http://pauillac.inria.fr/~maranget/papers/ml05e-maranget.pdf) by Luc Maranget, ML Workshop 2008
|
|
|
- [Warnings for pattern matching](http://pauillac.inria.fr/~maranget/papers/warn/warn.pdf) by Luc Maranget (JFP 17(3), 2007)
|
|
|
- [Focusing on pattern matching](http://www.cs.cmu.edu/~neelk/pattern-popl09.pdf) by Neelakantan Krishnaswami (POPL 2009)
|
|
|
- [Compiling pattern matching to good decision trees](http://pauillac.inria.fr/~maranget/papers/ml05e-maranget.pdf) by Luc Maranget, ML Workshop 2008
|
|
|
|
|
|
- **Improve parallel profiling tools**. Starting with [ ThreadScope](http://research.microsoft.com/en-us/projects/threadscope/), incorporate performance-counter events, visualise more runtime events, include source-code information in the profile.
|
|
|
- **Improve parallel profiling tools**. Starting with [ThreadScope](http://research.microsoft.com/en-us/projects/threadscope/), incorporate performance-counter events, visualise more runtime events, include source-code information in the profile.
|
|
|
|
|
|
- **Implement some low-level C-- optimisations**. During 2011 we expect to have the new C-- code generation route in place, and that will open up new opportunities for doing classic compiler-course optimisations on the imperative C-- code. There is more than routine stuff here, because we can use our [ generic dataflow framework](http://research.microsoft.com/~simonpj/papers/c--) to do the heavy lifting. Here are some [particular ideas for optimisations](back-end-notes) we'd like to implement.
|
|
|
- **Implement some low-level C-- optimisations**. During 2011 we expect to have the new C-- code generation route in place, and that will open up new opportunities for doing classic compiler-course optimisations on the imperative C-- code. There is more than routine stuff here, because we can use our [generic dataflow framework](http://research.microsoft.com/~simonpj/papers/c--) to do the heavy lifting. Here are some [particular ideas for optimisations](back-end-notes) we'd like to implement.
|
|
|
|
|
|
---
|
|
|
|
... | ... | @@ -35,7 +35,7 @@ Here are some suggestions for projects related to GHC that could be undertaken b |
|
|
Projects aimed at making GHC into a user-extensible plug-in platform, and less of a monolithic compiler.
|
|
|
|
|
|
|
|
|
- **Allow much finer and more modular control over the way in which rewrite rules and inlining directives are ordered**. See this [ email thread](http://www.haskell.org/pipermail/haskell-cafe/2008-January/038196.html)
|
|
|
- **Allow much finer and more modular control over the way in which rewrite rules and inlining directives are ordered**. See this [email thread](http://www.haskell.org/pipermail/haskell-cafe/2008-January/038196.html)
|
|
|
|
|
|
|
|
|
|
... | ... | @@ -48,7 +48,7 @@ Projects aimed at making GHC into a user-extensible plug-in platform, and less o |
|
|
|
|
|
- **Extend kinds beyond \* and k1-\>k2**. With GADTs etc we clearly want to have kinds like `Nat`, so that advanced hackery at the type level can be done in a typed language; currently it's all effectively untyped. A neat approach would be to re-use any data type declaration as a kind declaration.
|
|
|
|
|
|
- **Extensible constraint domains**. Andrew Kennedy shows how to incorporate [ dimensional analysis](http://research.microsoft.com/~akenn/units/index.html) into an ML-like type system. Maybe we could do an extensible version of this, so that it wasn't restricted to dimensions. Integer arithmetic is another obvious domain.
|
|
|
- **Extensible constraint domains**. Andrew Kennedy shows how to incorporate [dimensional analysis](http://research.microsoft.com/~akenn/units/index.html) into an ML-like type system. Maybe we could do an extensible version of this, so that it wasn't restricted to dimensions. Integer arithmetic is another obvious domain.
|
|
|
|
|
|
### Runtime system
|
|
|
|
... | ... | @@ -72,22 +72,22 @@ Projects for people who want a decent-sized hacking project, with less research |
|
|
## Compiler
|
|
|
|
|
|
|
|
|
- <table><tr><th><a href="https://gitlab.haskell.org//ghc/ghc/issues/602">#602</a></th>
|
|
|
- <table><tr><th><a href="https://gitlab.haskell.org/ghc/ghc/issues/602">#602</a></th>
|
|
|
<td>Warning Suppression</td></tr></table>
|
|
|
|
|
|
|
|
|
- Whole-program dead-code detection (with `--make`).
|
|
|
- Whole-program overloading elimination (with `--make`).
|
|
|
- Evolve a better ordering for the optimisation passes using [ Acovea](http://www.coyotegulch.com/products/acovea/).
|
|
|
- Evolve a better ordering for the optimisation passes using [Acovea](http://www.coyotegulch.com/products/acovea/).
|
|
|
|
|
|
## Build system
|
|
|
|
|
|
|
|
|
- <table><tr><th><a href="https://gitlab.haskell.org//ghc/ghc/issues/989">#989</a></th>
|
|
|
- <table><tr><th><a href="https://gitlab.haskell.org/ghc/ghc/issues/989">#989</a></th>
|
|
|
<td>Build GHC on Windows using Microsoft toolchain</td></tr></table>
|
|
|
|
|
|
|
|
|
## Tools
|
|
|
|
|
|
|
|
|
- Update/improve [ Visual Haskell](http://www.haskell.org/visualhaskell) to use the (free) [ Visual Studio Shell](http://msdn2.microsoft.com/en-us/vsx2008/products/bb933751.aspx). |
|
|
- Update/improve [Visual Haskell](http://www.haskell.org/visualhaskell) to use the (free) [ Visual Studio Shell](http://msdn2.microsoft.com/en-us/vsx2008/products/bb933751.aspx). |