schemechez-schemesrfi

SRFI implementations for Chez Scheme


I'm new to Chez, and just looking for some clarity given the various maintained and unmaintained repos existing.

Is there a single commonly preferred source repo to obtain the R6RS SRFI libraries (specifically for Chez Scheme)?

I know about https://srfi.schemers.org/ which is good for searching for individual SRFI documentation, and has a tgz of all documentation and some scheme code, but there is no version or release info on the tgz (although the timestamps suggest it's fairly up to date https://srfi.schemers.org/srfi.tgz).

For R6RS I can find most of the SRFIs as separate repos under the following repo, which isn't very practical to grab all the code: https://github.com/scheme-requests-for-implementation

And then a variety of other repos, eg:

https://github.com/arcfide/chez-srfi

https://github.com/ovenpasta/thunderchez

https://github.com/dharmatech/surfage

https://bazaar.launchpad.net/~scheme-libraries-team/scheme-libraries/srfi/files

The only ones with recent activity, and luckily also seem to be Chez-focused, seem to be chez-srfi and thunderchez.

chez-srfi seems the most recently active, and once I worked out the requirement to run link-dirs.chezscheme.sps and then softlink the chez-srfi directory to srfi it seems to work using the standard import references - (import (srfi :N lib)).

That said I've had similar success using (import (srfi sN lib)) using Thunderchez.

I'm completely agnostic over which repo I use, providing it's easy to use and actively kept up to date. Is there a clear preferred choice providing this, or is choice based more cosmetically on personal opinion (in which case I'll form my own rather ask it on here!).


Solution

  • The honest answer is probably "no" - there is not a single version of srfi preferred by the community.

    But to (kinda) answer my own question, whilst I can't say it's a defacto standard yet, Akku is a package manager and virtual environment management system of Scheme that is miles ahead of any of the alternatives, and actively developed. It's not an individual implementation of srfi, but is a way to install various Scheme packages you need to use through a single interface.

    https://akkuscm.org/

    It's not quite venv and pip - but it's getting there. I'm amazed this isn't talked about more, I only stumbled upon it some time after my initial search for a tool like this.

    You get a single interface to pull packages for both R6RS and R7RS, and a range of Scheme implementations.

    There is also Snow, which is currently only supporting R7RS: http://snow-fort.org/

    But as Akku mirrors Snow as well as providing R6RS support, it is more comprehensive.

    To answer the specifics of the original example - Akku installs chez-srfi by default (on a Chez Scheme system at least) on creation of a new project, but also offers thunderchez as a package. Whether that indicates a preference by the Akku developer's, I'll leave up to the reader to decide.

    The original question was about a single defacto srfi implementation for Chez, rather than a more general package manager. In hindsight this misses the point a bit, simply because I didn't think a single package manager (beyond srfi) was a remote possibility.

    So for my use at least - Akku, not only provides various implementations of srfi, but also offers a host of other packages, and largely answers my question.