This announces version 2.0 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, 6 transports, and has been tested on many UNIX variants and Windows. CHANGES SINCE FLICK 1.1 ----------------------- Flick 2.0 is a major step forward from Flick 1.1 and incorporates many new features and bug fixes. Most notably: + New support for the CORBA C++ language binding in addition to all of the (C language) bindings previously supported by Flick 1.1. Flick generates optimized C++ stubs that work with TAO version 0.3.23, the real-time, open source ORB from Washignton University in St. Louis. For information about TAO, see . + Support for certain CORBA features such as sequence release flags, `is_a' operations, and `any' types. (`any' support is implemented only for C++.) + Generated stubs are now much more robust in the face of runtime errors (e.g., out-of-memory conditions or malformed messages). + Experimental generation of ``decomposed'' C language stubs from CORBA IDL. These non-standard stubs separate different aspects of RPC into different functions, enabling fine-grain control over communication. This feature is experimental and our runtime support for these stubs is incomplete. WHAT IS FLICK? -------------- 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 C stubs for all IDLs and both C and C++ stubs for CORBA IDL. 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 and is available from the Flick Web pages at . Full regression tests and their outputs are provided. Flick has been compiled and tested on the following platforms: FreeBSD 3.0-CURRENT (Intel Pentium II, gcc/g++ 2.7.2.1) Linux 2.2.9 (Intel Pentium II, egcs 1.1.1) SunOS 5.5.1 (Solaris) (Sun 4m SPARC, gcc/g++ 2.8.0) SunOS 5.5.1 (Solaris) (Sun 4m SPARC, Sun WorkShop C/C++ 5.0) SunOS 5.7 (Solaris) (Sun 4m SPARC, gcc/g++ 2.8.0) SunOS 5.7 (Solaris) (Sun 4m SPARC, Sun WorkShop C/C++ 4.2) 4.3+ BSD (HP 9000/J210XC PA-RISC 1.1, gcc/g++ 2.7.2) IRIX64 6.5 (SGI Onyx 2000, MIPSpro 64-bit C/C++ 7.2.1.3m) Windows 95 (egcs 1.1 w/Cygnus' Cygwin library b20.1) Windows NT 4.0 (egcs 1.1 w/Cygnus' Cygwin library b20.1) 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 .) WHAT FLICK IS NOT ----------------- 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 --- although Flick *does* generate optimized stubs for TAO, the real-time ORB 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. GETTING FLICK ------------- Flick is available from and from . The Flick 2.0 distribution is divided into two parts: full source (`flick-2.0-src.tar.gz', 1.5MB compressed, 7.9MB uncompressed) and regression test output (`flick-2.0-tests.tar.gz', 5.5MB compressed, 95.4MB uncompressed). MAILING LISTS ------------- 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 . CREDITS ------- Thanks to a fine team of staff and students who have produced Flick, including Eric Eide, James Simister, Tim Stack, 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: Begin3 Title: Flick Version: 2.0 Entered-date: 13AUG99 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 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/2.0 1535k flick-2.0-src.tar.gz 5591k flick-2.0-tests.tar.gz Platforms: C, C++, UNIX Copying-policy: GPL for compiler, BSD without advertising clause for runtime End -------------------------------------------------------------------------------