This file describes recent user-visible changes in gm2.  Bug fixes are
not described.  There are more details in the man and info pages.

gm2 is now in the GCC tree and therefore these version numbers are
historical.

VERSION 1.9.5
=============

* More subexpressions tokens are created and accuracy of error positions
  within subexpressions has been improved.
* the GCC switch -fanalyzer can be used with Modula-2.

VERSION 1.9.4
=============

* More GCC error routines utilized for error messages, erroneous
  subexpressions are more accurately reported.
* Complete type checking now performed.

VERSION 1.9.3
=============

* GCC error routines utilized for error messages.
* complete whole number runtime range error detection finished.
* improved m2-plugin which analyzes the call graph and will issue
  warnings if the compiler detects a exported procedure will cause
  a range error.  The plugin will issue an error if the range error
  will be called from the module constructor/deconstructor.

VERSION 1.2.0
=============

* New improved more accurate source/line correlation in debugging output.
* -fm2-g generates nops to further improve debugging single stepping.
* -fm2-whole-program whole program optimization available.
* works with gcc-5.2.0 under x86_64, x86_32, arm 64 bit and arm 32 bit.

VERSION 1.0.4
=============

* Bug fixes to release 1.0

VERSION 1.0
===========

* All ISO libraries are complete.
* All ISO language implemented.
* All regression tests pass on both x86_64 and x86_32 Debian GNU/Linux
  platforms.

VERSION 0.68
============

* more ISO library modules are implemented.
* many errors are much more informative and indicate what the
  compiler has seen and what it expects.

VERSION 0.63
============

* many ISO library modules are implemented.
* Exception handling is complete and it can coexist with swig.
* all errors now include column information.  Also added -fxcode
  option which issues errors in Apple Xcode format.
* shared libraries are now implemented, to link against the shared
  libraries use the new option -fshared.  Likewise to generate a
  shared library use the -fshared option.
* the keyword FINALLY is now implemented and both the initialization
  and finalization blocks map onto GNU/Linux shared library
  constructor and deconstructors.
* the PIM libraries are built with -O0, -O2, -O2 -fshared, -fshared.
* a new option -fswig automatically generates a swig interface file
  corresponding to the definition module being compiled.
  This allows Python and other scripting languages to call Modula-2
  modules.
* new options, -fobject-path, allows users to specify the path for
  all objects whereas -I specifies the path for the library sources.
* -fmakeinit option introduced which will generate a file
  _m2_modulename.c in the current directory.
* introduced fixed sized types in the SYSTEM module.

VERSION 0.62
============

* all language options changed to -f.  Warning options are
  still -W.  Introduced memmove to Builtins.def.
* Introduced gm2/gm2-libs-pim/BlockOps.{def,mod}
* gm2/gm2-libs-pim/BitByteOps.{def,mod}:  added.
* -O now works on compiler and passes make gm2.paranoid.

VERSION 0.61
============

* builds when grafted onto gcc-4.1.2

VERSION 0.52
============

* tagged ready for branch for gcc-3.3.6 so that the head
  can be developed with gcc-4.1.0

VERSION 0.51
============

* all regression tests pass on LP64 and i386 GNU/Linux

* declaration of variables at particular addresses is now implemented.
  Now gm2 is a full PIM Modula-2 compiler and hence the formal release.

VERSION 0.50
============

* all regression tests pass on LP64 and i386 GNU/Linux, i386, Mac OS X.3 G5

* gm2-harness 0.7 will download, patch and build gcc, gdb, gm2 with the
  SET and TYPE enhancements below. gm2-harness-0.7 also honours the
   --prefix= option.

* Much better dwarf-2 debugging support and when used with
  a patched gdb-6.3 the programmer can display RECORDs,
  ARRAYs, SETs, subranges and constant char literals in
  Modula-2 syntax.

* it currently complies with Programming in Modula-2 Edition 2, 3 and 4.
  Users can switch on specific mutually exclusive features by using
  -Wpim or -Wpim2.

* gm2 supports full PIM Modula-2 (except variables located at
  particular addresses).

* profiling (-p) option is now available.

* module priorities now implemented.

* Logitech compatible libraries: Break.def, CardinalIO.def,
  Conversions.def, DebugPMD.def, DebugTrace.def, Delay.def, Display.def,
  ErrorCode.def, FloatingUtilities.def, InOut.def, Keyboard.def,
  LongIO.def, Random.def, RealConversions.def, RealInOut.def,
  Strings.def, Termbase.def, Terminal.def, TimeDate.def have been implemented.

* all Ulm libraries are available.

VERSION 0.49
============

* supports sets of any ordinal size (memory permitting).

* implements ISO Modula-2 SYSTEM which can be switched on via: -Wiso.

* easy interface to C, and varargs can be passed to C routines.

* University of Ulm libraries are installed together with the compiler
  and can be accessed via: -Wlibs=ulm

* some Logitech libraries have been implemented and can be accessed via:
  -Wlibs=logitech

* coroutines have been implemented in the PIM style and these are accessible
  from SYSTEM. A number of supporting libraries (executive and file descriptor
  mapping to interrupt vector libraries are available through the
  -Wlibs=pim-coroutines switch).


VERSION 0.42
============

* MinGW cross compilation port released.
  Please see http://floppsie.comp.glam.ac.uk/Glamorgan/gaius/web/gm2-mingw.html
  for building details.

VERSION 0.41
============

* native sparc port passes make gm2.paranoid and make check-gm2

* native i386  port passes make gm2.paranoid and make check-gm2

* passes all 1350 regression tests

* builds with gcc-3.3.2

VERSION 0.40
============

* brought GM2 up to date with gcc-3.3.1

* many, many bug fixes and no patch is now required in the garbage collection
  of gcc-3.3.1

* builds under Redhat 9.0 and Suse 9.0

* added the LONGCARD data type.

* LENGTH is now mapped onto M2RTS.Length if the parameter is not a constant
  at compile time.

* standard procedures can be called inside constant expressions.

* introduced examples/pthread

* introduced a tool, h2def, to aid production of DEFINITION MODULE FOR "C" modules
  from C header files.

* added MathLib0 module, added svga example.

* added access to thirty one gcc built-in functions.


VERSION 0.33
============

* implemented large sets.

* implemented ISO compliant sets.

* when gm2 is invoked with -gstabs a patched gdb will
  display set contents. This also works well with SET OF CHAR.

* definition modules no longer have to explicitly export
  identifiers.

VERSION 0.32
============

* gm2 can be built as a native or as a strongarm cross compiler.

* the C preprocessor can be invoked and it processes both definition and
  implementation modules.

* error reporting understands preprocessed Modula-2 source.
