HNNewShowAskJobs
Built with Tanstack Start
Whitesmiths C compiler: One of the earliest commercial C compilers available(github.com)
96 points by todsacerdoti 5 days ago | 31 comments
  • kragenan hour ago

    Plauger's books are good reading! I'm sorry to hear he's not in good health.

    Not to take anything away from Whitesmiths† C, which has a good reputation, but if you're interested in a C compiler for CP/M, BDS C is fully open source and free software, and also was well regarded. But it's written in assembly, and its compatibility with other C compilers (this was long before ANSI) leaves much to be desired.

    We can hope that eventually the Whitesmiths licensing is cleared up, especially since the source is evidently in C. It would be great to have a fully self-sufficient free software development environment that could run on something as simple as an 8080 (6000 transistors, I think NMOS and therefore about 2000 gates) and didn't require you to dip into assembly all the time.

    We can probably do better than the 8080 today. Graeme Smecher's Minimax, or Chuck Moore's MuP21 or F18A, seem like they would be a lot more comfortable to program on, and they're not much bigger. The MuP21 was 7000 transistors including ugly video output, with 21-bit words instead of 8-bit, and gsmecher's Minimax is a 32-bit RISC-V in 507 LUT6s, which I don't think anyone has done an ASIC of.

    ______

    † Blacksmiths make hardware; who makes software?

  • sizzzzlerz5 days ago

    That brings back some memories from my early days. I worked on a project that had decided to use the newish C language for a 68000-based system. They chose Whitesmith compiler for it, probably because it was the only one available. For some reason, I was selected to attend a class on learning C and became responsible for installing the compiler and assisting the other engineers on using it. The project was ultimately successful but I don't recall what issues we had with it. I do remember contacting Whitesmith a couple of times to resolve some problems. I guess it possible I was talking directly to P.J. Plauger himself, although, at that time, I would have had no idea who he was.

    • TomMasz8 hours ago |parent

      I remember using that compiler for M68K in the mid-80s, cross-compiling on a DEC Vax. The debug monitor we were using only displayed hex, no disassembly. The compiler was so predictable that I could locate the memory location for any C statement easily. It made patching code in memory a simple task.

    • julian556 hours ago |parent

      It brings back memories for me too. This compiler was my first introduction to C, before that I'd used Pascal or Fortran. I worked on Z80 but we also had a 68K project which ran Whitesmith's Idris UNIX clone before we got real System III ported

    • vaxman2 days ago |parent

      ..directly while also visualizing his neck veins xD

  • ChrisMarshallNYan hour ago

    For the first fifteen years or so, of my career, I used Whitesmiths indenting (as opposed to the K&R that I've been using since). I never knew where it came from. It was just a name, to me.

    You can see it, if you look at the code.

  • Rochusan hour ago

    What C version does it support (besides K&R C)? The repository seems to include version 2.2; when was it release? Does the compiler any optimizations?

  • HocusLocus2 hours ago

    Turbo Pascal: One of the earliest bang it out languages that compiled so tightly and quickly it was like a reduced instruction set with benefits

  • jockm12 hours ago

    I hope one day the source for Whitesmiths unix clone Idris gets released. IIRC it was the first unix clone, and it would just be nice to have that preserved for history

    • tomsmeding8 hours ago |parent

      Seems you're in luck! Clicking around on the github page of the posted link, one finds https://github.com/hansake/Whitesmiths-Idris-OS .

      • jockm5 hours ago |parent

        That is just the binaries, unless I am very much mistaken. I was (trying to) refer to the sources as well

      • icedchai5 hours ago |parent

        Those look like binaries, not source code?

  • vaxman2 days ago

    Mind. Blown.

    On DEC systems, I programmed using FORTRAN, BLISS, MACRO and (on GiGi and RSTS/E) in BASIC for a long time.. then one day the Bell Labs spinoff I worked for bought a Whitesmith’s C license for the VAXcluster (for probably oodles of money) and I was transferred into a group headed by the guy who wrote UNIX’s malloc implementation a long time before I came along. He hated VMS as much as I hated C. He couldn’t use UNIX because it only ran on dogshit computers. I couldn’t use FORTRAN because someone read a book that said C was cool. We all carried around our K&R pamphlet books and the Whitesmith’s manual (which the Indian workers would mispronounce with three syllables lol). The compiler had all kinds of issues on VMS. Eventually, DEC released VAX-11 C (still have my little 5x7” orange book) and that was enough to make me give up (the truly wonderful) VAX FORTRAN and MACRO/BLISS compilers. My home setup (it was not common for anyone to have home setups then, even programmers) was all assembler, FORTH, Pascal and BASIC but with the shift to C at work, I finally sold a kidney and bought Lattice C and later Aztec C and after moving to the Mac (as I sealed my Amigas into the boxes in the garage where they remain to this day), MPW C, THINK C and CodeWarrior C, MS Visual C, before Yggdrasil Linux…GNU C, then GNU Objective C and now (needle scratch silence) Swift? All started with Whitesmith’s C…

    • icedchai35 minutes ago |parent

      Ahh... memories. I first learned C on an Amiga with Lattice C (which turned into SAS C.) My A500 was souped up with a HD and extra memory.

    • robinsonb59 hours ago |parent

      If any of those Amigas had a battery backed clock, please remove the batteries at the earliest opportunity and neutralise the area affected by any leakage with a mild acid such as lemon juice. They'll almost certainly have leaked by now but the longer it's left the worse the damage will be.

      • burnt-resistoran hour ago |parent

        By now, that's the least of the concerns. If they use linear PSUs with massive electrolytic capacitors, I'll bet they're toast (dried or leaking, and so far outside of spec). And anywhere with any amount of humidity without desiccant packets and sealed in plastic will experience corrosion of PCBs and connectors.

      • bitwize3 hours ago |parent

        When I bought my Amiga, its clock battery had been replaced by a mount for a coin battery. That machine had received some serious love.

      • gjvc7 hours ago |parent

        Absolutely this. The Varta batteries of the 1990s have inflicted awful irrepebal damage on many systems of the time. Especially sad when people thought they were keeping them safe in their attic and then unpacked them to find the motherboard full of dead components.

    • Scubabear684 hours ago |parent

      I was lucky enough to work for Manx Software starting, I believe, in 1988. So I not only had free access to all of the Aztec C products, but also learned tremendous amounts from being able to see and work on the source code itself.

      I also ended up being a VI guy because Manx had their own vi implementation…

      Memories indeed.

    • eej7110 hours ago |parent

      I'm old. I instantly recognized your username.

      • vaxman41 minutes ago |parent

        I’m getting there, but I was trapped in a movie that wouldn’t be made for another five years… https://clip.cafe/the-secret-of-my-success-1987/why-are-wear...

    • B1FF_PSUVM8 hours ago |parent

      > Eventually, DEC released VAX-11 C

      A bit raw, with floating point bugs in libm ...

  • mzs11 hours ago

    still have code with this indentation style here: https://github.com/hansake/Whitesmiths-C-compiler/blob/main/...

    • DamonHD8 hours ago |parent

      I have always used (ie since the mid '80s) something like WS layout for C and its descendants. Only much later did I hear that name for it. Often unfashionable, but I have also been a magazine editor, and like the braces to visually lead the eye down the edge of the code that they surround, like a non-indented text para.

      • mzs8 hours ago |parent

        I prefer the Sun extensions to Indian Hill for grepability but I see the appeal especially to folks that came from pascal. Look closely at the example echo.c, thats not "#include <stdio.h>" ;) We still have this included in lots of code where I work since it dates from around 1980:

          % grep '/\*' std.h
          /* std.h header file to allow use of Whitesmiths pseudo classes/types. */
          /* the pseudo storage classes
          /* the pseudo types
          /* system parameters
          %
        
        And yes for me there are ~600 files I still regularly work in written in WS style.
  • ok12345611 hours ago

    Take a look at some of his other repositories. There's one that has basically every CP/M programming tool.

  • b0a04gl8 hours ago

    file layout is the interface here lol you can literally walk the pipeline.. lexer parser codegen linker all just sit where they should. the dir was the flow. back then structure = filesystem. we can cd trace src to bin just by lookin at folders

  • chubot12 hours ago

    Replaying a good comment from lobsters! https://lobste.rs/s/ybarpv/whitesmiths_c_compiler_one_earlie...

    > You might also enjoy the Advent Of Computing podcast episode about IDRIS, Whitesmiths’ UNIX clone. History of the company and the compiler included, because they’re all related.

    https://adventofcomputing.com/

    https://youtu.be/UeZpKgtRfx0

  • secondcoming12 hours ago

    I remember seeing his name in some Windows header files and always wondered who that person was. Cool.

    • SeanCline9 hours ago |parent

      Specifically, you'll find his name in the C++ Standard Library headers. Microsoft licensed their standard library from Dinkumware. https://en.wikipedia.org/wiki/P._J._Plauger#Dinkumware

      • mrec8 hours ago |parent

        Oh wow, I never knew he was an award-winning SF author too. I remember a couple of exchanges with him on the comp.lang.c++.moderated group back in the day.