Next: GNU Free Documentation License, Previous: References, Up: Top
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.
define-module and use-module clauses to some other
Scheme.
(r6rs bytevector) and
(r6rs io ports) modules of Guile-R6RS-Libs; the official R6RS
name of these modules is the same with rnrs in 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!