This page begins with a table of popular open-source applications which can be compiled correctly with nwcc.
The table lists results from the most up-to-date version using the most favorable environment. For example, Mac OS X/x86
support is much worse than Linux/x86 support, but I do most software compatibility testing on Linux/x86. Also, the
software version number isn't listed; Not all versions may work with nwcc.
Note that "second-tier" architectures such as PowerPC and SPARC haven't received a lot of testing yet. Some of the
programs listed below (such as gzip and less) have been tested and found to be working on all of them at some
point. However, a full test run with the current version is missing and will be done later.
The status of an application is distinguished as follows:
Applications
Version | x86 | AMD64 | SPARC | MIPS | PPC |
gcc | Yes | ? | ? | ? | ? |
PHP | Yes | ? | ? | ? | ? |
Apache | Yes | ? | ? | ? | ? |
PostgreSQL | Yes | ? | ? | ? | ? |
tar | Yes | ? | ? | ? | ? |
less | Yes | ? | ? | ? | ? |
lynx | Yes | ? | ? | ? | ? |
wget | Yes | ? | ? | ? | ? |
xterm | Yes | ? | ? | ? | ? |
gxemul | Yes | Yes | ? | ? | ? |
Python | Yes | ? | ? | ? | ? |
nasm | Yes | ? | ? | ? | ? |
strace | Yes | ? | ? | ? | ? |
nwcc | Yes | ? | ? | ? | ? |
bash | Yes | ? | ? | ? | ? |
lsof | Yes | ? | ? | ? | ? |
gawk | Yes | ? | ? | ? | ? |
mksh | Yes | ? | ? | ? | ? |
nano | Yes | ? | ? | ? | ? |
links | Yes | ? | ? | ? | ? |
gzip | Yes | ? | ? | ? | ? |
gmake | Yes | ? | ? | ? | ? |
vim | Yes | ? | ? | ? | ? |
gsed | Yes | ? | ? | ? | ? |
bison | Yes | ? | ? | ? | ? |
zsh | Yes | ? | ? | ? | ? |
lsof | Yes | ? | ? | ? | ? |
findutils | Yes | ? | ? | ? | ? |
Tcl | Yes | ? | ? | ? | ? |
Monkey httpd | Yes | ? | ? | ? | ? |
Scroll down for some test suite results for the current version.
Version history
Version | x86 | AMD64 | SPARC | MIPS | PPC |
0.8.3 | Yes | Yes | ? | ? | ? |
0.8.2 | Yes | Yes | ? | ? | Yes |
0.8.1 | Yes | Yes | ? | ? | Yes |
0.7.9 | Yes | Yes | ? | ? | Yes |
0.7.8 | Yes | Yes | Yes | ? | Yes |
0.7.7 | Yes | Yes | Yes | ? | Yes |
0.7.6 | Yes | Yes | Yes | ? | ? |
0.7.5 | Yes | Yes | Yes | ? | Yes |
0.7.4 | Yes | Yes | Yes | Yes | Yes |
0.7.3 | Yes | Yes | Yes | Yes | Yes |
0.7.2 | Yes | Yes | Yes | ? | ? |
0.7.1 | Yes | Yes | Yes | Yes | Yes |
0.7 | Yes | Yes | No | Yes | Yes |
0.6.6 | Yes | Yes | No | Yes | Yes |
0.6.5 | Yes | Yes | No | Yes | Yes |
0.6.4 | Yes | Yes | No | No | Yes |
0.6.3 | Yes | Yes | No | Yes | Yes |
0.6.2 | Yes | Yes | No | Yes | No |
0.6.1 | Yes | No | No | Yes | No |
0.6 | Yes | No | No | Yes | No |
0.5 | Yes | No | No | No | No |
0.4 | Yes | No | No | No | No |
0.3 | Yes | No | No | No | No |
0.2 | Yes | No | No | No | No |
0.1 | Yes | No | No | No | No |
0.1-pre | Yes | No | No | No | No |
Test suite
nwcc has always had a test suite containing various simple regression tests. Every one of those tests is composed of a single C source file, which is compiled once with nwcc and once with gcc. The output of the resulting programs is compared to determine whether the nwcc-compiled program yields the same output as the gcc-compiled one. Since gcc is very mature and proven, divergence from gcc output is considered a bug (this means that the test's output should not depend on peculiarities like exact object memory addresses, order of function argument evaluation, and outright undefined constructs).
There is another new test suite which tests some more involved things, like compiling some files with gcc and some with nwcc, and linking them together to check ABI compatibility.
The topic of this page is a much newer and bigger test suite: A modified version of the gcc test suite! I have taken all of the C files from the gcc test suite and adapted my nwcc test suite script to them (for example, many of those files do not have a main() function, and thus only test whether the code is compiled at all). This test suite has been used to find and fix many bugs, and will henceforth help measure progress on the various supported architectures.
Note that many tests of the original suite have been removed (or changed) for one reason or another. Most importantly, I have deleted all test cases making use of GNU C and C99 features that are not desirable in nwcc (at least for the time being). See the bugs page for a list of some of those features. A few tests which still yield compile time errors border on the undesirable and may be deleted in the future. Various other tests which do illegal things like dereferencing uninitialized pointers were also removed.
The test results are from Linux on x86, AMD64 and PPC64. AIX was used for PPC32. The test suite cannot be run on SPARC yet because the SPARC test system has a broken gcc installation, and Sun's compiler wouldn't handle the GNU C test files properly. MIPS test suite results could be obtained, but MIPS support is too weak to try it at this point.
Version | Result | x86 | AMD64 | SPARC | MIPS | PPC32 | PPC64 |
0.8.3 | Passed | 1590 | 1590 | ? | ? | ? | ? |
Runtime failure | 11 | 8 | ? | ? | ? | ? | |
Compile error | 33 | 36 | ? | ? | ? | ? | |
0.8.1 | Passed | 1587 | 1585 | ? | ? | ? | 1553 |
Runtime failure | 12 | 12 | ? | ? | ? | 17 | |
Compile error | 35 | 35 | ? | ? | ? | 62 | |
0.7.9 | Passed | 1587 | 1585 | ? | ? | ? | 1553 |
Runtime failure | 12 | 12 | ? | ? | ? | 17 | |
Compile error | 35 | 35 | ? | ? | ? | 62 | |
0.7.8 | Passed | 1581 | 1579 | ? | ? | 1539 | 1553 |
Runtime failure | 12 | 12 | ? | ? | 23 | 17 | |
Compile error | 41 | 44 | ? | ? | 70 | 62 | |
0.7.7 | Passed | 1568 | 1566 | ? | ? | 1518 | 1541 |
Runtime failure | 13 | 11 | ? | ? | 29 | 16 | |
Compile error | 52 | 57 | ? | ? | 105 | 76 | |
0.7.6 | Passed | 1572 | 1566 | ? | ? | ? | ? |
Runtime failure | 11 | 10 | ? | ? | ? | ? | |
Compile error | 52 | 57 | ? | ? | ? | ? | |
0.7.5 | Passed | 1438 | ? | ? | ? | ? | ? |
Runtime failure | 134 | ? | ? | ? | ? | ? | |
Compile error | 63 | ? | ? | ? | ? | ? | |
0.7.4 | Passed | 1431 | ? | ? | ? | ? | ? |
Runtime failure | 139 | ? | ? | ? | ? | ? | |
Compile error | 65 | ? | ? | ? | ? | ? | |
0.7.3 | Passed | 1345 | ? | ? | ? | ? | ? |
Runtime failure | 215 | ? | ? | ? | ? | ? | |
Compile error | 75 | ? | ? | ? | ? | ? |