Reading time: 20 minutes
There are over 50 compilers for C like ICC by Intel to GNU GCC by GNU Project. The focus of having multiple compilers is to optimize the compiled C code for specific hardware and software environments. This has lead to a vast number of compilers but some have been abandoned in the path.
Some compilers were developed in 1980s (GNU GCC) while the recent ones are from 2017 (AOCC).
Some compilers like LabWindows are used by a specific and small group of developers. At the same time, there are compilers like GNU GCC and ICC that are widely used till date.
Following is the ultimate list of C compilers that found some users:
|Compiler||Release||Developer||In Wide Use||Users|
|BSD C||1979||Zolman||No||BSD Unix|
|Aztec C||1980||Manx Software Systems||No||DOS|
|Lattice C||1982||Steve Krueger||No||DOS|
|Turbo C||1987||Turbo||No||Turbo IDE|
|Megamax C||1988||Megamax, Inc||No||Atari + Mac|
|Acorn C||1988||Acorn||Yes||RISC OS|
|Oracle C||1991||Oracle||Yes||Oracle Developer Studio|
|LCC||1994||Dave Hanson, Chris Fraser||No||MathWorks|
|cc65||1999||Bassewitz||Yes||Old 6502 systems|
|Open64||2002||Open64 dev||Yes||Itanium, x86-64|
|Watcom C||2003||Watcom||Yes||General + Novell|
|TCC||2005||Fabrice Bellard||Yes||Various libraries|
|XL C||2007||IBM||No||IBM systems|
Beyond this, there are several other compilers that were not used by a significant number of users and originated from several sources like:
- University research projects
- Backed by companies but failed to get users
- Experimental projects by a small group of developers
Why did some compilers go out of use?
One notable example is PCCM. It was widely used at a time as a general compiler but will the entry of better compilers like GCC, users moved from it.
Sometimes, backing companies are dissolved which results in downfall of the compilers like PathScale.
Why we need multiple compilers?
We need multiple compilers because:
- Instruction set that is optimized for a particular hardware systerm varies.
- Operating systems plays to significant role in execution.
Hence, a compiler can be optimized for:
- a particular Hardware system
- a particular Operating System
- Particular system load like distributed, real time and others.