CMU Artificial Intelligence Repository
ILU: Xerox PARC Inter-Language Unification
lang/lisp/code/ilu/
ILU (pronounced eye'-loo) is a system that promotes software
interoperability via interfaces. Interfaces between what? Whatever
units of program structure are desired; we call them by the generic
term "modules". They could be parts of one process, all written in
the same language; they could be parts written in different languages,
sharing runtime support in one memory image; they could be parts
running in different memory images on different machines (on different
sides of the planet). A module could even be a distributed system
implemented by many programs on many machines. Calls across ILU
interfaces involve only as much mechanism as necessary for the calling
and called modules to interact. In particular, when the two modules
are in the same memory image and use the same data representations,
the calls are direct local procedure calls -- no stubs or other RPC
mechanisms are involved.
ILU modules are known by their interfaces. A module interface is
specified once in ILU's object-oriented Interface Specification
Language (called, simply, ISL). For each of the particular
programming languages supported by ILU (currently Common Lisp, ANSI C,
C++, and Modula-3; Python, Tcl, and GNU Emacs-Lisp are in the works),
a version of the interface in that particular programming language can
be generated. The ILU kernel library provides services which may be
used by the language-specific interface to overcome intermodule
language or address space differences.
Many existing RPC systems, such as Xerox XNS Courier, ONC RPC, and OSF
DCE RPC, have strong notions of interfaces. ILU allows binding to
such services provided by such systems if their interfaces can be
described in ISL. ISL has been designed to facilitate such
description (currently, only for ONC RPC; Courier and DCE RPC are in
progress). The binding to such RPC services is done in such a way as
to be indistinguishable from binding to other ILU modules. In fact,
properly constructed ILU modules can appear as native RPC services,
and can be manipulated by non-ILU tools designed to work with those
RPC services.
Similarly, the Object Management Group's (OMG) Common Object Request
Broker Architecture (CORBA) defines modules with explicit interfaces.
ILU allows modules that can be described with a safe subset of OMG
CORBA IDL to be used as ILU modules, as well, though the ILU object
model is not quite the same as the OMG CORBA object model. In fact,
people wishing to experiment with CORBA may find ILU a useful
experimental platform, as it does allow module specification with OMG
IDL, and does generate ANSI C support as specified in Draft 1.2 of the
OMG CORBA specification. As the OMG specification for a C++ mapping
is agreed upon, we intend to provide that mapping for our C++ support,
as well.
Release 1.6.4 is intended as a beta release. Major efficiency
improvements and some usability improvements are planned for the next
release. It has been tested lightly on SunOS 4.1.3, Sun's Solaris
2.3, and SGI's IRIX 5.2. It is designed to be highly portable, and a
port to the Macintosh has been done (but is not included in this
release).
Origin:
parcftp.xerox.com:/pub/ilu/1.6.4/ilu-1.6.4.tar.gz
Version: 1.6.4 (18-JUN-94)
Requires: Common Lisp, C/C++
Ports: Franz Allegro CL
Copying: Copyright (c) 1991, 1992, 1993, 1994 Xerox Corporation.
Use, copying, and distribution permitted.
CD-ROM: Prime Time Freeware for AI, Issue 1-1
Author(s): Antony Courtney, Doug Cutting, Bill Janssen, Denis Severson,
Mike Spreitzer, Mark Stefik, Farrell Wymore
Contact: Bill Janssen
Xerox Palo Alto Research Center
3333 Coyote Hill Road
Palo Alto, CA 94304
Tel: (415) 812-4763
Fax: (415) 812-4777
Keywords:
Authors!Courtney, Authors!Cutting, Authors!Janssen,
Authors!Severson, Authors!Spreitzer, Authors!Stefik,
Authors!Wymore, C!Code, C++!Code, ILU, Lisp!Code
References: ?
Last Web update on Mon Feb 13 10:29:46 1995
AI.Repository@cs.cmu.edu