CHANGES OF VERSION 9.9
======================

We have fixed some bugs in the backtracking algorithm.
The program mif2xfig calls now the program fig2dev with 
the option "-leps". Older versions of fig2dev didn't work
with this option.

CHANGES OF VERSION 9.8
======================

Bugfixes again. The update problem of the browsing tool 
should be gone by now.

CHANGES OF VERSION 9.7
======================

Another bugfix which will (hopefully) make PROGRES work
on SuSE 7.0 systems as guest OS on VMware.

CHANGES OF VERSION 9.6
======================

Again, we have fixed several bugs. There were still some
problems with the evaluation of derived attributes and
static paths in the prototype environment. This should not
occur any longer.
The prototype environment is now based on Tcl/Tk 8.0.5 and
can display nodes in different shapes.
Futhermore, a mif2xfig converter has been added to this
release. Our kudos to Ansgar Radermacher.

CHANGES OF VERSION 9.5
======================

This version contains a new implementation of the PROGRES
environment. Please refer to the file 
$PROGRESROOT/man/Menu.Advanced.txt to learn about the
new features. Furthermore, some bugs are fixed.

CHANGES OF VERSION 9.4
======================

PROGRES has got a new instruction: strpos. strpos takes two 
string parameters, and gives the position of the first
string in the second string as result. If the result is 0
then the first string is not contained in the second one.

Otherwise there are quite some bugfixes in that version.

CHANGES OF VERSION 9.0
======================

The PROGRES environment version 9.0 is no longer implemented in
Modula-2, but in Modula-3. This has the consequence that we do
no longer rely on the commercial Sun EPC Modula-2 compiler, but
the public domain Modula-3 compiler from DEC. The Modula-3
compiler runs on a huge number of different platforms and
porting its programs from one platform to another one is not
a big problem, as it was in the case of Modula-2.

Beside the externally (hopefully) invisible port from Modula-2
to Modula-3 we have made the following changes:

- PROGRES is now available on Sun and LINUX platforms.
  First experiments with PROGRES on a PC with an AMD K6
  processor and 64 MB main memory showed that the interpreter
  is about twice as fast as on a Sun Ultra with 64 MB main
  memory.

- The shortcuts (key bindings) for various commands of the
  syntax-directed editor and the micro-emacs text editor
  do no longer use the terminology of very, very old Sun
  keyboards. Furthermore, some key bindings have been
  changed such that it possible to work with PC keyboards.

- The old graph browsers EDGE and tkbrowse are no longer part
  of the environment.

- The new graph browser ffgraphs (based on a generic graph
  browser implementation of the University of Passau - see
  README) is now an official and documented part of the release.

- The layout algorithm package hglayout from the University
  of Toronto, which is still used for the layout of graph schemas,
  is not available on LINUX. It will be replaced soon by our
  own implementation of a constraint-based graph layout algorithm.

- The constraint-based graph layout algorithm Combiyama
  (Constraints + Sugiyama) is already part of the PROGRES
  environment, but still under development.

- The PROGRES interpreter version 9.0 about 50% faster than the
  previous version.

- The compiled PROGRES code of version 9.0 is about twice as
  fast as the code of the previous version.

- A significant number of storage leaks are no longer existent.

- The size of the stored backtracking information in directory
  $TMPGRAS has been reduced significantly. This is especially
  true if deterministic productions and transactions (with
  qualifier [0:1] or [1:1] as well with parallel execution
  qualifier * or +) are used.

- The graphical editor prototyping framework is no longer
  realized on top of tklayout from TU Berlin, but on top of the
  graph layout package ffgraphs from the University of Passau
  (and Tk/Tcl).

- The PROGRES environment as well as generated prototypes support
  writing/reading graphs to/from text files.

- Compiled PROGRES transactions, productions, etc. may be called
  from Tcl-scripts.

- Layout operations of graphical PROGRES editors (like moving a node)
  with the mouse provide immediate feedback as long as the mouse
  button is pressed and the command is still active.

- New editing commands allow changing of the optional/obligate
  and the single/set property of nodes on the left- and right-
  hand sides of productions.

- The realization of integrity constraints has been improved.
  A number of bugs are eliminated and local node class or type
  constraint have repair actions, too.

- Lots of bug fixes have been made. It is no longer dangerous to use
  type cardinalities [0:1] and [1:n]. Furthermore, the handling of
  materialized (static) paths and derived attributes with complex
  definitions is much more reliable.

- We are no longer aware of any incremental recompilation bugs
  i.e. it should no longer be necessary to kill the intermediate
  graph rewriting code representation of a specification after
  complex editing operations (which is used for interpretation and
  C code generation purposes).

- The PROGRES language documentation has been improved. A complete
  language manual of about 50 pages is available in directory
  $PROGRESROOT/man as a ps-file and as a framemaker hypertext document.


