This appendix is about Guile-RPC's portability. Of course, Guile-RPC can be ported to any OS/architecture Guile runs on. What this section deals with is portability among Scheme implementations.
Although implemented on top of GNU Guile, Guile-RPC uses mostly portable APIs such as SRFIs. Thus, it should be relatively easy to port to other Scheme implementations or to systems like Snow. Below are a few notes on portability, listing APIs and tools Guile-RPC depends on.
use-moduleclauses to some other Scheme.
(r6rs io ports)modules of Guile-R6RS-Libs; the official R6RS name of these modules is the same with
rnrsin lieu of
r6rs. MzScheme, Larceny, Ikarus (among others) provide these APIs.
(rpc xdr)module uses Guile's generalized vectors API (see Generalized Vectors). This allows applications to use regular vectors, SRFI-4 homogeneous vectors, arrays, etc., to represent XDR variable-length arrays (see
make-xdr-vector-type). On Scheme implementations that do not support generalized vectors, regular vectors can be used instead.
(rpc compiler)module uses Andrew K. Wright's pattern matcher, known as
(ice-9 match)in Guile. This pattern matcher is portable and available in many Scheme implementations; alternative, compatible pattern matchers are also available sometimes, e.g., in MzScheme.
(rpc compiler parser)module uses Dominique Boucher's LALR parser generator, known as
(text parse-lalr)in Guile-Lib. This package is available on most Scheme implementations and as a “snowball”.
(rpc compiler lexer)module was automatically generated using Danny Dubé's SILex, a portable lexer generator.
(rpc rpc server), which contains a server event loop. This part of the module would need porting to the target system, but it would be quite easy to isolate the few features it depends on.
Portability patches can be posted to the Guile-RPC mailing list where they will be warmly welcomed!