Arne wrote:

Would it be possible to start into that by creating prefixes for the
different package repositories?
(akkuscm ...) and (snow-fort ...)

I advise against doing that, as the same package can be published to
multiple repositories.

Would that be a problem? All it needs is a reference that reliably works
in Guile. The akku/snow-fort equivalent for srfi.

I think it's not the best decomposition of the problem. At their core, Akku and Snow are package indexes. Pointers that say, "in order to obtain a copy of library X, use URL foo".

At the source code level, a Scheme library does not care where its dependencies are obtained from. A particular version of a particular package should perhaps be identified by a cryptographic hash of its source code. And any place you can obtain a blob with that hash is fair game. This is the Git model.

If we include the name of a package index in the library name, I think we're promoting package indexes too much. It's just not the right mental model, and that has secondary effects.

Maybe even something like the shims in the r7rs benchmarks: they have
preludes for the different schemes with which they can run the tests.

Making a set of Guile preludes and for each package some info which
prelude is needed to run it could make the packages work out of the box
for many. And it could be generalized to many different Schemes.

I recommend that each Scheme implementation natively support all the RnRS feature, and that the Scheme community come up with standard test suites for each RnRS edition. There is substantial work in this direction, IIRC championed by Will Clinger, but my memory is fuzzy.

(how do I find out whether they are portable? Do I have to try?)

Last I checked, you just have to try.

Maybe we could start there for portability: create a list of packages
which work with Guile. Do you happen to have the start of such a list
from your testing?

I haven't kept track of compatibility with any Scheme implementation.

The general principle is (or should be) that each package is a collection of libraries; each library imports other libraries; and any Scheme implementation that can support those libraries can support the library that depends on them. Where this is not the case, IMHO time is better spent fixing that than manually keeping compatibility lists.

Reply via email to