CHANGES OF VERSION 8.0
======================

- New PROGRES constructs have been added like integrity
  constraints or a Prolog-like Cut for controlling 
  backtracking (cf. CONVERT-TO-NEW-VERSION).

- Size of backtracking information (stored in so-called
  choice graphs has been reduced considerably).

- New, but still undocumented graph browser and user
  interface for prototypes has been added.

- Imported types of dynamically determined size (like
  delivered text buffers) are now available.

- A couple of new examples of specifications have been 
  added.

- The size of processable specifications (which may
  be read from file, etc.) has been increased.

- Optional attributes, local variables, and formal
  parameters are now fully supported. They have either
  a single value or the value "nil" and their decls.
  are qualified with [0:1].

- Many other bug fixes ...


CHANGES OF VERSION 7.1
======================

- New case studies (examples of specifications) in
  subdirectory data/specs!

- Graphical (schema) editor supports rotate of edge loops 
  and attribute declarations around class/type boxes.

- Graphical (schema) editor has NEW LAYOUT ALGORITHM
  Combiyama = Sugiyama + Layout Constraints:

  * Layout constraints determine vertical layout of
    graph and influence horizontal layout.

  * Remaining degrees of freedom (in horizontal direction)
    are resolved by Sugiyama like layout algorithm.

- Saving and resuming interpreter sessions is now working.

- Prototypes are now able to display set attributes as
  well as imported type attributes.

- Incremental recompilation of graph schema initialization
  is now reliable.

- Underlying database system supports now the creation of
  about 200 pages long specifications.

- Many bug fixes in backtracking mechanisms.

- The operators "string" and "value" for converting values
  to string representation and vice versa work now for
  all possible types.

- And many other bug fixes ... .


CHANGES OF VERSION 7.0
======================

- Release is now available for Solaris 2 and SunOs 4.1.3 
  on Sun workstations!

- The implementation language for implemented types and 
  functions is now C. A standard example in the release
  demonstrates how these types and functions may be used
  to realize file input/output, long text buffers, etc.

- User interface of generated prototypes is modified (better
  support for definition of views and binding mouse selections
  to input parameters, interactive definition of new menues,
  hiding of command groups, renaming commands, ... ).

- Generated prototypes support multi-user access to graphs.

- Pseudoparallel execution of productions is supported: a
  production may be applied to all occurrences of its left-
  hand side in a graph in parallel if and only if left-hand
  sides overlap in unmodified parts only. Otherwise, the
  effect of the parallel application of a production is
  unpredictable. For this purpose, productions have an
  additional flag with values "*" and "+". The difference
  between both flags is that a "+" production fails if
  there is not a single match in the host graph, but a
  "*" production returns successfully without modifiying
  the host graph.
  
- New commands in the DISPLAY command group:
   - 'HideBodies' hides each visible section body
     within the current specification.
   - 'HideDecls' hides each visible declaration body 
     within the current section.
   - 'OpenWindow' creates a new presentation of the currently
     selected (sub-) graph. This new presentation has the same
     underlying representation structure as its master presen-
     tation. Therefore, both presentation have the same current
     increment etc.

- Underlying GRAS database system should be (considerably)
  faster.


CHANGES OF VERSION 6.7
======================

- NICOLAY = New Incremental COnstraint-based LAYout algorithm
  is now part of the PROGRES environment. It is used within the
  graphical scheme editor of PROGRES and will be used in future
  versions of graph browsers (see new command group CONSTRAINT
  and man/GUIDED_TOUR.tex.

- tk/tcl-based browser offers now the functionality to save
  selected parts of a graph as a more or less readable text file
  (cf. browser/README-TK.TCL).

- Node types and node classes play now about the same role, i.e.
  node types may have attributes and may be used within declarations
  of edge types, attributes, variables, etc. There are still two
  exceptions from the general rule that node types may be used
  wherever node classes where allowed until now:

  * Declaration of node type: a node type is still an instance
    of a single class, i.e. node types form the leafs of the
    graph scheme inheritance hierarchy.

  * Declaration of node type parameters: the type of a node type
    parameter (or variable) is still required to be a node class.

  See man/PROGRES_SYNTAX and man/PROGRES_Nachtrag.ps as well as
  man/ProgresForBeginners.ps for more information about PROGRES 
  version 6.7 and its syntax.

- Parametric Polymorphism: the type of node type parameter may
  now be another formal parameter within the same parameter list.
  Useful examples for true parametric polymorphism are presented
  in man/ProgresForBeginners.

- Autosave Feature: the frequency of autosaving open specifications
  as text files has been reduced dramatically. Please choose a
  suitable frequency on your own (cf. man/GUIDED_TOUR.tex).

- Now stable C and tk/tcl-based generation of prototypes with
  documentation in man/GUIDED_PROTOTYPING.tex.

- The usual number of bug fixes ...


