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 and Department of Computing Science (NADA), Royal Institute of Technology (KTH), Stockholm, Sweden