[Haskell] Re: Trying to install binary-0.4
simonmarhaskell at gmail.com
Fri Oct 26 05:53:26 EDT 2007
Ketil Malde wrote:
> Simon Marlow <simonmarhaskell at gmail.com> writes:
>>> Wouldn't keeping "base-2.0" and rebranding "base-3.0" to
>>> "foundation-1.0" (which might be listed as "Solution 2.1") solve this
>> This is actually what proposal 4.2 is about.
> Oh, I didn't catch that - I guess I didn't (and don't) see the
> connectiong to 4 (re-exporting of modules from other packages), nor
> does 4.2 seem to say anything about naming base differently.
> Looks like an orthogonal issue to me. Am I missing something?
Probably it could be made clearer. In 4.2 the idea is that instead of
base-2.0 ==> base-3.0 + directory-1.0 + array-1.0 + ...
you would replace
base-2.0 ==> newbase-1.0 + directory-1.0 + array-1.0 + ...
and additionally have a package base-3.0 that re-exports the whole of
(newbase + directory + array + ...). An alternative to this last step, and
I think what you had in mind, is to provide the original base-2.0; this is
what proposal (2) talks about.
>> But note that in order to keep base-2.0 around you need to either
>> compile up a complete copy of it and all the packages that depend on
>> it (proposal 2, a non-starter IMO),
> Perhaps the document could elaborate why it is a non-starter?
This is the "functional" solution: keep old versions of everything and GC
them later. It's feasible for Nix to do this, indeed it requires a system
like Nix to even make this work, because most OS packaging systems have no
notion of the difference between "process-2.0 compiled against base-2.0" as
distinct from "process-2.0 compiled against base-3.0", and neither does
GHC's packaging system or Cabal.
Also, this doesn't solve all the problems - if you need to use two
packages, one of which only compiles against base-2.0 and the other only
compiles against base-3.0, then in order to use them both in a program you
almost certainly still have to modify one of them. The reason being that
the types provided by base-2.0 (e.g. Bool) would be incompatible with those
provided by base-3.0.
Thinking about this is really making my head hurt, I need to go back to
doing something easy like writing Haskell :-)
More information about the Libraries