robby at cs.uchicago.edu
Sun Nov 12 18:02:06 EST 2006
At Sun, 12 Nov 2006 17:41:40 -0500, MichaelL at frogware.com wrote:
> Aziz wrote:
> > In my reply, I meant to say that having a version as part of the
> > library specifier is better than having the version number part of the
> > library identifier as in (regexp (3 2)) is better than regexp-3.2. My
> > motivation is that if you don't specify a versioning scheme in the
> > language, people are going to reinvent all sorts of versioning schemes
> > in existence for their scheme libraries including regexp-3.2,
> > regexp_3.2, regexp-20061109, regexp-3.1b-rc2, and so on and so forth.
> > I would rather have a simple way of specifying the required version
> > (like a list of exact nonnegative integers) with a single unambiguous
> > interpretation over having an ad hoc do-it-yourself version specifier.
> Unfortunately, I don't think R6RS really addresses the issue. Or, at
> least, it doesn't address it completely enough. For example, R6RS
> specifies how libraries are named but says nothing about the relationship
> between library names and file names. (It can't, really, since there can
> be multiple libraries in one file.) So it's likely we'll still see variety
> in the way files are named. Given that, how much does it really help that
> library "identifiers" don't have the same problem? (Rhetorical question!)
> Robby wrote:
> > FWIW, there has been much discussion about these in the context of
> > Perl's CPAN and Ruby's GEMs. They have generally settled on a
> > versioning Scheme like the one we adopted for PLaneT (unlike PLaneT,
> > however, theirs are a kind of "best practice" rather than encouraged or
> > enforced by the system).
> > PLaneT's versioning Scheme is written up in this year's Scheme workshop:
> > http://scheme2006.cs.uchicago.edu/04-matthews.pdf
> Thanks, Robby. Very useful.
> Ultimately, though, it added to my list of concerns. :-) For example, the
> paper talks about how PLaneT avoids "magic updates" by using a special
> link table that remembers the version of a library/module that another
> library/module was originally linked to. You wouldn't be able to do
> something like that with R6RS because the library selection algorithm is
> buried in the implementation. Still, reading about PLaneT helped me form a
> clearer picture of what I think might be wrong with R6RS. It will take me
> a day or two to get my thoughts down on paper.
The intended semantics of the version numbers can be separated from the
mechanism for specifying and resolving cross library references.
More information about the r6rs-discuss