Obscure C/C++ compilers

What strange, obscure or long obsolete C and C++ compilers did you use to write software?

Here are some examples that I professionally used at one point or another:
  • Borland Turbo C
  • Borland C++ Builder
  • Desmet C (ran on IBM PC DOS 2 or 3.x)
  • Digital C compiler - I was a beta tester for Digital's first in-house C compiler for the PDP-11; this version ran on RSX-11M+.
  • Digital VAX-11 C
  • TI TMS320/C30 C cross-compiler
  • Paradigm C/C++ (Winter Edition) - for an embedded x86 point of sale application; required a USB dongle to work.
  • Watcom C for PE and LE executables in DOS/Windows (this later evolved into OpenWatcom)
  • Whitesmith's C (PDP-11)
It was a bit strange to see DEC introduce a new compiler for the PDP-11 since the whole product line was being replaced by Micro Vaxes.

I did not know P. J. Plauger was one of the founders of Whitesmiths.

Don't be afraid to post duplicates along with any insights and observations.
 
Hi-Tech C for cp/m. Was written by a small Australian company named Hi-Soft. It existed in the late 80s; I don't remember exactly which year I bought my copy. A little web search shows that it is now on Github, and seems to have become open source.
 
The weirdest C compiler I experienced by now so far was in the early 2000s the internal C compiler of the IDE for Microcontrollers named "TASKING" (I just checked there still is some software by this name today, but I neither know if it's the successor, the same developer, nor if they improved their compiler.)
It was explicitly named "ANSI C", I was already versed in C, and my reference was the KR's second edition.
Any kind of nesting was very dangerous. Not only you needed to be very careful about using loops in loops, but in using loops at all, and better preferred while() instead of for(). Also some syntax things like this were not complained by the compiler, but did either not work, or produced some inpredictable random behaviour:
C:
int i, n, a[100];
char c;

[...]

// Not working:
a[i++] = n;
// working:
a[i] = n;
i = i + 1;

// Not working:
c = i;
// working:
((c = i)); // yes, double braces!

Can you imagine how much time, energy, and hair I lost to figure that f#c4 out?! Slaving weeks over my code checked it meticulously a thousand times, why the shit still not work.

Looking back it had not only helped a lot knowing Assembler, but it had been way quicker to do all this particular programming in Assembler directly in the first place.
But NO! Assembler is so Yuk! So stone age. Everybody is telling you, 'Don't even touch this crap! It's not worth to know anything about it all! It's a pure waste of time! Use HOL only instead!' - what time it saved me if I had not to deal with some immature, not consequently developed C compiler, which to me seemed not to be even a real compiler at all, but some unfinished wrapper, some incomplete collection of Assembler macros disguised as C code.
🤬
 
What strange, obscure or long obsolete C and C++ compilers did you use to write software?
I suppose, I should exclude the 8-bit HiSoft C compiler that I mentioned earlier. I never wrote anything useful with it as it did not have floating point support. It was just a learning experience.

The first x86 PC compiler I bought with my own money was Mix PowerC. It came with very good printed manuals. As I remembered the disappointment with HiSoft C lack of floating point, I opted to buy the complete bundle with BCD math and C-ISAM database libraries. The first DOS program that I wrote that was used by other people was a tool to convert telephone numbers from an old area code to a new form. At work I was using Borland TurboC, so after a year or so I bought my own and kept buying upgrades until I started working on Unix systems.

I had a great two monitor setup at home for debugging with the Borland tools. I had an amber CRT screen connected to a Hercules card for monochrome text IDE and a colour monitor on EGA/VGA/SVGA card for program output. My own kit was better than I had at work so they let me work from home part of the week as I was more productive.

I haven't written anything worthwhile in assembly language, C or C++ for years. I mostly only write shell script, Python and Ansible now although I have been experimenting with the Drogon Framework recently.
 
GNU played a large role in this:
  • g++
  • gcc
  • gas
  • gdb
And of course the "stock" UNIX compilers
  • cc
  • as
When it's "free" as in "free beer", everyone gets to program!

I used to "compile" the GNU tool sets on to older UNIX machines during the "Old Republic" era. Once you had GNU tools installed then you could then compile a lot of other software.
 
A couple of obscure ones I can think of are the mark williams company C compiler that came with the Coherent o/s https://www.nesssoftware.com/home/mwc/manpage.php?page=cc , and a windriver vxworks compiler for MIPS targets that I used once that turned out to be a hacked up version of gcc...

A nice one I remember is 'tcc' aka "tiny c compiler" by M. Fabrice Bellard https://www.bellard.org/tcc/

Also the Sun C compiler on sun workstations years ago, that was memorable for still having to use K&R style (ie pre-ansi) function declarations, and I can also remember a C compiler on dec ultrix when we had a VAX 8650, but that's going back a long time.. :)

Really it's pretty amazing that I'm still programming in C now! 😂
 
Obviously I wasn't the only one stuck with a not so very great C compiler.
That's somehow a relieve. Thanks Guys.

It seems the 80s and 90s were full of rugged C compilers, since it was the time everybody had to use C for everything, and so they were produced to be sold quickly.
One can get the clue from CShell's post:
OpenSource again saved the day - of course: (way) more developers, interested in making things work correctly, instead of being urged to release any crap, most important thing: release date is kept.
 
HiSoft C 8-bit for Sinclair ZX Spectrum 48k on compact cassette tape
Mix PowerC (DOS)
I remember HiSoft, I had their pascal that I used to run on a tosh msx machine, and devpack which was their Z80 assembler package. I never had their C compiler though. Wow, I'd forgotton MIX! (of course, that name was borrowed from a famous book). There's been so many of them...

EIC flag? There's an interesting page here:- https://www.eastindiacompany.amdigital.co.uk/
 
And we've forgotton Zorland... that became Zortech (or was it the other way round) - Walter Bright, who later developed the 'D' programming language. At least, I think that was Walter's company, my memory is hazy now hahaha.
 
I remember Coherent becoming BSD licensed some time ago. I just found it on Github

I don't remember TCC. It would be interesting to check performance and executable size with modern compilers.

EIC flag - Also the flag of all 'Colonies of the British Empire' at one time, everywhere that the EIC traded. It was briefly the first flag of freedom before the Betsy Ross replaced it.
 
C compilers I've purchased license were:
Borland Turbo C and Borland C for NEC MS-DOS and IBM PC-DOS/V
Watcom C for IBM OS/2

And what tried for evaluation were:
Lattice C for NEC MS-DOS
C-terp for NEC MS-DOS (not actually a full compiler, though)

Possibly C-terp ran on top of sim (simulator for IBM PC BIOS on NEC PC-9801).

C-terp was interesting for prototyping on evaluation, but not purchased as Turbo C was quick enough and Turbo Debugger was useful enough at the era.
 
I really liked Coherent, the book that came with it and the manpages were very well written for anyone who wanted to learn unix at home. I think I still have that book buried in a box somewhere. Yes I grabbed the source when they opened it, but I never got round to doing anything with it.

Another interesting tidbit is that Aaron Swartz (founder of reddit and of "the internets own boy" movie fame) was the son of Rob Swartz who was the founder of MWC, so Aaron must have grown up surrounded by computers...

TCC was/is a pretty nice little compiler, although a lot smaller and without all the headers and extensions of gcc, so it can't compile a lot of the code that gcc will compile. If you need a small C compiler for something like embedded work it can be useful.
 
And we've forgotton Zorland
I was a Borland fan, so I never tried their C or C++. I was absorbed into Paradox, Paradox Engine and TurboVision for a long time. I miss Paradox 3.5. It had the best printed documentation of any software I have ever used. I only briefly used the SQL extension for it. I have often wondered if it would have been a success coupled to PostgreSQL or MySQL. I hated Paradox 4.0 and ObjectPAL.

Watcom C for IBM OS/2
Was Watcom C the official compiler for NetWare? I had the chance to use Novell's official SDK with the recommended compiler at a customer site to try writing NLMs but I cannot remember what it was. Novell gave me the SDK but I didn't have the right compiler so I could only use it to create DOS based utilities.
 
Lattice C for NEC MS-DOS
I remember the Lattice C ads, but I never used their compiler.

NEC MS-DOS was my favourite DOS to bid on at an auction room. It ran on most XT clones that I had built without a problem, all of which I had upgraded with NEC V20 or V30 CPUs.
 
The weirdest C compiler I experienced by now so far was in the early 2000s the internal C compiler of the IDE for Microcontrollers named "TASKING" (I just checked there still is some software by this name today, but I neither know if it's the successor, the same developer, nor if they improved their compiler.)
It was explicitly named "ANSI C", I was already versed in C, and my reference was the KR's second edition.
Any kind of nesting was very dangerous. Not only you needed to be very careful about using loops in loops, but in using loops at all, and better preferred while() instead of for(). Also some syntax things like this were not complained by the compiler, but did either not work, or produced some inpredictable random behaviour:
C:
int i, n, a[100];
char c;

[...]

// Not working:
a[i++] = n;
// working:
a[i] = n;
i = i + 1;

// Not working:
c = i;
// working:
((c = i)); // yes, double braces!

Can you imagine how much time, energy, and hair I lost to figure that f#c4 out?! Slaving weeks over my code checked it meticulously a thousand times, why the shit still not work.

Looking back it had not only helped a lot knowing Assembler, but it had been way quicker to do all this particular programming in Assembler directly in the first place.
But NO! Assembler is so Yuk! So stone age. Everybody is telling you, 'Don't even touch this crap! It's not worth to know anything about it all! It's a pure waste of time! Use HOL only instead!' - what time it saved me if I had not to deal with some immature, not consequently developed C compiler, which to me seemed not to be even a real compiler at all, but some unfinished wrapper, some incomplete collection of Assembler macros disguised as C code.
🤬
sounds like a nightmare to use
 
I remember the Lattice C ads, but I never used their compiler.

NEC MS-DOS was my favourite DOS to bid on at an auction room. It ran on most XT clones that I had built without a problem, all of which I had upgraded with NEC V20 or V30 CPUs.
What I've owned was PC-9801Vm2, which had V30 CPU and GRCG.

One interesting rumor about C compiler on NEC MS-DOS was about Japanese word processor "Ichitaro" by JustSystems.
Version 2.x and older (I've started using it from ver.2 through 4) was quite slow on V30, but version 3 became far more faster (still slow, though).
But what they did for optimization was just switched from Lattice C to MS C and other works are only for debugging and inplementing new functionalities.

Just an old rumor.
 
TCC is best at one thing - compile speed. There was even some crazy way to boot linux by reading the source code from disc, compile it and boot the in-memory image from tcc. No idea if that still works, but here it is. Is that some JIT?

Then there is also pcc, but that seems defunct. I haven't heard from the current maintainer in some time. Actually, I may still have a few lines in that code base.

There also was pdc, which I used for a long time. A little bit of dice (of Matt Dillon). That repo is still active it seems. Nice.

Later on, there were gems like the cray compiler (based on a plum hall front end), gcc, then llvm. MS-C only with combat pay. The SUN SPARC compiler was fun, when you had to walk to the admin because the core dump of the compiler ended up smashing your disc quota... again. Not the fault of the compiler, which generated great code (gcc did poorly on RISC platforms back then). Just an OOM which was never assumed to be happening.
 
TCC is best at one thing - compile speed. There was even some crazy way to boot linux by reading the source code from disc, compile it and boot the in-memory image from tcc. No idea if that still works, but here it is. Is that some JIT?
That is amazing. I might just have a go at that if I can find a tarball for Linux 2.4.26 .
 
Back
Top