
Diego Souza wrote:
Hi,
currently when one install a cabal package it compiles it and then install generated binaries. I wonder whether or not it would be useful to have pre-compiled binaries as many package managers usually do (e.g. apt). I often think that would save some time on the expense of a busier hackage server capable of generating packages for many different platforms.
I'm particularly thinking on the following scenario: suppose that you have code that is ready for production. If cabal supported pre-compiled binaries, there is no need to install ghc or eventually any other compiler, just runtime environment and eventually cabal. I must say that I have no experience in doing this in Haskell (just personal/small projects), so I suppose one have to generate binaries and use other sort of package manager to deploy code to production (which sounds reasonable as well). Thus, if the assumption is correct, cabal is a development tool, not something one could to only deploy runtime-only packages.
I also would appreciate if others could share how usually this is managed.
As far as I know, Cabal is mainly used for deploying Haskell libraries. If you want to deploy a finished Haskell program, just compile it into an executable program and make it downloadable from somewhere. (Much like a C program or any other kind of program.) For example, if you hunt around, you can find Darcs available as a binary download (even for Windows). It might be nice if certain Haskell libraries were available in binary form. The trouble is, Haskell libraries have to be recompiled for each version of the compiler. This is why it's usually released in source form; otherwise you have to make a bazillion different binaries, one for every version of GHC on every platform that GHC runs on. Much easier to just compile from source, Unix-style. (And I've only come across one Haskell package that takes more than 11 seconds to compile anyway.)