Flick: The Flexible IDL Compiler Kit


Get: [NEW] Flick 2.1 User's Manual [NEW] Programmer's Manual PLDI '97 Paper

Overview of Flick

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.

Software

[NEW] [Icon] Flick 2.1. The latest release of Flick includes many bug fixes and now generates optimized C++ stubs that work with TAO version 1.0. In addition, Flick 2.1 comes with an all-new 200+ page programmer's manual! (Binary distributions include the user's manual only.) Refer to the Flick 2.1 announcement for details.
[NEW] [Icon] Flick 2.1 Binaries. Flick is available in prebuilt binary form for various platforms including Windows 95 and Windows NT. The Windows binaries are built with the Cygwin library and tools (beta 20.1), which you must install on your system before you can use Flick. See the installation instructions for details.
[Icon] Old releases: Flick 2.0, Flick 1.2c (beta), Flick 1.1, Flick 1.0, and Flick 1.0-alpha.

Documentation

[Icon] Flick User's 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 separately.
[NEW] [Icon] Flick Programmer's 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 distributions.

Related Software

[Icon] TAO, the real-time CORBA ORB from the Distributed Object Computing Group at Washington University in St. Louis. Flick 2.1 can produce optimized CORBA C++ stubs that work with TAO version 1.0.
[Icon] idl-font-lock.el for GNU Emacs. This file provides the data that Emacs needs in order to decorate CORBA IDL (.idl) files.

Papers

[NEW] [Icon] Eric Eide, James L. Simister, Tim Stack, and Jay Lepreau. Flexible IDL compilation for complex communication patterns. Scientific Programming, 7(3, 4):275-287, 1999. Abstract
[Icon] 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
[Icon] 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.


The Flick Team <flick@cs.utah.edu>
Last modified: Mon Nov 15 17:51:48 MST 1999