[plt-scheme] backwards compatibility and planet libraries

From: Dave Herman (dherman at ccs.neu.edu)
Date: Wed Mar 9 12:45:21 EST 2005

> No. If you require functionality that wasn't added until, say, version 
> 1.6, you can specifically require that you get library version 1.6 or 
> above:
> 
> (require (planet "file.ss" ("somebody" "somebodys-library.plt" 1 6)))

Does that really have the behavior of requiring 1.6 *or above*, or 
exactly version 1.6? In other words, if at some point later on, version 
1.7 becomes available, will the module written as above still use 1.6?

> Even if you've got versions 1.0 through 1.5 installed locally, planet 
> will fetch version 1.6 to satisfy this request (though if you ask for 
> version 1.3 or above and it has version 1.6 it'll give you the local 
> version 1.6, of course).

Is this only the first time the module gets invoked? I thought the 
behavior of planet was that once it associates a client module with a 
particular minor version of the library, it's stuck with that version 
once and for all (see the section "Previous linkage" under "The PLaneT 
search order" in the planet docs).

I've been concurrently developing a number of planet libraries that 
require each other, and rather than constantly having to update all the 
clients of one library every time I post a bug fix, I've been leaving 
out the minor version in the `require's. But I still end up having to 
clear the linkage table and rerun setup-plt every time I update a 
library to a newer minor version. I confess I don't really understand 
the "magic upgrade" comment in the docs.

Dave



Posted on the users mailing list.