app | ||
lib | ||
test | ||
.gitignore | ||
cabal.project | ||
cabal.project.freeze | ||
CHANGELOG.md | ||
ghcup.cabal | ||
LICENSE | ||
README.md | ||
Setup.hs | ||
TODO.md | ||
update-index-state.sh |
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)