On Thu, Nov 22, 2012 at 3:32 AM, Simon Peyton-Jones <simonpj@microsoft.com> wrote:
The solution is obvious: we should make it possible to instally yesod-platform-2.7 twice,
  once version depending on data-default-0.4
  once version depending on data-default-0.5.

This sounds great until you have lots of packages installed, with all of them doing this kind of thing; you have many packages present multiple times with different (and ultimately nested) cross-dependencies, and a nightmare on the accounting front.  And the user is watching already-installed packages being constantly reinstalled again because there's a little gap *somewhere* in the dependency web.

I am wondering if we're trying to solve the problem in the wrong way.  The core of the problem is that various things get baked into libraries in the name of optimization, such that a given binary library has dependencies on precise versions of other libraries; it's not like C where anything supporting the ABI can use the same .a/.lib or .so/.dll/.dylib.

Perhaps what we need is some kind of half-compiled state which leaves the compiler able to do those optimizations at link time.  (This may admittedly end up meaning whole-program compilation and thereby giving up on binary libraries completely.)

--
brandon s allbery kf8nh                               sine nomine associates
allbery.b@gmail.com                                  ballbery@sinenomine.net
unix/linux, openafs, kerberos, infrastructure          http://sinenomine.net