Next: GNU Free Documentation License, Previous: References, Up: Top [Contents][Index]
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.
(rnrs bytevectors)
and
(rnrs io ports)
modules of Guile-R6RS-Libs (also included in
Guile 2.x). MzScheme, Larceny, Ikarus (among others) provide these
APIs.
(rpc xdr)
module uses Guile’s
generalized vectors API (see Generalized Vectors in The GNU
Guile Reference Manual). 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 (system base lalr)
in
Guile 2.0. 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 compiler parser)
uses Guile’s “source
property” API, which allows such information to be attached to pairs
(see Source Properties in The GNU Guile Reference Manual).
Behind the scenes, source properties are implemented using a weak hash
table, so it should be easy to port them to other Scheme
implementations.
(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!
Next: GNU Free Documentation License, Previous: References, Up: Top [Contents][Index]