GNU Cim NEWS

Copyright (C) 1997-99 Sverre Hvammen Johansen
See the end for copying conditions.

Version 5:

* Verson 5 implements the compiler, runtime ststem, and the
generated C code using prototyped functions.

* Many bugfixes, especally bugs where int and long was used
  incorrectly.  Such bugs shows up on 64-bit platforms where int is
  32 bit but long is 64 bit.

Version 4:

* Version 4 is experimental. If you want a stable compiler, please use
  version 3 instead.

Version 3:

* The compiler may use a lot of virtual memory. If that is a problem
  for you, please split your program into separate compiled modules
  or use version 2 of cim instead.

* Cim uses libtool to build static and shared libraries.  Se README for
  details.

Version 2:

* Cim uses libtool to build static and shared libraries.  Se README for
  details.


Version: 4.3

* Bugfix: New in combination with inspect did not work correctly.


Version: 4.2

* Integrated the changes in cim-3.28 - cim-3.35

* Note: There are a lot of changes in the src directory. 
  All files under lib are identical, except simenvir.atr and
  simfile.atr.


Version: 4.1

* Used enum instead of #define for tokens in mellbuilder.h

* Used typedef: 
    sent_t replaces struct SENT
    exp_t replaces struct EXP
    decl_t replaces struct DECL
    block_t replaces struct BLOCK
    and so on


Version: 4.0

* Rearranged some of the code in the compiler program

* Implemented an alternative where the accumulator stack is placed
  inside the block objects, instead of a global accumulator stack which
  must be saved in acst-objects. The run-time system can also be
  simplified.

* MPROCARG and MCONC objects no longer save to stack-elements.
  An MSTACK object is introduced instead.

* -DDEBUG works when compiling the compiler program. Implemented
  some new debug options.

* Only reserve a for-list-element index variable when necessary.


Version 3.35

* Minor changes. Corrected a bug that remained from version 3.34.


Version 3.34

* Fixed a bug which caused option -a to not work correctly. NULL from
  externernal C text procedures are now acepted. Replaced bzery by memset
  and bcopy by memmove. directive %INSERT is now accepted as a synonym
  for %INCLUDE. '%\r' is now accepted as a directive line comment.
  Doing some preparation for Mingw32. Please not upgrade now. More bugs
  will be corrected later.


Version 3.33

* Minor changes so that the C-compiler will compile with TenDRA C.
  The RTS and generated C-code will not compile with TenDRA C, without
  major changes. I belive that the TenDRA C compiler is broken.


Version 3.32

* Broken configure script: Because of libtool upgrade some configure tests
  needed corrections.


Version 3.31

* Fixed a bug which produced incorrect code for some actual
  parameters to simple parameters transmitted by name.

* Upgraded to libtool-1.3.3.


Version: 3.30

* Released as a GNU program

* Fixed a bug which produced incorrect code for dotted actual
  parameters to arrays transmitted by value.
  

Version: 3.29

* Fixed a bug which caused segmentation fault when running programs
  containing gotos to non-local virtual labels.


Version: 3.28

* Fixed a bug which caused segmentation fault when compiling array
  declarations in some contexts.


Version: 3.27

* A really seriouse bug-fix, please upgrade: Transmission of
  parameters to prefixed blocks was missing i previouse versions.


Version: 3.26

* Corrected a tiny bug in the code-generator.


Version: 3.25

* Corrected a bug which may report "(null) is declared twice" for
  external compiled modules.

* Corrected a bug in genpar.c, a missing blank which caused C-compilation
  of generated code to fail. Same bug corrected in version 2.11.

* Corrected a bug which reported real-constant ** negative-integer-constant 
  as an error.


Version 3.24

* Corrected a bug concerning programs that contained an inner
  inside a while- or if-statement.

* Updated cim.spec.in so that cim is buildroot-capable.


Version 3.23

* Version 3 is not experimental anymore. Please use version 3 instead of 
  version 2 and report bugs related to version 3 to cim-bug@ifi.uio.no

* Updated cim.spec.in


Version 3.22

* Corrected an error which caused constant computation over ** to fail
  for right arguments of type real.


Version 3.21

* Corrected an error which caused execution external modeles which
  contained references to sysout or sysin (either directly or 
  indirectly) to fail.


