Flick IDL compiler 1.0 release

Jay Lepreau <lepreau@cs.utah.edu>
14 Nov 1997 11:45:19 -0500

          From comp.compilers

Related articles
Flick IDL compiler 1.0 release lepreau@cs.utah.edu (Jay Lepreau) (1997-11-14)
| List of all articles for this month |

From: Jay Lepreau <lepreau@cs.utah.edu>
Newsgroups: comp.compilers
Date: 14 Nov 1997 11:45:19 -0500
Organization: University of Utah Computer Science Department
Keywords: tools, available

I am pleased to announce the official version 1.0 release of Flick,
the Flexible IDL Compiler Kit, from the Flux Project at the University
of Utah. Flick generates code that runs several times faster than
that from other IDL compilers, supports 3 IDLs, 4 transports, and has
been tested on many Unix variants as well as on Windows NT.

        URL: http://www.cs.utah.edu/projects/flux/flick/

Thanks to a fine team of staff and students who have produced Flick.
Its primary developers have been Eric Eide (project lead), Kevin Frei,
Bryan Ford (conceived the original idea and architecture), Eric Pabst,
James Simister, and Nathan Dykman. The work is primarily sponsored by
DARPA, with additional support by HP, IBM, and Novell.

See below for a list of changes to Flick since version 1.0-alpha.

Flick is an interface definition language (IDL) compiler ("stub
generator") supporting remote procedure call (RPC) and remote method
invocation (RMI) for client/server or distributed object systems.
What sets it apart from other IDL compilers is that it is highly
optimizing while also supporting several IDLs, message formats, and
transport mechanisms. Flick currently has front ends for the CORBA,
Sun ONC RPC, and Mach MIG IDLs, and middle and back ends that support
CORBA IIOP, ONC/TCP, MIG-style Mach messages, and Fluke IPC (see
below). Flick produces stubs in the C language. A substantial user's
manual is provided.

Flick is designed to be a "kit": the user picks the IDL, language
mapping, and transport components that are required for any particular
system. Our goal is to make it straightforward to add new components
to the kit to process new IDLs, language mappings, and transports.
(Collaborators welcome!) Flick's framework can also be used to
support interface annotation. Full source for the Flick compiler is
distributed under the terms of the GNU General Public License; source
for the Flick runtime is distributed under a BSD-style license.

Flick-generated marshal and unmarshal code generally runs between 2
and 17 times as fast as code produced by other IDL compilers,
commercial and free. On stock hardware and operating systems,
Flick-generated stubs can increase end-to-end client/server throughput
by factors between 1.2 and 3.7 or more.

Our paper describing these results was presented at PLDI'97, the major
compiler conference, in June (see http://www.cs.bu.edu/pub/pldi97/).
The paper is included as part of the Flick distribution, and is
separately available at

Full regression tests and their outputs are provided. Flick has been compiled
and tested on the following platforms:
        FreeBSD 2.2-STABLE (Intel Pentium Pro, gcc/g++
        Linux 2.0.30 (Intel i486, gcc/g++
        SunOS 5.5.1 (Solaris) (SPARCstation SS10/514, gcc/g++ 2.7.2)
        SunOS 4.1.4 (Sun 4m SS10, gcc/g++ 2.7.2)
        HP-UX 10.20 (HP 9000/780 PA-RISC 1.1, gcc/g++
        HP-UX 9.03 (HP 9000/712 PA-RISC 1.1, gcc/g++
        AIX 4.1.4 (IBM RS6000 PowerPC 604, gcc/g++ 2.7.2)
        4.3+ BSD (HP 9000/J210XC PA-RISC 1.1, gcc/g++ 2.7.2)
        Windows NT 4.0 (gcc/g++ 2.7.2, w/Cygnus' GNU-Win32 Tools)
Flick has not been compiled on these platforms, but Flick-generated
stubs have been tested and work:
        Mach 3.0/Lites (x86)
        Fluke OS (x86)

(In addition to supporting standard operating systems and protocols,
Flick is also the IDL compiler for our "Fluke" kernel and operating
system. See http://www.cs.utah.edu/projects/flux/.)

Flick 1.0 fixes many bugs from the Flick 1.0-alpha release and also includes
new features. Most notably:

    + The CORBA IDL front end is *much* more robust and can diagnose many syntax
        and parse errors --- great for people getting started with CORBA.

    + The IIOP back end now supports IORs (Interoperable Object References).
        This allows Flick-based client or servers to communicate with clients or
        servers built on top of other ORBs.

    + The back end library can better optimize array marshaling/unmarshaling, and
        recognizes more cases in which the server can "unmarshal" simply by using
        the array data as it stands in the received message buffer.

    + The MIG front end, presentation generator, and `mach3mig' back end are all
        *greatly* improved, although not yet complete. OOL arguments are now
        handled by the `mach3mig' back end. A few MIG IDL tests have been added to
        the `test' directory.

    + The user's manual has been completely rewritten and now includes working
        code samples.

    + A sample `phone' (phonebook) application is now included, implemented for
        both CORBA and ONC RPC (a.k.a. Sun RPC).

Flick is not a complete CORBA ORB. Flick has an *extremely* minimal ORB-like
runtime, and further, Flick cannot currently replace the IDL compiler that is
part of any commercial ORB. We hope to support various third-party ORBs in
future releases, such as TAO from Washington University in St. Louis.
Similarly, Flick is not (yet) a drop-in replacement for `rpcgen' or MIG. The
details can be found in the distribution documentation.

Flick is available from http://www.cs.utah.edu/projects/flux/flick/ and from
ftp://flux.cs.utah.edu/flux/flick/. The Flick 1.0 distribution is divided
into two parts: full source (`flick-src-1.0.tar.gz', 1.0MB compressed, 5.0MB
uncompressed) and regression test output (`flick-tests-1.0.tar.gz', 1.3MB
compressed, 27.0MB uncompressed).

We welcome comments and technical discussion from users and collaborators. If
you start using Flick, please let us know by subscribing to our mailing list of
Flick users. Send mail to flick-users-request@cs.utah.edu with the message
body containing the line
subscribe flick-users
to get on the mailing list. Send bugs and fixes to flick-bugs@cs.utah.edu.

Jay Lepreau, lepreau@cs.utah.edu
University of Utah Computer Science Dept.

Flick LSM entry:

Title: Flick
Version: 1.0
Entered-date: 13NOV97
Description: Flick is a flexible, optimizing IDL compiler kit that supports
multiple IDLs (CORBA IDL, Sun ONC RPC `rpcgen' IDL, MIG IDL),
multiple language mappings (CORBA-style, ONC RPC-style, and
MIG-style), and multiple RPC/RMI transport mechanisms (CORBA
IIOP, ONC/TCP, Mach 3.0 typed messages, and Fluke IPC). Flick
produces marshal/unmarshal code that is typically 2 to 17 times
faster than equivalent code produced by other IDL compilers.

Keywords: IDL interface definition language compiler RPC RMI CORBA ONC
rpcgen MIG
Author: flick@cs.utah.edu (Utah Flick Team)
Maintained-by: flick-bugs@cs.utah.edu (Flick Bugs List)
Primary-site: flux.cs.utah.edu /flux/flick
1020k flick-src-1.0.tar.gz
1313k flick-tests-1.0.tar.gz
Platforms: C, C++, UNIX
Copying-policy: GPL for compiler, BSD for runtime

Post a followup to this message

Return to the comp.compilers page.
Search the comp.compilers archives again.