| app | ||
| lib | ||
| test | ||
| .gitignore | ||
| cabal.project | ||
| CHANGELOG.md | ||
| ghcup.cabal | ||
| LICENSE | ||
| README.md | ||
| Setup.hs | ||
| TODO.md | ||
ghcup
A rewrite of ghcup in haskell. This can be used as a library and may be redistributed as a binary in the future.
Motivation
ghcup has increasingly become difficult to maintain. A few reasons:
- few maintainers
- increasing LOC
- platform incompatibilities regularly causing breaking bugs:
- refactoring being difficult due to POSIX sh
More benefits of a rewrite:
- Features such as installing release candidates or HEAD builds can be more conveniently implemented in a rewrite
- Refactoring will be easier
- Better tool support (such as linting the downloads file)
- saner downloads file format (such as JSON)
However, the downside will be:
- building static binaries for all platforms (and possibly causing SSL/DNS problems)
- still bootstrapping those binaries via a POSIX sh script
Goals
- Correct low-level code
- Good exception handling
- Easier user interface (possibly interactive and non-interactive ones)