Flick: The Flexible IDL Compiler Kit
Flick, our IDL (interface definition language)
compiler, is the research and production IDL compiler within the Flux Project. Flick uses techniques from traditional
language compilers in order to produce very fast client/server communication
code. Flick-generated code can typically encode and decode data
between 2 and 17 times faster than code produced by
traditional IDL compilers, both commercial and free. The result is that on
stock hardware and operating systems, Flick-generated stubs can increase
end-to-end application throughput by factors of 4 or more.
Flick is not just optimizing: it is also extremely
flexible. Flick currently supports the CORBA, ONC RPC (Sun
RPC), and MIG IDLs. Interfaces written in any of these languages can be
implemented by CORBA-, ONC RPC-, or MIG-style C language ``stubs''
communicating via CORBA IIOP, ONC/TCP, Mach 3 ports, Trapeze, or Fluke IPC. Flick also generates optimized CORBA
C++ stubs that work with TAO, the real-time CORBA
ORB. Finally, because Flick is a ``kit'' of components, it can be extended to
support new IDLs, message data formats, and transport mechanisms.
Manual. This manual describes how to build Flick, how to
run the various compiler passes, and how to use the generated stubs.
Detailed examples illustrate the use of Flick's CORBA C, CORBA C++, and
ONC RPC (C) components. The manual is also available in PostScript format. A
copy of the user's manual is included in all Flick software
distributions, so there's often no need to download the manual
Manual. Completely rewritten for Flick 2.1, this
manual describes the implementation details of Flick, including all of
the compiler's intermediate representations and the design of each
compiler pass. Over 200 pages of documentation, available online or in
PostScript format. A copy
of the programmer's manual is included in all Flick source code
Eric Eide, James L. Simister, Tim Stack, and Jay Lepreau.
Flexible IDL compilation for complex communication
patterns. Scientific Programming, 7(3, 4):275-287,
Eric Eide, Jay Lepreau, and James L. Simister. Flexible and
optimized IDL compilation for distributed applications. In David
O'Hallaron, editor, Languages, Compilers, and Run-Time Systems for
Scalable Computers (LCR
'98), volume 1511 of Lecture Notes in
Computer Science, pages 288-302. Springer, May 1998. © Springer-Verlag. Abstract | PostScript
Eric Eide, Kevin Frei, Bryan Ford, Jay Lepreau, and Gary Lindstrom.
Flick: A flexible, optimizing IDL compiler. In
Proceedings of the ACM SIGPLAN '97 Conference on Programming Language
Design and Implementation (PLDI), pages 44-56, Las
Vegas, NV, June 1997. Abstract | PostScript
Back to the Flux Project home page.