UW Cecil/Vortex 3.1 Release

The Cecil Group at the University of Washington's Department of Computer Science and Engineering  released version 3.1 of the Vortex compiler infrastructure in December 2002.  Vortex is a language-independent optimizing compiler back-end for object-oriented languages; this release includes front-ends for Cecil and Java. (The previous release, Cecil/Vortex 3.0, also includes front-ends for C++ (on SPARC SunOS 4 systems) and ParcPlace Smalltalk (requires your own version of ParcPlace VisualWorks 2.0 to run the front-end). A Modula-3 front-end was also developed. An IBM Smalltalk front-end was partially developed.)

WARNING: Vortex is a large, resource-hungry beast, intended as a base for research into compiler organization and optimization rather than fast, compact compilation. As one data point, invoking Vortex with full optimizations to compile the Vortex compiler itself (~140K lines of Cecil) from scratch requires ~128MB of main memory and an hour or two of CPU time. On the other hand, compiling a small program without optimization takes only ~20MB of main memory and a minute or two of CPU time, using separately-compiled shared Cecil libraries. Lastly, the Cecil interpreter program supports reading in files of Cecil code and typing in new Cecil code interactively, at negligible waiting time.

A short FAQ on using Cecil and Vortex is also available.


Cecil Interpreter

If you want just to play around with Cecil, without downloading a full Vortex Cecil release, you can download a stand-alone Cecil interpreter executable. The interpreter does not include the compiler, static type checker, or other amenities of the full Vortex system. If you want to download some Cecil source code to look at, just download and unpack any of the Cecil front-end tar files listed below and look in the Cecil/src directories. (The Cecil interpreter is already included as part of the Vortex installation, so if you're getting the Vortex system then you don't also need to get the Cecil interpreter.) 

Sparc(V8)/Solaris 5.5.x

Sparc(V8)/Solaris 5.8

x86/Linux

x86/Windows


Vortex Tar Files

To install and configure Vortex, follow these steps (you can also see the license agreement, the main README file, the INSTALL file with the installation instructions, and the manuals without getting the whole distribution): Please let us know if you download the release by sending us a note. Let us know what language front-ends and target architectures/operating systems you downloaded.

You need to download one tar file with common parts of the Vortex infrastructure plus one tar file for each front-end you are interested in. Compressed (via gzip) tar files containing Vortex 3.1 are currently available for the following architecture/OS combinations (other architecture/OS combinations are available as part of the previous release, Cecil/Vortex 3.0; a Mac OS X version is currently being pursued):

Sparc(V8)/Solaris 5.5.x

Sparc(V8)/Solaris 5.8

x86/Linux (Note: this Linux version of Vortex may be flakey, and crash when compiling large programs, such as Vortex itself. We have a fixed version, more recent than this release; contact us if you encounter problems with this version of Vortex and want the improved version.)

x86/Windows (Notes: you need to install the Cygwin tools first, including at least gcc/g++, make, tcsh, and perl, and setting the default text file type to Unix instead of DOS [note that gcc version 3.3 seems to crash when compiling some Vortex output, but gcc version 3.2 works].  Also, WinZip converts some newline endings in scripts to cr/nl sequences, which sometimes breaks tcsh.  So instead of using WinZip to extract the tar file, save the tar files and use the cygwin tar command to unpack the tar file.  If you don't do this, you'll likely get an error when you try to run SETUP to create any needed script wrappers.)

If you cannot run the precompiled Vortex executable included with the tarfile for your operating system, or if you want to try to port Vortex to a new operating system, you can download this tarfile (in addition to the closest appropriate tarfiles above) which contains generated .c and .h files for the Vortex compiler itself.  After doing SETUP Vortex, you can unpack this generated .c and .h file tarfile into some directory, do gmake in that directory to compile the Vortex executable (assuming your environment variables are set properly; see the Makefile), and then install the resulting vortex executable into the $VORTEX_HOME/bin/$VORTEX_ARCH directory.  Once this works, you can run Vortex to build the Cecil standalone executable, by compiling the cecil.cecil source file.


Manuals

You can browse the various Cecil/Vortex manuals without downloading the entire release. (The postscript files for the first two manuals are included in the release files with common parts of Vortex; the next two manuals come with the Cecil front-end.)

Performance

You can browse some experimental results for Cecil, Java, and C++.

Further Information

To receive information about the status of Vortex, bug fixes, etc., you can subscribe to a Cecil/Vortex interest mailing list (it is a low volume list). See the instructions here.

Bug reports can be sent to cecil-bugs@cs.washington.edu. If possible, please include an exact description of the problem and a short program reproducing the bug.

For more information, check out our home page or email us at chambers@cs.washington.edu . We would be glad to hear about your experiences with Cecil and Vortex!


Cecil/Vortex Project, chambers@cs.washington.edu