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. 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, 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 ftp://mancos.cs.utah.edu/papers/flick-pldi-97-abs.html. 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++ 2.7.2.1) Linux 2.0.30 (Intel i486, gcc/g++ 2.7.2.1) 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++ 2.7.2.1) HP-UX 9.03 (HP 9000/712 PA-RISC 1.1, gcc/g++ 2.7.2.2.f.2) 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/.) CHANGES SINCE FLICK 1.0-ALPHA ----------------------------- 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). 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. 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. GETTING FLICK ------------- 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). 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 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: Begin3 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 End -------------------------------------------------------------------------------