|
|
|
|
|
by gavinray
1692 days ago
|
|
> I have no problems with HLS, VC Code, and Cabal, everything works seamlessly.
So do I -- until I try to use them on massive, realworld projects. > You fail to understand that this is your personal experience based on the approaches you've chosen to apply.
First off -- I can't write Haskell. I only think all of this because of time working on tooling trying to make it easier for other people that DO write Haskell to contribute, via publishing configurations and other things.Sometimes you don't get to make the choices, and you're stuck with someone else's architecture decisions and a team + community of people doing the best they can with them. You've never compiled GHC from source?
How long does that take on your machine? The moment someone gets a codebase that has hundreds/thousands of files working with proper language server diagnostics in an IDE with +24 hours uptime (like every other production-grade language) I will eat my shoe. |
|
I have, but the point is that I don't have to, because there are transparent distributed builds in Nix that I utilise when I want to compile something big, as you say "real-world", fast. I split software into many small self-contained packages and delegate the work of compiling it all to remote machines configured for faster compilation times, and then I just pull complete binaries onto my laptop (https://nixos.org/manual/nix/unstable/advanced-topics/distri...). Subsequent changes in smaller packages are rebuilt incrementally.
My point and the answer to your question ("And why is this state of affairs tolerated for decades?") is that GHC doesn't have to implement its own version of dev environment bootstrapping, distributed builds and other niceties as part of their core tooling, because it's already solved on other level of dev-infra tooling, they can just provide links to working solutions and explain them, for instance haskell.nix (https://github.com/input-output-hk/haskell.nix)