GNU Guile-RPC is a framework for distributed programming under GNU Guile. It is a pure Scheme implementation of the ONC RPC standard, i.e., the “Open Network Computing” Remote Procedure Call standard. ONC RPC is standardized by the Internet Engineering Task Force (IETF) as RFC 1831. It is based on the External Data Representation standard (XDR), known as RFC 4506 (see References).
Remote procedure calls allow programs on different, potentially remote machines to interact together. A remote procedure call is the invocation of the procedure of a program located on a remote host (the RPC server), as the name implies. Doing so requires the procedure arguments on the client-side to be encoded, or marshalled, i.e., converted to a representation suitable for transfer over the network. On the server-side, upon reception of the RPC, those arguments must be decoded or unmarshalled, i.e., converted back to a form that is directly understandable by the server program—for instance, data using Scheme data types, should the server program be written in Scheme. The value returned by the RPC server must be encoded and decoded similarly.
When using the ONC RPC protocol, the way data items are encoded is dictated by the XDR standard. This encoding has the advantage of being particularly compact, allowing for relatively low bandwidth requirements and fast implementations, especially compared to more verbose RPC protocols such as XML-RPC and SOAP.
The XDR encoding is not self-describing, i.e., it is impossible given an arbitrary XDR encoded sequence to determine the XDR type of the encoded data. This is different from D-Bus, for example, which uses a compact and self-describing encoding. In practice, this is sufficient for a wide range of applications.
GNU Guile-RPC provides an easy access to the ONC RPC protocol for the Guile Scheme programmer. In particular, it allows standard Scheme types to be mapped to XDR data types, so that Scheme objects are easily encoded to or decoded from XDR.
Please send bug reports, comments and patches to the Guile-RPC mailing list.