Build executable program written in Haskell statically. (For the convenient of package maintainer, remove Haskell library packages).
The advantage of dynamic linking is letting multiple executable sharing same part of code. The only benefit is to reduce storage consumption. But in nowadays, storage is getting cheaper and cheaper. It is no longer be a issue now. And Haskell packages are all relatively small.
However, here are a lot of drawbacks for dynamic linking of Haskell ecosystem.
pacman
. Updating many small package is really much slower than updating one big package. And registering Haskell module take a long time.C/C++ has very poor dependency resolver and package manager. C/C++ project need developer take care of dependency manually. And C/C++ compiler provide relatively stable ABI. None of those condition applies to Haskell.
Only providing:
ghc
exclusive to ghcup
ghcup
provide ghc
, stack
, cabal-install
. This is similar to rustup
package.haskell-language-server
like other Haskell executables, statically linked.When user install ghcup
via pacman
, the need to manually set default toolchain to install ghc
and other tools.
All non-executable Haskell library become unnecessary. Since no Haskell developer will use haskell package provided by the Linux distro.
I believe the gain of this suggestion is significantly greater than the loss.