 -*- Mode: Text;  -*-
 File: BEWARE
 Author: Heinz Schmidt (hws@csis.dit.csiro.AU)
 Copyright (C) CSIRO Division of Information Technology, 1992
*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
* Created: Thu Mar 19 16:33:35 1992 (hws)
*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

While all of the major changes are upwardly compatible extensions,
some of them may not be in the future cleanup Release 1.0. Or they may
be integrated in 1.0 in a slightly modified form. Release 0.2 is also
a vehicle for feedback from users, particularly on the use of
initialization and exception handling.

A few changes are not compatible indeed. 


 * CS command line options conflicting with .sather flag overrite

Command line options of the compiler override the .sather options
now. You will find this important if we want to run things quickly
without the need of editing several files.  Also we needed a way to
affirmatively pass target machine specific information to the compiler
during installation.


 * Shared variable dependencies are class wise acyclic

The fix to the shared variable initialization requires that
your class attribute dependency relation USE+ is acyclic. USE+ is the
transtive closure of USE, defined as follows
	
	cattr USE cattr'  iff  cattr' occurs in the init expression
	                       of cattr

Based on the resulting partial order you can now control the
initialization order and avoid non-deterministic results across
different compiles and different orders of source files in .sather.


 * Alias syntax changed relative to 0.01i

If you have used the 0.01i (ISA) compiler at ICSI, your sources
will use the older 
	alias new = old
syntax. You need to change this to "alias new old"


 * Initialize no longer visible

With the above compiler your sources had to call the public
"initialize" routine to run attribute initializations. In ICSIM
for instance we had a general class ICSIM_ANY with a routine

   create(init_pmap: PMAP): SELF_TYPE is
      -- Generic creation.  Builds a functioning instance and runs `initialize'.
      res := new;
      res.initialize(init_pmap).finish(init_pmap);
   end;