Version 3.20

* Version 3.19 solved the problem with real numbers on big-endian 
  arcitectures.

* All transformations are done before the tree are handed over to the
  code-generator.

* Part of code-generation for for-statements are separated out in
  an arcitecture independent part.


Version 3.19

* Just a test to try to solve a problem with real numbers.

Version 3.18

* Cim 3.16 and 3.17 was buildt wrong, needed to rerun autoheader.
  I had a wrongly configured autoheader laying around that I was not
  able to get rid of. Lets try one more time.


Version 3.16

* "Fagernes 316": My parents home phone number before 1975 (Berit and
  Thormod __JOHAN(SEN)__). John 3:16 For God so loved the world, that
  he gave his only begotten Son, that whosoever believeth in him should
  not perish, but have everlasting life.

* Correcting a bug which often made execution fail after garbage collection.

* Corrected a bug in lib/Makefile.am, which caused a rebuild of 
  {simset,simulation}.{atr,c} even if they where up to date.

* The simulatool-test passed. Please use version 1.3 of simulatool

* Updated the CURRENT interface number for libcim.lo.

* Some other minor changes


Version 3.15

* Restructured the code, generation for expressions. Gencall and friends
  have been made arcitecture independent. Gencall splits the expression
  up into several simpler expressions which are handed over to genexp
  for code-generation.

* Changed the order of subdirectories in the toplevel Makefile.am.


Version 3.14

 * Added removeBlock () which allows removal of BLOCK objects.

 * Added an atribute when to struct DECL

 * Corrected a bug in dekl.c which reported blokk is declared twice
   for prefixed blocks.

 * Implemented removal of unused block objects. Required a different
   scheme for reservation of labels.

 * Corrected a bug which for some external modules reported 
   __blokk0' undeclared

 * Renamed gen.c to genlabel.c


Version 3.13

 * Corrected some bugs that remained from version 2, conserning
   user defined subclasses of class FILE and co. The structs for
   these objects are now generated by the compiler instead of

 * Corrected some bugs that remained from version 2, conserning
   transmision of array/label/procedure parameters to formal or
   virtual procedures.

 * Reorganized genstruct.c. All produced code are now written to
   one single file (.c).

 * All initialization of prototypes are now done by the compiler.


Version 3.12

 * Corrected a few bugs: Simula test-batch passed


