[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