15JULY99 v3.8
   - rationalised some of the libraries. Removed CIsupport as
     FIO no longer needed it. Also tidied up the back end for
     potential GCC integration. Also fixed p2c to work with
     gcc 2.8.1

2JULY99 v3.7
   - improved M2GenDyn486 to perform more optimization on indexed
     addressing with strings.
   - finally added nested procedures (the abomination of desolation :-)
     and retrofitted them to all code generators and gdb stabs generation.
   - m2f is now a full Modula-2 compiler loosely complying to
     Programming in Modula-2 Second Corrected Edition by N. Wirth
   - fixed bugs in M2GenAPU.mod

26JAN99 v3.6
   - fixed oversight in M2Pipe586.mod so that -Odynamic can
     be used without -Oi586 flag without causing really slow compiles.
   - fixed bug in ASM END with -Odynamic. Flushing asm before next
     pipelined instruction.
   - fixed two bugs in is32 code generator.

12JAN99 v3.5
   - fixed a bug in is32 code generator and added
   - alignment optimizations to code and data.
   - Improved 586 code generator and made compiler operate with
   - ismene and the microkernel. Complient with redhat 5.2.

18DEC98
   major alterations include:
   - better 586/686 pipelining
   - faster parameter passing (using words not bytes). Similar to gcc.
   - alignment of parameters, data and stack. Significant speed improvements
     for both 586 and 686 targets.
   - 2 bugs found in M2GenDyn486
   - pipelining now includes more instructions and understands the cache.
     Pipelining can be used with the is32 code generator to predict performance
     (accurate to within 8%)
   - flag -pedantic will issue warnings if excessively slow code is being issued.
     (Array parameters etc)
   - is32 (apu) code generator has been modified slightly to bring it in line with
     pentium alignment. Also a few code generator bugs fixed.
   - new option -Oworst included, which will perform the worst pipelining possible.
     Useful only as a comparison.
   - downside is that the new paramater mechanism and data alignment has not
     been stressed enough.

12SEPT98 v3.4
   - improved code generation in M2GenDyn486
   - improved is32 code generator
   - ported compiler to libc2 and redhat 5.1
   - fixed more bugs in dynamic code generator

11MARCH98 v3.3
   - fixed bugs in dynamic code generator and integrated it with the
     i586 pipeline optimizer.
   - new code generator can be invoked by with the pipeline optimizations by
     using -Odynamic -Oi586 flags
   - can use -On flag if willing to be patient with the compiler, this causes
     the pipeline optimizer to search hard for optimal pipeline solutions.
     (Number of instructions to examine = 3 * n. Default, n, is 2).
   - improved many error messages
   - fixed error checking in FIO.mod
   - upgraded the converted p2c bootstrap tool from p2c 1.19 to 1.20

7JULY97 v3.2
   - fixed bug in static code generator. (VAR i: CARDINAL.. FOR i := 0 TO 10)
   - fixed bug in dynamic code generator. Complex expression multiply
     caused wrong register to be used.
   - type incompatability was internally generated when using expressions
     using SIZE(..).
   - better error messages for undeclared identifiers.

21MAY97 v3.1
   - fixed install scripts, autotests, and made package unpack into a
     single directory.
   - fixed help -h option.
   - install, regression and binary.release targets implemented in top makefile
   - no major change to compiler per se.

13MAY97 I've just released v3 of this Modula-2 compiler.
The changes from v2 are:

   - new code generator (invoked by -Odynamic)
   - better error messages and warning messages
     (unused variables, uninitialized variables etc).
   - MIN and MAX implemented
   - optional bounds checking and profiling
   - fixed bug in common subexpression elimination
     and improved code optimization
   - altered internal quadruples to aid code optimization
   - many small library fixes
   - made compiler generate varient record debugging info
     which is compatible with GDB
   - improved regression tests

[ message from when v2 was uploaded ]

hi,
  I've just uploaded yet another Modula-2 compiler to tsx-11.
The compiler is based on 2nd Edition Modula-2 (it requires
identifiers to be exported from defintion modules).

Briefly the pros and cons are:

Cons first

(i)   slow, verbose code generated, compared to gcc
(ii)  does not allow nested procedures
(iii) no error recovery

Pros

(i)    code generator is reliable
(ii)   code generator is in one module so it can be replaced..
       by anyone interested in code generation (final year project?).
(iii)  bootstrapped via a hacked p2c (included in tar)
(iv)   generates GAS 386, MASM 386 and also Bruce Evans
       as86 compatible 8086 small model code.
(v)    no declaration order required.
(vi)   easy interface to C
(vii)  works with GDB
(viii) abstract data types can be of any type.
(ix)   SYSTEM.mod, SYSTEM.def are real modules and
       items can be added. (For example IOTRANSFER for real time systems).

Gaius Mulley (email gaius@glam.ac.uk)
