C-Mix is a software tool that automatically performs partial evaluation for ISO/ANSI C language.
To make use of C-Mix, you'll need a C compiler to compile the program generators produced, as well as to use the generated programs in a practical context. A frames-capable WWW browser would be useful for browsing the analysis results from C-Mix/II - this will be particularly helpful in cases where something does not work as expected. However, it's important to know that there are other ways to extract the required information from C-Mix in cases where a frames-capable WWW browser isn't available.
Compiling C-Mix/II from the source distribution requires a C++ compiler for compiling the main analyzer module. This will likely be successful only if the compiler is GCC 2.8.1, egcs or possibly newer versions. Additionally, a C compiler will be needed for compiling some of the auxiliary segments of the system. Our makefiles are compatible with several GNU extensions, so be sure to have GNU `make' handy.
When modifying C-Mix/II sources, you'll need Flex and Bison. It's important to note that using ordinary lex and yacc may not work as the source is specifically designed to work with Flex and Bison. Perl will also be necessary for creating some of the autogenerated C++ source files and generating updated manual pages.
Autoconf becomes incredibly useful when attempting to modify `configure' scripts. If you're working on this, be sure to make use of it.
So, what's new in this release? A lot! Lifts of long double have been changed so that defaults are always truncated to double - this is now architecture-independent. The memory usage of the speclib has been improved when memoizing values of local variables for program points inside a function.
The speclib has also been fixed, such that the in-use information is now used when comparing specialized program points inside functions - this has been present since release 2.0.4, but the testing code was never written. There were also a few bugs that were fixed, specifically in the code generation for switch statements and in the detection of dynamic pointers to specializable functions.
Additionally, a bug in the restructuring phase was also corrected. The declarator parser has been rewritten to fix about a dozen rare bugs. Finally, the generating extension will now fail more gracefully when a stray static pointer to something dynamic is dereferenced.
It's important to note that while this is not a complete solution, it is definitely a step in the right direction. Finally, make install now strips the installed binaries. There is also a `make install-strip' option as well as a `make install-nostrip' option for those who want absolute control. In summary, this tool is an incredibly useful one to have if you're working specifically with the ISO/ANSI C language.
Version 2.0.12: N/A