Version 3.11

 * Corrected a bug for the for-statement. The following did not work:

     ... INTEGER i; FOR i:= 1 STEP 1 UNTIL 10.0 do ...

 * Added cim.spec to the distribution so that binary and source
   packages can be buildt using `rpm -ta cim-3.??.tar.gz'

 * Restructured gen.c. Most of the code have been moved to sentgen.c.

 * Added option --enable-dump to the configure script.


Version 3.10

 * Errors reported from the parser missed a newline.


Version 3.9

* The bugfix for ... was not done corectly in version 3.8.

* Corrected the yacc grammar so that ... specifications
  are parsed corectly.

* Corrected extspec.c so that ... specifications are written
  corectly in the produced .mif file.

* By default the .shl file is removed after compilation.


Version 3.8

* Corrected some bugs that was trigged on sparc.

* Corrected a bug conserning use of ... in external declared modules.

* Done some cleanups in feil.[ch], and renamed it to error.[ch]


Version 3.6

* Upgraded to automake-1.3


Version 3.5

* Added use of OBSTACK to handling of %ifdef and co, and corrected a bug
  which was present in the old code.

* Added a new module mapline.[ch] which uses OBSTACK. It handles the
  mapping of line-numbers to real line numbers and real source files.

* The compiler should produce exactly the same output as cim-2.8,
  please test this out. 

* Many of the logical limitations in the compiler have been removed 
  as we now use OBSTACK

* Added use of OBSTACK to the rest of the modeles for the compiler-driver.

* Done some cleanups in dekl.c, filelist.c, extspec.c name.c and lex.c


Version 3.4

* Added obstack.[ch] to the distribution

* Done some cleanups in dekl.[ch]: Eliminated use of arrays.
  Added use of OBSTACK.

Version 3.3

* Done some prearrangements for implementation of an optimazing compiler

* Added use of OBSTACK. At the current moment OBSTACK is not included in
the distribution. This will be added some time in the future.

* Restructured sjekker.c. The files which replaces sjekker.[ch] are 
listed below.

* mellbuilder.c is a replacement for the .m file. It uses OBSTACK.

* sentbuilder.c builds a tree for all the sentences/blocks read from
mellbuilder. It uses OBSTACK.

* expbuilder.c builds a tree for each expression read from mellbuilder.
It uses OBSTACK.

* expchecker.c checks the expressions for semantic errors. A few 
transformations are also done.

* sentchecker.c check the sentences/blocks and interacts with decl.c
to set current block which are stored in each SENT object so that
current block is available for checking of expressions and code generation.

* sentgen.c is the new interface to the code generator. In future
releases it is intended to include part of gen.c

* Some changes in dekl.c, gen.c, genexp.c, genpar.c and
genstruct.c for getting the new scheme to work.


Version 2.10

* Once more: Hopefully corrected install bug for cygwin32.

Version 2.9

* Corrected bug in procedure Poisson

* Hopefully corrected install bug for cygwin32.

Version 2.7

* Included stdio.h in navn.c so that it will compile with gcc under
  sparc-sun-sunos4.1.3_U1

* Correctet a tiny bug in cimcomp.c

Version 2.6

* Added this file to the distribution.

* Updated README with compilation instructions

* Modified the Makefile in the lib directory so that it should be
portable across different make-implementations.

* Concerning exec'ing the shl-script: Setting arg0 equal the name of
the shl-script and prepend the shl-name with ./ so that the correct
script will be started. This is necessary to get it to work under
cygwin32.

Version 2.5

* Install the cim-library in $(libdir) instead of $(pkglibdir)
so that the correct library will be found.

Version 2.4

* simset.c, simset.h, simset.atr, simulation.c, simulation.h, and
simulation.atr will not be deleted by make (dist)clean. simset.shl,
simulation.shl, simset.mif, and simulation.mif will be deleted by the
clean target.

* Added a newline at the end of the generated C-code so that some
C-compilers will not complain.

* Removed some unnecessary code in the beginning of the generated code
so that some C-compilers would not complain about unreachable code.

Version 2.3

* make (dist)clean will not delete the library of atr-files.
Will only be deleted for the target maintainer-clean.

* cim --version now return 0 instead of 1.

Version 2.2

* Introduced 8 byte alignment, so that it should work under most modern
architectures

* The generated C-file include references to line-numbers in the
original Simula-file, so that a C-debugger will get references back to
the Simula-source file instead of the C-file.

Version 2.1

* A few bug-fixes that remained from 1.93

* The compiler-driver have been rewritten, so that the C-compiler and
the linker is started from a script that is exec'd so that the
resources that is allocated by Cim is freed before these parts are
started.

* The implementation of simula-libraries have changed. .o and .atr
files are now always located in separate ar-archives. The archive of .atr
files is included in the distribution so that it also will work on
systems that is not able to build this archive.

* A few options to the compiler have changes, and new ones have been
introduced. Se the documentation for details.

* Makefile.in's are generated by automake-1.12.

* Both static and shared libraries are now supported by use of
libtool-1.0.

* Djgpp, VMS and some older unix-variants are not longer supported
correctly. We suggest that you use GNU-WIN32/CYGWIN32 instead of Djgpp
(URL: http://www.cygnus.com/misc/gnu-win32/).

* For external modules a human-readable file which gives the signature
of the module is generated (.mif). This file can be used for documentation.

* New syntax for specification of parameters have been introduced.
This syntax is not documented, except in parser.y. The new syntax 
is used in the .mif-file. Try to compile an external module.

Version 1.93
 
* Version 1 of cim if frozen to cim-1.93.tar.gz and is the only
  version with support for Djgpp, VMS and some older Unix-variants.

* Changes not recorded.

----------------------------------------------------------------------
Copyright information:
 
Copyright (C) 1997, Sverre Hvammen Johansen
 
   Permission is granted to anyone to make or distribute verbatim copies
   of this document as received, in any medium, provided that the
   copyright notice and this permission notice are preserved,
   thus giving the recipient permission to redistribute in turn.
 
   Permission is granted to distribute modified versions
   of this document, or of portions of it,
   under the above conditions, provided also that they
   carry prominent notices stating who last changed them.
