ANNOUNCE: Flick IDL Compiler Kit 1.1

Eric Eide <>
12 May 1998 22:26:04 -0400

          From comp.compilers

Related articles
ANNOUNCE: Flick IDL Compiler Kit 1.1 (Eric Eide) (1998-05-12)
| List of all articles for this month |

From: Eric Eide <>
Newsgroups: comp.compilers,comp.object.corba,comp.lang.c,comp.lang.idl
Date: 12 May 1998 22:26:04 -0400
Organization: University of Utah Department of Computer Science
Distribution: inet
Keywords: tools, available

This announces version 1.1 of Flick, the Flexible IDL Compiler Kit, from our
DARPA-supported Flux Project at the University of Utah. Flick generates code
that runs several times faster than code from other IDL compilers, supports
3 IDLs, 5 transports, and has been tested on many UNIX variants and Windows.


Flick 1.1 fixes many bugs and includes several new features, most notably:

    + Support for CORBA and Sun RPC over Trapeze, Duke's very fast Myrinet-based
        transport <>.

    + Support for Win32 platforms (Windows 95, NT) with Cygwin32 (GNU) tools.

    + Support for CORBA on Mach; works but currently has inefficiencies.

    + Almost complete support for Mach MIG; now supports almost all of the MIG
        IDL, and generates stubs that are as fast as MIG-generated stubs.

    + A greatly improved CORBA runtime: speed enhancements and bug fixes.

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, Trapeze (see above), 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 separate license
(BSD-style, but without the advertising clause).

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 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.6-BETA (Intel Pentium II, 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.3 (Sun 4m SS10, gcc/g++ 2.7.2)
        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 95 (gcc/g++ 2.7.2, w/Cygnus' GNU-Win32 Tools b18)
        Windows NT 4.0 (gcc/g++ 2.7.2, w/Cygnus' GNU-Win32 Tools b18)
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

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 <> and from
<>. The Flick 1.1 distribution is divided
into two parts: full source (`flick-src-1.1.tar.gz', 1.2MB compressed, 5.9MB
uncompressed) and regression test output (`flick-tests-1.1.tar.gz', 1.5MB
compressed, 33.5MB 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 <> with the message
body containing the line
subscribe flick-users
to get on the mailing list. Send bugs and fixes to <>.

Thanks to a fine team of staff and students who have produced Flick, including
Eric Eide, James Simister, Eric Pabst, Kevin Frei, and Bryan Ford. The work is
primarily sponsored by DARPA, with additional support by Novell and IBM.

Jay Lepreau <>
Eric Eide <>
University of Utah Computer Science Dept.

Flick LSM entry:

Title: Flick
Version: 1.1
Entered-date: 11MAY98
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 messages, Trapeze, and Fluke IPC).
Flick produces marshal/unmarshal code that is typically 2 to 17
times faster than equivalent code produced by other IDL
Keywords: IDL interface definition language compiler RPC RMI CORBA ONC
rpcgen MIG
Author: (Utah Flick Team)
Maintained-by: (Flick Bugs List)
Primary-site: /flux/flick
1202k flick-src-1.1.tar.gz
1581k flick-tests-1.1.tar.gz
Platforms: C, C++, UNIX
Copying-policy: GPL for compiler, BSD without advertising clause for runtime
Eric Eide <> . University of Utah Dept. of Computer Science . +1 (801) 585-5512 voice, +1 (801) 581-5843 FAX

Post a followup to this message

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