[plt-scheme] On PLaneT packages and compatible upgrades
On May 9, 2006, at 6:04 PM, Richard Cobbe wrote:
> I'm not real sure how to solve this problem. One strategy is that
> PLaneT clients should specify exactly what minor version number they
> want, as in
> (require (planet "foo.ss" ("cobbe" "foo.plt" 1 (= 0))))
> That way, the application authors know that they'll always get the
> same
> version of the library -- they don't get an upgrade unless they
> explicitly ask for it, at which point they're presumably able to deal
> with the consequences. The drawback, of course, is that PLaneT
> clients
> don't get automatic bugfixes.
Wouldn't a better solution on the client side be for the client to
say explicitly which names they wish to require from the module, and
then only get that subset? Then the client would be free to define
g, h, and whatever else, because they'd know that they were only
asking for f from the module they're fetching from planet.
Unfortunately, last time I looked, the require form only allowed this
usage by doing:
(require (rename MOD f1 f1) (rename MOD f2 f2) (rename MOD f3
f3) ...). Yucko.
But one would think some macro-wizardry would allow one to extend the
set of require forms, to introduce something like:
(require (not-all-but-instead-only MOD f1 f2 f3 ...))
Or maybe this example would provide a motivation for PLT to add such
a form to the set of require specifications.
-Felix