This is the release 2.1 of STk
-------------------------------

STk is a Scheme interpreter which can access to the Tk graphical package.
Concretely it can be seen as the John Ousterhout's Tk package where
the Tcl language has been replaced by Scheme. 

The Scheme interpreter is now R4RS conformant.

This release provides an efficient object oriented system called STklos. 
STklos is a full OO system with multi-inheritance, generic functions,
multi-methods and a true meta object protocol). STklos can be dynamically
loaded on systems which support this feature. By default, only the statically
linked version will be built. See below for more details.


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.
|
---------------------------------------------------------------------
END OF IMPORTANT NOTE - END OF IMPORTANT NOTE - END OF IMPORTANT NOTE



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 the "gcc"
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=another-cc CFLAGS="-O2 -g" ./configure'

will configure the package to use the "another-cc" 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. 


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.

NOTE: By default configure includes STklos support in the interpreter. See
below how to permit dynamic loading of STklos.


*** 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

	$ (cd Src; /bin/sh test-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 *root*)))

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


NOTE ON THE STKLOS PACKAGE
--------------------------

STklos is an extension of Stk which provides a` la CLOS objets to STk. Since
2.1 most of STklos is written in C. So it is far more faster than before (it's
usable now :-> ). 

Before version 2.1, STklos was not compiled by default and you have to install
it separately. Now, it is *STATICALLY* linked to the stk interpreter, since it
is the more portable way to built it. However, you can also build an
interpreter without STklos support with the '-with-no-stklos' configure option
and load it dynamically. This is not the preferred way since it only works on
Sun and the gain is limited (executable will be less than 30 Kbytes
smaller...) .  Whatever the solution you choose (dynamic or static load), all
the stuff will be installed when you execute 'make install'

For more details on STklos, see the README file in the STklos directory.


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	   The contributors directory
  |___ Demos	   some original Tk demos rewritten for stk plus some other
  |                stuff found on  the net. 
  |___ Extensions  This directory contains extensions of the core interpreter
  |		   (hash tables, time support). See the README file for more 
  |		   details
  |___ 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 (subdirectory Composite contains
  |		   composite widgets definitions	
  |___ 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 and Solaris 2.3)
	- 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)
	- Linux 1.0

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.


MAILING LIST
------------

There is a mailing list for STk (See the file MAILING-LIST for more
informations)


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

* provide a TRUE documentation for STklos and particulary of its MOP.

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

* Provide more support for debugging


