ILU

There _is_ ILU for Common Lisp, so why not just link this page to that and to general ILU documents. This is worthkless drivel IMO. Delete this page or something.

Delete it if you want. By the way, ILU is not only for Common Lisp systems.

My not being an expert on ILU, but hoping that a reader of this page may be able to learn some detail of it, I excerpted some material of what is of the ILU documentation. Sorry for that you'd call it drivel. Sean Champ

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 can be specified in either the OMG's CORBA Interface Definition Language (OMG IDL), or ILU's Interface Specification Language (ISL).

See ftp://ftp.parc.xerox.com/pub/ilu/ilu.html


Comparing ILU and CORBA

From ILU and OMG CORBA, in the HTML release of the ILU manual, a summary:

The type and exception model used by ILU is quite similar to that used by the Object Management Group's Common Object Request Broker Architecture (CORBA). We have in fact changed ILU in some ways to more closely match CORBA. Our tools will optionally parse the OMG's Interface Definition Language (OMG IDL) as well as ILU's ISL.

ILU also attempts to address issues that are already upon us, but are not addressed in CORBA 2.0, particularly a uniform way of indicating optional values, and distributed garbage collection.

ILU provides two different interface definition languages, OMG IDL and ILU ISL to enhance portability of ILU modules. The OMG IDL subset understood by ILU is a strict subset of OMG IDL; this means that any ILU modules developed using OMG IDL interfaces should be interoperable with any other CORBA system. Any non-CORBA extensions may only be expressed in ILU ISL, so that any modules which use these extensions must use ILU ISL to express their interfaces, thereby underlining the fact that these modules are not CORBA-compliant. We feel that this dual-interface-language approach will tend to enhance both portability and CORBA-compliance of ILU modules.

ILU does not yet provide some of the features required by a full CORBA implementation. Notably it does not provide a Dynamic Invocation Interface or Dynamic Server Interface, or implementations of either Interface Repository or Implementation Repository. It does not provide the Basic Object Adapter interface, either, but does provide an object adapter with most of the BOA's capabilities, except for those connected with the Interface Repository and/or Implementation Repository.

A number of concepts in CORBA that seem to require further thought are not yet directly supported in ILU: the use of #include (ILU uses a more limited notion of "import"); the notion of using an IDL "interface" as both an object type and a name space (this seems to be a "tramp idea" from the language C++; in ILU the "interface" defines a name space, and the object type defines a type); the notion that all BOA objects are persistent (in ILU, the question of whether an object is persistent is left up to that object's implementation); the notion that type definitions can exist outside the scope of any module or namespace (in ILU, all definitions occur in some interface). Currently, there is no support in ILU for CORBA contexts.

For more information about the ILU Interface Specification Language (comparable to CORBA's IDL), one can refer to the section Defining Interfaces, in the HTML release of the ILU manual.

There is a PostScript version, available, of ILU manual. It's linked from ILU's homepage.

Cross-Language, Cross-OS

It bears mentioning that — like as with CORBA — a programmer can use ILU, natively, within a non-Lisp language, as much as within a Common Lisp. ILU, as such, provides another manner of cross-platform, cross-language networked IPC.

Quoted from the ILU homepage:

ILU 2.0 supports the programming languages C++ (Corba2 mapping), ANSI C, Python, Java, and Common Lisp. Contributed support is also available for Modula-3, Guile Scheme, and Perl 5. ILU has been installed on most flavors of UNIX (SunOS, Solaris, HP-UX, AIX, OSF, IRIX, FreeBSD, Linux, LynxOS, SCO Unix, etc.) and MS-Windows (3.1, 95, NT). It supports both threaded (POSIX, Solaris, NT, Franz ACL, PPCR, Modula-3) and event-loop (Xt, Tk, XView) operation.

Other Notes

Alternate Approaches

For one, there's CLORB, which also supports CORBA.

Other IPC methods are available to a programmer. See IPC.


This page is linked from: distributed   IPC  

CLiki pages can be edited by anyone at any time. Imagine a fearsomely comprehensive disclaimer of liability. Now fear, comprehensively