[plt-scheme] backwards compatibility and planet libraries

From: David Herman (dherman at ccs.neu.edu)
Date: Wed Mar 9 15:18:27 EST 2005

> Well, unless the linkage table gets cleared (planet -U). There should 
> be a way to remove any linkage that points TO a particular package 
> (ie, anyone who uses this package can upgrade to the latest available 
> on the system), but I haven't implemented that yet.

Ah, that's exactly one of things I was wishing for. Blowing away all 
linkages is swatting flies with a bazooka.

> Clear the linkage table and you should be okay. Why do you need to 
> rerun setup-plt?

I was getting weird errors about the zos, that they weren't providing 
required names. Rerunning setup-plt seemed to fix this. I'll pay more 
attention next time it happens to see if I can give you more 
information about what's happening.

On Wednesday, March 9, 2005, at 02:54 PM, Robby Findler wrote:

> At Wed, 09 Mar 2005 13:46:03 -0600, Jacob Matthews wrote:
>> When I initially started talking about PLaneT it was a major concern 
>> of
>> several people who are familiar with current packaging systems that
>> these magic upgrades not happen; thus the linkage table.
>
> In fact, this is apparently the true problem of DLL Hell, according to
> Anders Hejlsberg (a C# / .Net guy):
>
>   http://www.artima.com/intv/interop.html

A-ha. They immediately address my first quibble, which was "if a client 
is relying on something that isn't in the contract, then the *client* 
is at fault." But in practice, you often need to rely on a bug for 
temporary workarounds. Allowing multiple version gives the client time 
to safely upgrade their own code before switching to the fixed code (or 
in bleaker situations, allows old, rotting clients to rely permanently 
on the old version). I'm convinced. Thank you both.

So I suspect that perhaps I've been abusing the system by not 
specifying a minor version number in my `require's. Should it even be 
allowed at all to leave out the minor version?

In my case, it's just to save me from having to update all the client 
modules every time I fix a bug in one planet package. Here's a thought: 
it's often the case that all the modules in planet package A.plt 
require the same version of planet package B.plt. If I could specify in 
the info.ss of A.plt which version of B.plt I'm using, then I could 
require B.plt without any version specified, and I'd only have to 
update the version number in one place when there are new version of 
B.plt.

Thank you both,
Dave



Posted on the users mailing list.