[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

ooc-990321 & oo2c-1.4.1



The new version is on the www.uni-kl.de and should appear tomorrow on
the UUNET mirror.

Here is the list of new features:

o A bug in the handling of type-bound procedures could cause
  procedures to be hidden, if a module defines multiple related
  records and type-bound procedures.  This can cause activation of the
  wrong procedure, or, more likely, a core dump.  If your application 
  uses type-bound procs, I _strongly_ suggest that you upgrade to 1.4.1 
  immediately. 

o From Juergen's side there has been an improvent to common
  subexpression elimination.  Now commutative operations like
  "a+2" and "2+a" are treated as equivalent instructions. 

o Some compiler internal renaming of procedures has been done.  Most
  procedures from modules `Data' and `Opcode' changed into type-bound
  procedures of module `Data'.  The complete list of replacements can
  be found at the end of scripts/replace_procs.pl; this list is
  authorative, because this script did the job of rewriting all calls.
  If you worry about the performance penalty this has on the compiler,
  then fear not: 

o With some minor tweaks to the compiler, calls to some type-bound
  procedures are now translated to static function calls.  If the
  compiler knows that a procedure is not redefined, it can emit a
  function call that does not get its address from the object's type
  descriptor table.  Basically, this means that there is no
  performance penalty if a type-bound procedure is bound to a record
  type whose name is not exported.  Naturally, all the tb procs in
  module `Data' fall into this category.

o The 64 bit version now runs under Digital Unix, both with gcc and
  the vendor's C compiler.  There are still two warnings about
  numerical underflows in the math modules, but nevertheless the math
  functions seem to work as advertised.  With the X11 bindings from
  http://pweb.de.uu.net/vanacken.do/ooc/beta I was able to compile a
  simple program running under X.

o Some minor bug fixes in library modules and tools.


o Extended CAP(CHAR) to deal with the full range of ISO-Latin-1.  

o Added concatenation of string constants using the operator `+'.

o Added support of LONGCHAR character type.  See Eric's summary on the
  mailing list for the details.

o Added module `LongStrings'.

o New optimization that checks if a value parameter of structured type
  can be accessed without creating a local copy for the called
  procedure.  This can greatly improve the execution time of
  procedures from modules `Strings' and `LongStrings'.

o New system flag `NO_COPY'.  This is the manual version of the
  optimization described above.  When set for a value parameter of
  structured type, invocation of the procedure will not create a local
  copy of the parameter.  Used in some I/O modules to avoid multiple,
  but completely useless, copies of string argument during execution
  of, e.g., Out.String.

-- mva