[r6rs-discuss] [Formal] Version reference syntax is overly complex.
lord at emf.net
Wed Jun 20 23:01:47 EDT 2007
John Cowan wrote:
> Thomas Lord scripsit:
>> Version numbers aren't needed at all, except for human
>> consumption (hints, nothing more). What is needed
>> is a way to configure linkages separately from programs.
> Versions have to be named in order to make it possible to
> refer to a specific version across different environments
> (basically the same reason as naming anything else).
> Whether the names are numbers or tumblers doesn't really
I agree that distinct versions of each library must be,
as you say, *named*.
I stand by my assertion that they do not need to be
(and should not be) *numbered*.
What is important is that importers should *not*
refer to the *name* of any library being imported.
Instead, importers should use names whose bindings
are determined in separate code -- that separate
code is a linkage specification. A separate linkage
specification is a mapping from the names used
when libraries are imported to the names of actual
versions of those libraries that should be used to
Example: my text-buffer module might import
a module it calls "red-black-trees". I might
have a library that implements red-black-trees
and I've named a version of it:
I am suggesting that there should be a third piece
of code here, in a separate file normally, which
specifies the mapping from "red-black-trees" in
the import to the long URI as the intended library.
That allows people the flexibility to install new
versions of a library and then, by editing linkage
specifications, pick and choose which which
already installed programs use what library versions.
It allows "bug fix upgrades" just as version numbers
do, but it doesn't suffer the problem of "unintended
upgrades" that is built-in to a version number system.
Another way to see it is to think of version numbering
systems as a kind of topological mistake. They assume
that it is meaningful to say that a program depends
on whatever version of a given library is both present
and has the highest version number within some range.
Yet, since we can not ever know what future versions of
the library will exist or what code they might contain,
we can't say anything definite about the meaning of a
program that tries to import from any of some (non-point)
range of version numbers.
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the r6rs-discuss