R6RS libraries are versioned. Any package manager/library repository shouldn't add a second layer of versioning on top of it but understand it.

Thanks Marc! So I'm not the only one in favor of this crazy idea :)

We could start off by propagating the package version into to library version. In other words, the foo-1.2.3 package would append (1 2 3) to the name of all libraries in that package. The package manager probably should not rewrite source files, but should override the library versions given in the library source files via some kind of manifest file. For large Scheme codebases we need the ability to have rewrite rules for library names anyway, so versioning could be folded into the name rewriting framework.

It's not clear how to replicate this in R7RS library names which cannot contain a nested list. Maybe just splice the version list:

R6RS: (foo bar baz (1 2 3))
R7RS: (foo bar baz 1 2 3)

But this is prone to have some amusing consequences -- neither of these looks good:

R6RS: (srfi :123 (1 2 3))
R7RS: (srfi 123 1 2 3)

Reply via email to