1. 17

  2. 11

    C– had its lunch eaten by LLVM, which had a lot more energy and momentum. Although LLVM was always focussed on different primary use cases: a backend for C, not a backend for garbage collected functional languages like Haskell. I think it’s only recently that LLVM has fully supported proper tail calls on all tier 1 platforms.

    1. 6

      I worked on C– with Norman Ramsey and Simon Peyton Jones. Indeed, it emerged around the same time as LLVM and we know that it became much more successful. C– as a project had the right goals and was modest in some sense as it was mostly a portable assembly language, but it suffered from over-ambition in the implementation: it was done as a literate program, which creates a barrier for supporters, and relied on an automatically generated back-end. The back-end would rewrite complex operations into simpler ones, which then would be recognised by a generated recogniser, that would map them to target-specific instructions. While academically interesting, I believe this complexity did not help. The implementation was done in OCaml, which I still think is a good choice for a compiler project (witness web assembly).

      1. 3

        There was even a web site for it

        1. 3

          More papers, and comments on which ones to read, at https://www.cs.tufts.edu/~nr/c--/papers.html

          I believe this is the same as the ‘Papers’ section of the archived C– website that adamo pointed to.