Changes to the ILU distribution:

From 1.8 to 2.0alpha

This release contains some major changes, and is NOT compatible "on
the wire" with any previous version of ILU.  There are also a few API
changes.  There may be further changes in 2.0beta and 2.0.

1) We now use GNU autoconf (and still use imake).

2) Support for C and C++ use on Windows 95 and Windows NT (Windows 3.1
coming soon), thanks to Dan Larner.  Windows binaries are available
(as well as source code).

3) Thanks to Bridget Spitznagel, we now have support for
cross-language calls within the same address space.  Because we're not
a compiler vendor, and can't keep up with all the compiler vendors in
the world (not to mention all the combinations of them), we don't
solve your problem of getting multiple language runtimes to co-exist.
But where you *have* solved that problem (perhaps because you've got
an easy instance, such as C and XXX), you can now just call through an
ILU interface --- rather than having to write messy "foreign function"
interfaces from one language to another.  Each part of your program
looks mono-lingual and normal, and we provide the control-flow and
data-conversion glue to put them together.  Data conversion is
currently done by serializing and de-serializing to/from a normalized
form in a memory buffer; we plan to investigate more direct methods
(but not necessarily for release 2.0).

4) Our "transport" abstraction has been re-organized.  Among other
things, this makes it (relatively) easy to introduce "filters" at the
transport level.  Of course, ILU remains open and extensible in this
regard.  Want to add a compression filter?  Go ahead!

5) ILU string binding handles become IETF URLs.

6) We've made it possible for a calling application to interrupt a
call in progress.

7) The documentation (and of course, TIM) has diagrams and URLs!

8) Generalized cleanup and bug fixing.  This includes more attention
to making it practical for others to add transport and protocol
meta-objects.  This also includes a more rigorous treatment of
exceptions in the kernel and runtimes, with a taxonomy of exceptions
aligned with CORBA's.  It also includes fixes that change the type
ID's and protocol mappings, which caused us to bump the major version
number.  All ONC RPC and Courier program numbers, and ISO object IDs
are now official.  The Courier type-ID-to-program-number mapping
registry has been eliminated.


From 1.7 to 1.8:

1) A kernel memory leak caused by having many clients connect to,
then drop, a server was fixed.

2) File descriptors are now removed from the event loop registry
when a connection is closed, which fixes some errors in various
runtimes.

3) The kernel routines ilu_ConsiderSBH() and ilu_ReLookupObject() are
now provided to change the binding of a surrogate kernel server.  This
allows a client to track changes caused when a server goes down and is
re-started with different contact info.  This should also handle the
relocation requirement of CORBA's IIOP.  They have not been fully tied
into the language runtimes yet.  Some language runtime code may still
improperly keep a cache of an earlier SBH.

4) The Common Lisp garbage collector is now tied in to the ILU network
GC scheme, so that client interest in collectible true objects is
communicated and used properly between Lisp clients and servers.
Collectible true objects are now GC'ed.

5) A new appendix to the ILU manual documents the process of adding
ILU support for a different variety of Common Lisp.

6) Various fixes to the Python support have been made to fix various
bugs, and to allow unregistration of Tk event handlers when
connections are closed.  Python true objects must still be manually
held onto by the server.

7) References into freed data structures have been fixed in the C
and C++ runtime, thanks to Purify.

8) An authentication framework has been added, but no protocols
currently pass any identity information except for the Sun RPC
protocol's default authentication of "AUTH_UNIX".  This identity is
now available in C true method code, but the access method is not yet
documented, as it will surely change.

9) An obscure bug in the Lisp generic process code, responsible for
causing an occasional "Bad Process-Lock" message, has been fixed.

10) The XView X toolkit code in ILUSRC/etc/xview/ has been
successfully used.

11) Memory leaks in C true stubs have been fixed, and C true stubs
now report unexpected exceptions properly.

12) Fixes from hassan@db.stanford.edu for the DEC Alpha system with
OSF/1 have been incorporated.



From 1.6.4-p9 to 1.7:

1) The way of associating a Sun RPC (program number, version) tuple
with an object type has changed.  In release 1.6.4, the (program
number, version) was assigned either manually or automatically, and a
file maintained a list of (type ID, program #, version) tuples.  Each
client and server consulted this file when mapping between Sun RPC
program #'s and ILU type ID's.  This led to a number of problems.
This scheme has been changed in release 1.7 to a scheme in which the
Sun RPC program # is always the value 0x31000400, and the (32-bit) Sun
RPC version is computed from the ILU type ID, using the CRC-32 hash
algorith.  Thus the version number is the CRC-32 of the ILU type ID.
This has been tested for collisions, and they have been found to be
extremely rare -- much rarer than collisions would have been under the
ILU 1.6.4 scheme.

This means that if you wish to use ILU 1.6.4 clients or servers with
ILU 1.7, you should edit the 1.6.4 SunRPCRegistry file to use the 1.7
program number and version for each particular object type.

2) The C runtime now offers an interface to threads, so that C servers
can handle requests in different threads.  This has been tested with
the PPCR implementation of POSIX threads.

3) Untested pseudo-threads libraries for the Xt and XView X toolkits
are provided, under ILUSRC/etc/{Xt,xview}/.

4) Support for the Python programming language has been added.

5) All languages now support IN, OUT, and INOUT method parameters.

6) Support for CORBA NIL object references has been added, via the new
OPTIONAL keyword on object types.  All object types defined with OMG
IDL will be tagged automatically with OPTIONAL; object types defined
with ILU ISL have the option of being OPTIONAL.  Note that this keyword is
different from the ISL OPTIONAL type constructor.  The use of this
keyword in ISL is deprecated in favor of the OPTIONAL type constructor.

This also means that the ILU on-the-wire mapping for objects has been
changed (slightly) to allow for NIL object references.  Applications
that do not use NIL objects will not encounter this change.

7) The usage of the SINGLETON keyword on object types has changed.  It
now takes a string argument which defines the particular ``pinfo'' and
``tinfo'' to be used with the object type.

8) Network GC now works.

9) Numerous bugs have been fixed.
  
