CMU Artificial Intelligence Repository
Home INFO Search FAQs Repository Root

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