57 lines
1.7 KiB
Markdown
57 lines
1.7 KiB
Markdown
|
% GHCup
|
||
|
% Julian Ospald
|
||
|
% June 07, 2024
|
||
|
|
||
|
# GHCup
|
||
|
|
||
|
## Intro
|
||
|
|
||
|
[Haskell Survey 2022](https://taylor.fausak.me/2022/11/18/haskell-survey-results/#s2q1)
|
||
|
|
||
|
![](survey.png)
|
||
|
|
||
|
## What is GHCup?
|
||
|
|
||
|
```sh
|
||
|
curl -s -L 'https://downloads.haskell.org/~ghc/9.6.5/ghc-9.6.5-x86_64-fedora33-linux.tar.xz' |
|
||
|
tar -xJ -C /tmp &&
|
||
|
cd /tmp/ghc-9.6.5-x86_64-unknown-linux/ &&
|
||
|
./configure --prefix="$HOME/.local" &&
|
||
|
make install &&
|
||
|
rm -rf /tmp/ghc-9.6.5-x86_64-unknown-linux/
|
||
|
```
|
||
|
|
||
|
## How it started
|
||
|
|
||
|
* 🤹 small team at work on different platforms
|
||
|
* 🧑💻 SHELL + POSIX
|
||
|
* 🦾 first version was 165 LOC
|
||
|
* 🙏 only installer at that time was stack
|
||
|
|
||
|
## Goals
|
||
|
|
||
|
- ☮️ unification
|
||
|
- unix principles
|
||
|
- 🛠️ do one thing and do it well
|
||
|
- ⚗️ pipes, compose stdout and stdin
|
||
|
- 🎁 good re-distribution
|
||
|
- 🛣️ user experience (get out of the way)
|
||
|
|
||
|
## To install or not install
|
||
|
|
||
|
* [https://hasufell.github.io/posts/2023-11-14-ghcup-is-not-an-installer.html](https://hasufell.github.io/posts/2023-11-14-ghcup-is-not-an-installer.html)
|
||
|
|
||
|
### Concerns
|
||
|
|
||
|
* ![](open-box.png){#id .class width=32 height=32px} installer
|
||
|
* ![](linux.png){#id .class width=32 height=32px} distribution channel
|
||
|
* ![](feedback.png){#id .class width=32 height=32px} feedback channel
|
||
|
* ![](qa.png){#id .class width=32 height=32px} testing/QA
|
||
|
* ![](user.png){#id .class width=32 height=32px} deciding on defaults (e.g. "recommended" GHC version)
|
||
|
* ![](chain-saw.png){#id .class width=32 height=32px} holistic toolchain experience
|
||
|
- stack integration
|
||
|
- VSCode integration
|
||
|
- cabal-install integration
|
||
|
* ![](ghaction.png){#id .class width=32 height=32px} CI (e.g. github actions)
|
||
|
|