aboutsummaryrefslogtreecommitdiffstats

Guix Scheme Containers and Environments

Run Scheme implementations in Guix containers/environments, and package libraries for them.

Supports Chibi, Foment, Sagittarius, Gauche, Loko, STKlos, TR7, Mosh, Chez, and SKINT.

Portable R6RS and R7RS Libraries

Some Scheme systems packaged here will read R7RS_LIBRARY_PATH (or R6RS_LIBRARY_PATH for R6RS systems) to find paths for strictly conforming R7RS (R6RS) libraries. To copy libraries to these pathes, use the portable-r7rs-build-system (portable-r6rs-build-system).

On systems that support both R6RS and R7RS, the R6RS libraries will take precedence (rationale: R6RS has more stuff).

SRFIs and Portability Libraries

This channel packages some SRFIs for portable use. They are labeled srfi-M-rNrs, where M is the number and N is the standard. The SRFIs are packaged so that R7RS systems use (srfi M) and R6RS systems use (srfi :M). No claim is made to the portability of (srfi :M name), etc, unless made necessary by sublibraries.

  • SRFI-1
  • SRFI-8
  • SRFI-9 (R6RS only)
  • SRFI-128
  • SRFI-227

None of these packages have any dependencies. This is because some implementations already come with optimized versions of these SRFIs. For instance, a system with built-in comparators doesn't need to pull in the portable SRFI-128 implementation to use some other library that imports SRFI-128.

The following portability libraries are also exported.

  • compatible-parameters: Exports (mcgoron compatible-parameters) for R6RS systems that exports either an SRFI-39 or R7RS parameter interface.

Supported Implementations

Chibi Scheme

  • Package: chibi-scheme-with-path
  • Path: chibi-lib-dir, chibi-binlib-dir
  • Supports R7RS_LIBRARY_PATH

Foment

  • Package: foment-with-path
  • Path: foment-lib-dir
  • Supports R7RS_LIBRARY_PATH

The build script here will build Foment. The last release of Foment was a long time ago, so the build is for the current HEAD at the time of writing (6089c3c).

Sagittarius

  • Package: sagittarius-scheme-with-path
  • Path: sagittarius-lib-dir
  • Supports R7RS_LIBRARY_PATH, R6RS_LIBRARY_PATH

Gauche

  • Package: gauche-with-path
  • Pure Scheme: gauche-pure-scheme-build-system

TODO: explain gauche, add gauche build system

Loko

  • Package: loko-scheme-with-path
  • Path: loko-scheme-lib-dir
  • Supports R7RS_LIBRARY_PATH, R6RS_LIBRARY_PATH

STKlos

  • Package: stklos-with-path
  • Path: stklos-lib-dir
  • Supports R7RS_LIBRARY_PATH

TODO: loading bytecode

TR7

  • Package: tr7-with-path
  • Path: tr7-lib-dir
  • Supports R7RS_LIBRARY_PATH

TODO: extensions

Mosh

  • Package: mosh-scheme-with-path
  • Path: mosh-lib-dir
  • Supports R6RS_LIBRARY_PATH

SKint

  • Package: skint-with-path
  • Path: skint-lib-dir
  • Supports R7RS_LIBRARY_PATH

Chez Scheme

  • Package: chez-scheme-with-path
  • Path: chez-lib-dir
  • Supports R6RS_LIBRARY_PATH

TODO: heap files?

Planned

Any R6RS/R7RS that has a path mechanism and that can run on a system running Guix should be included.

Maybe?

  • Picrin (does not search the filesystem for libraries)
  • Chicken, Cyclone, Gambit (compilers)
  • The Javascipt ones
  • Kawa (java)
  • Racket, MIT-Scheme (dunno how they work)
  • Ikarus
  • Vicare (difficult to compile on modern systems)