Scott Musman : May 1993

General Information:

This is an interim release of CLX for AKCL under Linux. It is intended
for those of you who want some basic windowing capabilities from AKCL.
I consider this to be an interim release as this version of CLX will
only load and run when using the enclosed PCL as a substitute for
CLOS. 

PCL is a public domain implementation of CLOS (the Common Lisp
Object System) which is the object oriented extension to Common Lisp
as defined by Cltl 1. CLOS is now officially part of the Common lisp
language spec as defined in Cltl 2 and the forthcomming ANSII spec.

For those of you who are unfamiliar with CLX, it is a very low level
toolkit which interfaces Lisp with X windows. CLX can be thought of as
an Lisp implementation of the C XLIB functionality. It does not provide
the widgets or other high level capabilities normally provided by
toolkits. 

CLX has several load options and should be runnable in a standard Cltl
1 Lisp using structures instead of pcl classes to implement the io
mechanisms. For some reason this version of CLX (which was taken from
the "packages" directory from ma2s2.mathematik.uni-karlsruhe.de) does
not run without pcl. It should not be too hard to fix this, but I
haven't had the time too look at it yet.

Because CLX provides such a low level interface to X, it is only
moderately useful on it's own. I will be working in the near term on
making sure that we can get CLUE (a Lisp implementation of something
like the Xtk level) and then CLIO (an actual set of widgets like
buttons, scrollbars etc) to work with this version of AKCL.
At the current moment, it appears as if we may have to use an older
version of PCL to get CLUE and CLIO working? If anyone has already got
these packages working in AKCL, I would appreciate knowing about it.
It may save some work for others!

Some advice:

Lisp is a memory hog for your system! An akcl image with pcl and clx in
it takes up about 7Mb of disk space and has a resident set size of ~4Mb
when running the menu demo. CLUE and CLIO will be even bigger! For
this reason I recommend that you have as much memory in your system as
you can afford and a resonably sized swapfile (i.e. minumum of 8Mb). I
have found using CLX and AKCL under and 8Mb of RAM Linux system to be
barely tolerable. I noticed swapping every time I moved my mouse from
window to window. For this reason, I recommend that you should get at
least 16Mb for your machine if you intend to use AKCL on a regular
basis.  

The enclosed source code should also work with CLISP (which comes with
the Linux SLS system). The advantage of using CLISP over AKCL is that
it is smaller (it is only 3Mb for CLX in contrast to AKCL's 7Mb) than
AKCL and will work better on smaller hardware configurations. The
disadvantage of using CLISP is that it only BYTE COMPILES the lisp
code rather than compiling down to machine instructions like AKCL.
While this makes CLISP slower than AKCL for compiled code, the bottom
line is that running slower CLISP code can still be faster than
constantly waiting for your disk to swap-in your faster running AKCL 
code.

Installation:

To install the CLX simply start up akcl in the directory created by
the tar tapes (i.e. the one with this README file in it). Then type:

> (load "load-clx")
...
...
;;; make sure you have at least 8Mb before you do this
> (system::save-system "akclx") ;;; saves a system image with pcl and clx
;;; This command exits lisp when it is complete

Testing the Installation:

Test the clx image by envoking the akclx image and loading the menu
demo. If you are still in the installation directory you can type the
following: 

akclx
> (load "clx/demo/menu")
...
> (in-package :xlib)
..
XLIB> (just-say-lisp "")
...

If the above mentioned demo does not pop-up a menu asking you to click
the mouse over your favorite language, then something has gone wrong.
The most common error is due to an X-Window permission error. If this
occurs then type "xhost +" (you don't really have to enable all hosts)
in another xterm and then retry the command. If it still doesn't work
then please email me with a description of the problem, the version of
Linux etc. I do not have have much time to deal with such problems,
but I am willing to try and help you out if you are REALLY stuck!

If everything works, you may then move the executable to
/usr/local/bin or some other appropriate location on your system. 



	Best of Luck!

		-- Scott
		musman@ai.mitre.org
