Changes from SCIX v0.97 to SCIX v1.00
-------------------------------------

Summary of changes:

a) The object oriented system is completely reimplemented.
   Unfortunately the interface to it changed with it.
b) The toolkit outline has been completely revised and very much
   expanded. It is called STOX (Scheme Toolkit for X) and now provide
   sample implementations of the widgets Label, StringEditor,
   Scrollbar, Pulldown-menu, Text-window and Container in addition to
   the various buttons that were present in another form in 0.97.
   There is also an automatic widget layout system based on TeX-like
   hboxes and vboxes.
c) To avoid the problems with confusingly many parameters to class
   constructors a system based on keywords and default values has
   been adopted.
d) The amount of garbage generation has been reduced. This, together
   with other changes, has improved performance substantially.
e) SCIX applications need no longer block the interpreter. They can be
   launched so that they return immediately so that the interpreter can
   be used.
f) A number of new applications are included to demonstrate the use of
   the SCIX interface.
g) Authentification is now implemented.
h) The bug has been fixed :-)


1. Changes in the object system.

The implementation is entirely new, but most of the semantics has been
kept. There are two changes in the semantics for define-class:

a)	Optional parameters to the constructor are indicated with a dot,
	like in ordinary Scheme procedures: (define-class (foo x y . z)

b)	The "inherit" clause used to look like
	...
	(inherit (<classname> <args>) ...), i.e. (inherit (foo a b)).
	It has been changes to (inherit (<classname> <list-of-arguments>),
	i.e. (inherit (foo (list a b))).

Previously the result of (define-class (<classname> <args>) ...) was a
new constructor, make-<classname>. Now the result is not a constructor,
but rather a class object, <classname>, to which the class method 'make
is sent to create new instances: (foo 'make 1 2) --> a new instance of
"foo".


2. Changes in the toolkit.

The old toolkit was more or less junked. The main thing that we kept
was the deterministic finite state machine class dfsm. The new
toolkit, STOX, has a much more hierarchical design and we hope that it
will useful. However, it is still in a state of change, so the interface
to STOX might very well change in the future. Probably mostly through
extension rather than changes in the current interface though.


3. Changes in the use of instance constructors.

In the last version of SCIX many constructors had confusingly many
parameters. For example to create a window with make-window ten parameters
were needed:
	
	(make-window width height depth x y
	             parent border-width class visual screen)

As many of the parameters were usually the same it was an annoying system.
No it is possible to use a keyword based system instead of (or together
with) fixed parameters:

	(window 'make 'width 100 'height 150 'screen scr)

All parameters not supplied with a keyword will be using default values.
The defaults for the different parameters to different constructors are
described in the documentation for both SCIX and STOX.


4. Substantial reductions in the amount of generated garbage.

In the prrevious version of SCIX some parts of the system, especially
the X assembler, generated copious amounts of garbage. Very much of this
has been hunted down. SCIX still generates garbage of course, but not
as much... This together with other optimizations, especially the new
object system, has improved performance quite a lot. There are still
some major optimizations to try, though, that have not yet been attempted.


5. No longer necessary to block the interpreter.

Thanks to a new feature of Scheme->C it is now possible to launch SCIX
applications and have their events managed without blocking the
interpreter. Thus, it is possible to launch several applications in
parallell and run and debug them from the interpreter while they are
still "live".


6. New applications.

Some old examples have been removed, the others have been modernized and
several new applications have been written. The new applications include
a new example launcher and a multi-server Battleships game.


7. Authentification.

SCIX now correctly uses at least the MIT-MAGIC-COOKIE-1 authorization
protocol. Other protocols should work if they work with the
XauGetBestAuthByAddr-mechanism in X11R5.
