<div dir="ltr">On Thu, Nov 22, 2012 at 3:32 AM, Simon Peyton-Jones <span dir="ltr">&lt;<a href="mailto:simonpj@microsoft.com" target="_blank">simonpj@microsoft.com</a>&gt;</span> wrote:<br><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
The solution is obvious: we should make it possible to instally yesod-platform-2.7 twice,<br>
  once version depending on data-default-0.4<br>
  once version depending on data-default-0.5.<br></blockquote><div><br></div><div>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&#39;s a little gap *somewhere* in the dependency web.</div>
<div><br></div><div>I am wondering if we&#39;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&#39;s not like C where anything supporting the ABI can use the same .a/.lib or .so/.dll/.dylib.</div>
<div><br></div><div>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.)</div>
<div><br></div></div>-- <br><div dir="ltr"><div>brandon s allbery kf8nh                               sine nomine associates</div><div><a href="mailto:allbery.b@gmail.com" target="_blank">allbery.b@gmail.com</a>                                  <a href="mailto:ballbery@sinenomine.net" target="_blank">ballbery@sinenomine.net</a></div>
<div>unix/linux, openafs, kerberos, infrastructure          <a href="http://sinenomine.net" target="_blank">http://sinenomine.net</a></div></div><br>
</div>