On Jan 31, 2014, at 12:23 PM, Vladimir Lushnikov <[email protected]> 
wrote:

> There are some very interesting questions being raised here. I think I can 
> add to the discussion:
> 
> [A] The problem of each version being in its own namespace can be solved by 
> "slots" (at least that's what portage calls them). See 
> http://devmanual.gentoo.org/general-concepts/slotting/
> 
> Basically you allow package authors to specify versions where there the ABI 
> doesn't change (I think this is completely orthogonal to the hashing of 
> library symbols etc) and versions where the ABI does change. So if you care 
> about a particular version in your rust lib, you can specify either a version 
> (1.0 > version and version < 2.0 if you want something more than 1.0 but less 
> than 2.0) or a slot or both.
> 
> So the algorithm can still be a variant of top sort, just taking the 
> additional constraint of (optional) slots into account.

I don't know how much of an issue this is in practice, but such a system has 
two flaws that I can see:

1) It relies on the library author correctly identifying when they've made an 
API change. Any mistakes on their part will lead to problems down the line for 
customers.

2) Even non-API changes are sometimes important to customers. Notably, bug 
fixes, especially if they break previously-implemented workarounds.

-Kevin
_______________________________________________
Rust-dev mailing list
[email protected]
https://mail.mozilla.org/listinfo/rust-dev

Reply via email to