
            SCIX -- A Scheme Interface to the X Window System


This directory tree contains the entire source for the SCIX system (currently
at version 0.96, i.e., beta-release). SCIX is a completely object-oriented
interface between the X Window System and the programming language Scheme.

It has been implemented with the Scheme->C system developed at Digital
Western Research Laboratory in Palo Alto by Joel Bartlett (Scheme->C is
available by anonymous ftp from gatekeeper.dec.com [16.1.0.2]). A consequence
of this is that SCIX is currently only working on architectures that Scheme->C
works on. Today this is primarily DECstations and VAXes. Ports of Scheme->C
to Sun3, Sun386 and Sparc were announced today (3 April 90) and SCIX does
build and run on at least the Sparc, but we have not had the time to test these
ports properly yet. SCIX itself and Scheme->C should be rather easy to port.
Most of the SCIX system is written in standard Scheme (according to the
R^3.99RS). A few low-level routines are written in C. No programming libraries
(like Xlib or Xt) are used to generate SCIX, but some include files from the
X distribution are.

N.B. As we use the extend-syntax macro mechanism (described in Dybvig: "The
Scheme Programming Language") which uses the symbol '... we had to make a
minor change in the Scheme->C reader. The patch (six lines of code) is
included in the file Schemetoc.patch and has to be applied to the Scheme->C
system before building the SCIX system. Please read the information at the
top of the patchfile before patching (always be careful when patching a
compiler...).

An ordinary "make" here will result in the files "scix", "libscix.a" and
"libscixt.a" in this directory. "scix" is a Scheme interpreter with additional
routines to handle the interface to the X Window System and a number of demos.

The added functionality is primarily described in our report, the PostScript
source of which is available separately. The different demonstrations are
described in the README file in the demo directory and some of them in greater
depth in the report.

The files "libscix.a" and "libscixt.a" are archives of the functions that are
used if or when one want to compile stand alone applications. libscix.a is
fairly stable and provides functionality for the Scheme programmer roughly
comparable to somewhere between what  Xlib and the X Toolkit Intrinsics
provide for the C programmer.

libscixt.a contains the first stumbling steps of a widget library written
entirely in Scheme. Currently it only contains a finite state machine and
various buttons that were needed for the demonstrations. This toolkit is not
in any way finished, stable or even outlined right now.

The entire SCIX system was developed by us as the subject of our masters
thesis. The project was initiated, advised, and sponsored by Magnus Persson
at Digital Equipment AB, Sweden. Our advisor at KTH has been Joacim Halen.

Please let us know if you have any problems with this system or if you have
specific ideas on anything in it. Send all bugs and suggestions to

	scix@nada.kth.se

SCIX is not a product but we (and Magnus Persson at Digital) intend to
continue to support and develop SCIX in the future. We are particularly
interested in investigating widget design in Scheme and the associated
problems.

Hakan Huss and Johan Ihren
<huss@nada.kth.se> and <johani@nada.kth.se>

Department of Computing Science (NADA),
Royal Institute of Technology (KTH), Stockholm, Sweden
