haskell - Why does cabal download and compile from source? -


when make new project. say, web app using snap. generate skeleton using snap init barebones, make new sandbox , install dependencies.

this takes forever. seriously. if have ever worked pretty other web framework (node.js express, example), process identical takes fraction of time. i'm aware node dependencies not require compilation find strange isn't considered bigger problem. example, never able run yesod app on cheap vps because vps isn't powerful enough compile , can't upload 500mb of precompiled libraries.

the question is, why doesn't repository host binaries instead of code? .net compiled (to bytecode) can use it's dlls without need recompilation.

there of course drawbacks of hosting binaries more storage space needed, multiple binaries per library multiple oss... problems seems insignificant huge benefits such as

  • no more compile errors
  • much faster setup new projects
  • significantly less memory needed
  • knowing library doesn't support os before find out yourself

i have trouble seeing why cabal hell exists in first place. if libraries available dynamic linking, wouldn't need recompiling not exist @ all?

currently, 1 has try hard stick haskell in these regards. seems system punishes me trying out things. if want add new library project have sure i'm willing wait 15-45(!!!) minutes compile. not mention library fails compile way more i'm comfortable with. after surviving process, can figure out if library want use, or if it's compatible rest of project.

in nutshell: because native code hard.

if want host binaries arbitrary systems, have match binaries each system want run on. may mean compiling dozens of sets of binaries support of systems code compile on.

on other hand, may find has compiled code need: distribution provider may provide packages haskell libraries need.


Comments

Popular posts from this blog

javascript - Any ideas when Firefox is likely to implement lengthAdjust and textLength? -

matlab - "Contour not rendered for non-finite ZData" -

delphi - Indy UDP Read Contents of Adata -