[plt-scheme] On PLaneT packages and compatible upgrades
On Wed, May 10, 2006 at 05:04:11AM -0600, Matthew Flatt wrote:
> What if we had a way to make exports version-specific?
>
> For example, suppose my original module is
>
> (module m mzscheme
> (define x ...)
> (define y ...)
> (define z ...)
> (provide x y z))
>
> For version 1.1, I add `w' and `q':
>
> (module m mzscheme
> (define x ...)
> (define y ...)
> (define z ...)
> (define w ...)
> (define q ...)
> (provide x y z)
> (provide-version (1 1) w q))
>
> Then imports of "version 1.0 or higher" or the module would only import
> `x', `y', and `z', while imports of "version 1.2 or higher" would also
> get `w' and `q'.
>
> Would that help solve the problem?
It looks promising, certainly. Based on my recent experience, it's
possible (if not probable) that this would have unforeseen consequences,
but I think it's worth exploring.
However, it does proceed from the assumption that adding functionality
should be a compatible upgrade. I'm wondering if we should continue to
hold to that assumption.
Richard