This is the release 2.0 of STk
------------------------------

This software permits to use the John Ousterhout Tk library with the Scheme
programming language. The Scheme interpreter used here is a derivative of the
well known siod package. Modifications done on the Scheme interpreter consist
principally to bring the interpreter conform to R4RS. For now, conformance
is not perfect and some points need much more work; future releases should be
fully R4RS conformant.

IMPORTANT NOTE - IMPORTANT NOTE - IMPORTANT NOTE
------------------------------------------------

STk bignums are implemented with the GNU mp APIs. This library provides a 
VERY EFFICIENT implementation of multiple precision numbers. This library 
is placed under the GNU GENERAL PUBLIC LICENSE. However, to avoid to fall 
under the restrictive GPL terms you can use the FGMP package (FGMP is a 
public domain implementation of a subset of the GNU gmp library with the
same API, written by Mark Henderson <markh@wimsey.bc.ca>). This package 
has the advantage to be totally *FREE*, and the disadventage to be *SLOW*.

So, if your concern is speed, and if the GPL is not a problem for you, 
use the Gnu package.

INSTALL
-------

To install this package:

*** 1. Configure the package for your system.

In the directory  that this file is in, type 

	$ /bin/sh ./configure

This line runs the `configure' shell script. This script attempts to guess
correct values for various system-dependent variables used during compilation,
and creates various files necessary for package building.

Default configuration will compile the package with the following the "cc"
compiler and the "-O" option. This can be changed by changing the default
value of the CC and CFLAGS shell variables. For instance:
	
	 $ /bin/sh -c 'CC=gcc CFLAGS="-O2 -g" ./configure'

will configure the package to use the "gcc" compiler with options "-O2" and "-g"

Furthermore, default configuration uses the (fast) Gnu Mp big numbers library.
To use the Mark Henderson (slow but free) Mp clone use the
"-with-libmp=libfgmp" option to the configure script. As usual, 


By default, `make install' will install the package's files in
/usr/local/bin, /usr/local/lib, /usr/local/man, etc.  You can specify
an installation prefix other than /usr/local by giving `configure' the
option `--prefix=PATH'. For instance

	$ /bin/sh -c 'CC=gcc ./configure -with-libmp=libfgmp -prefix=/scheme'

will configure the package to use the free bignum library and will install 
all the needed files in the /scheme/bin /scheme/lib ... directories.


*** 2 . Compiling the package (and testing it)

Once configuration is done, just type 

	$ make

in this directory to make the whole system. Once the make is terminated you
can do a minimal test of stk with

	$ STK_LIBRARY=Lib Src/stk

This will bring a little squared window on your screen (if your DISPLAY
variable is correctly set). When this is done, enter the following  line

	(pack (button ".test" :text "Hello world" :command '(destroy ".")))

at the scheme prompt. This will display an Hello world button. Clicking on it 
will leave the scheme interpreter. A bigger demo, showing all the Tk widgets
can be obtained by doing
	
	$ make widget-demo

Some other demos are located in the "Demos" directory. See the README file
to know how to run them.


*** 3. Installation

To install stk in the definitive place, type

	$ make install


Have fun

THE STKLOS PACKAGE (OPTIONAL)
-----------------------------

*******************************************************************************
* ATTENTION: STKLOS IS VERY VERY SLOW. IT IS AN EXPERIMENTAL VERSION. IT IS   *
* NOT  INTENDED TO BE USED FOR NOW. IT IS RELEASED HERE TO PERMIT TO 	      *
* INVESTIGATE A CLOS-LIKE OBJECT PARADIGM WITH TK. A NEXT RELEASE SHOULD      *
* AMELIORATE THINGS							      *
*******************************************************************************

STklos is an extension of Stk which provides a la CLOS objets to STk. 
If you want to try it you have to type 

	$ make stklos

This will load the OO extension and "dump" an image to a file (WARNING: 
dump works only on Sun platforms running SunOS 4.1.x for now).
For more details on STklos, see the README file in the package directory.

Optionally, you can also  install stklos in the definitive place you have
specified in, with 

	$ make install.stklos


BUILDING STK WITHOUT TK SUPPORT
-------------------------------

STk can be compiled without the Tk support. If you want build only the Scheme
interpreter, edit the Makefile in the Src package and delete the -DUSE_TK
option in the CFLAGS option definition. Issue a 

	$ make clean
	$ make 

to build a new STk interpreter without Tk support


FILE ORGANISATION
-----------------

Stk
  |___ Contrib	   For now, this directory contains a rewriting of
  |		   the Tcl widget demo in STK and the STk-inspector.
  |		   Both packages are due to Eric Fintzel (fintzel@kaolin.unice.ft)
  |___ Demos	   some original Tk demos rewritten for stk plus some other
  |                stuff found on  the net. 
  |___ Doc	   Documentation of STk.		   
  |___ Lib	   a set of Scheme files used by the interpreter
  |___ Src	   contains source files of stk (i.e. the sources files of the 
  |		   interpreter + some glue files between Tk and Scheme).
  |___ STklos      an CLOS-like object extension of Scheme based on the
  |    |	   Tiny CLOS package.
  |    |__ Tk      A library of Tk objects based on the STklos object
  |		   extension package
  |___ Tcl	   contains a set of unchanged files of the Tcl library which 
  |		   pertain in Stk
  |___ Tk 	   contains a modified version of the Tk library. Most of the
  		   files are unchanged; Search the string ORIGINAL_CODE to see
  		   performed changes.



SUPPORTED ARCHITECTURES
-----------------------

For now, STk is known to run only on
	- Sparc (SUNOS 4.1.x)
	- Dec 5xxx (Ultrix 4.2)
	- SGI (IRIX 4.05 and IRIX 5.1.1)  -- Thanks to Steve Olson 
					     (olson@juliet.ll.mit.edu)
	- DEC Alpha 3000/400 (OSF-1 V1.3) -- Thanks to Dirk Grunwald
					     (grunwald@foobar.cs.colorado.edu)

If you install it on another Unix box, please let me now the diffs you used
such I can integrate them in the next release.


PLANS FOR NEXT RELEASE
----------------------

* Integrate the STklos (or parts of) in C.

* Provide a better Unix support in Scheme for interface programmers.

* Rewrite dump primitive and provide a load able to link ".o" files (as Elk).

* Provide more support for debugging

