Inter-Language Unification


  • What's ILU?

  • Releases

  • Manual

  • Tutorial

  • Contributors

  • Some users of ILU

  • Copyright terms

  • Job Openings -- We have an opening for a fixed-term hire.

  • What's ILU?

    The Inter-Language Unification system (ILU) is a multi-language object interface system. The object interfaces provided by ILU hide implementation distinctions between different languages, between different address spaces, and between operating system types. ILU can be used to build multi-lingual object-oriented libraries ("class libraries") with well-specified language-independent interfaces. It can also be used to implement distributed systems. It can also be used to define and document interfaces between the modules of non-distributed programs. ILU interfaces are specified in ILU's Interface Specification Language.

    The 1.8 release of ILU contains support for the programming languages Common Lisp, C++, ANSI C, Modula-3, and Python. It has been installed on many flavors of UNIX, including SPARC machines running SunOS 4.1.3 and Solaris 2, SGI MIPS machines running IRIX 5.2, Intel 486 machines running Linux 1.1.78, DEC Alpha machines with OSF/1, IBM RS/6000 machines running AIX, and HP machines running HP/UX. A port of ILU to the Microsoft Windows 3.1 and Windows NT environments has been finished, and will form part of the 1.9 release. ILU supports both threaded and non-threaded operation. One of the implementation goals of ILU is to maximize compatibility with existing open standards. As a result, ILU provides support for use of the OMG CORBA IDL interface description language, and can be thought of as a CORBA ORB system (though with omissions from and extensions to the CORBA spec). As another result, ILU includes a self-contained implementation of ONC RPC, and it is possible to describe and use existing RPC services as ILU objects. ILU is available free from `'.


  • Upcoming: 1.9

    We hope to release version 1.9 by the end of 1995. Here are the major changes planned or already done:
  • Support for Windows 3.1, Windows 95, and Windows/NT, thanks to Dan Larner.
  • 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 1.9).
  • Thanks to Antony Courtney, we now have a much better security story. We will provide message protection (caller/server identity authentication, message integrity checks, and message encryption) at the transport level, using various message security protocols such as Netscape's SSL, Microsoft's PCT, and others. ILU uses the specific security protocol through a generic interface, the GSS (Generic Security Service) API, version 2. We have an extensible multi-mechanism implementation of the GSS-API, including an SSL mechanism. The GSS shell and mechanisms are independent of ILU, and will be distributed as independent software; U.S. export restrictions (ITAR) apply to some mechanisms. You will also be able to add your favorite security protocols to the GSS shell, if you'd like to use ILU with them.
  • We've made it possible for a calling application to interrupt a call in progress.
  • 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!
  • 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.
  • 1.8

  • Changes from 1.7
  • Manual (html)
  • Manual (gzip'ed Postscript, 225KB)
  • Sources (compressed tar file, 2.4 MB)
  • Sources (gzip'ed tar file, 1.4 MB)
  • Ian Smith's Modula-3 3.5.1 upgrades
  • Python 1.2 upgrade (gzip'ed tar file, 35KB)
  • Common Lisp upgrade with new manual (gzip'ed tar file, 536KB)
  • Some bugs (and some fixes!)
  • 1.7

  • Notes
  • Manual (html)
  • Manual (compressed Postscript, 282KB)
  • Sources (compressed tar file, 2.4 MB)
  • Sources (gzip'ed tar file, 1.4 MB)
  • Tutorial for ILU with either ANSI C or Python

    This tutorial shows how to use ILU both as a way of developing software libraries, and as a way of building distributed systems, using either the programming language ANSI C (unfortunately one of the cruder ILU-supported languages), or the programming language Python (one of the nicer ones). In an extended example, it builds a module that implements a simple four-function calculator, capable of addition, subtraction, multiplication, and division. The example demonstrates how to specify the interface for the module; how to implement the module; how to use that implementation as a simple library; how to provide the module as a remote service; how to write a client of that remote service; how to use subtyping to extend an object type and provide different versions of a module; and how to use OMG IDL with ILU. The Python tutorial also covers use of Tk with ILU, and distributed garbage collection. The tutorial is a 167K gzip'ed tar file, containing both Postscript and text versions of the tutorial documents, and the sources for the example.

    Mailing List

    The mailing list is for discussion of ILU, questions, etc. Please send mail to to be added or deleted, not to the list itself.

    Another mailing list,, is only for announcements of ILU releases, and may have less traffic. Any messages sent to ILU-interest will be seen by everyone on ILU, however, so no need to be on both. Again, if you'd like to be on ILU-interest, please send mail to

    Archives of the ILU mailing lists are available as HyperMail archives.

    ILU is Copyright (c) 1991-1995 Xerox Corporation. All Rights Reserved.

    Unlimited use, reproduction, and distribution of this software is permitted. Any copy of this software must include both the above copyright notice of Xerox Corporation and this paragraph. Any distribution of this software must comply with all applicable United States export control laws. This software is made available AS IS, and Xerox Corporation DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, AND NOTWITHSTANDING ANY OTHER PROVISION CONTAINED HEREIN, ANY LIABILITY FOR DAMAGES RESULTING FROM THE SOFTWARE OR ITS USE IS EXPRESSLY DISCLAIMED, WHETHER ARISING IN CONTRACT, TORT (INCLUDING NEGLIGENCE) OR STRICT LIABILITY, EVEN IF Xerox Corporation IS ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.


    Judy Anderson, Antony Courtney, Doug Cutting, Bill Janssen, Dan Larner, Denis Severson, Bridget Spitznagel, Mike Spreitzer, Mark Stefik, Farrell Wymore

    Some Users of ILU

  • Digital Creations, L.C.
  • Stanford University -- Digital Libraries Project
  • Universal Spatial Data Access Consortium -- GeoScope
  • University of Illinois -- Digital Library Initiative Project
  • University of Michigan -- Digital Library Project
  • University of Notre Dame -- Protected Shared Libraries
  • Xerox PARC CSL -- Bayou
  • Xerox PARC ISTL -- Information Visualizer
  • Xerox PARC ISTL -- Intelligent Information Access
  • Xerox PARC ISTL -- Meeting Salvage
  • Xerox PARC ISTL -- Metro
  • Job Opening

    The ILU group at Xerox's Palo Alto Research Center has a opening for a user consultant/programmer. This job will be primarily helping PARC researchers with development of ILU ISL protocols and use of ILU in their programs, and thus will provide wide exposure to the projects and people at PARC. It will also involve maintaining (debugging, testing, some re-writes) parts of the ILU system, both on UNIX (SunOS, Solaris, Linux) and on MS-Windows (3.1, 95, NT). Skill in C++, ANSI C, and UNIX programming is required; experience with distributed object systems, CORBA, user consulting, MS-Windows, Python, Common Lisp, Java, technical writing, real-time systems, and/or MS-Windows OCX is desired. The job is for a limited term, 9/1/95-12/31/96.

    Please send enquiries and resumes to Referrals are also welcome!