RFC: "Native -XCPP" Proposal

Herbert Valerio Riedel hvriedel at gmail.com
Wed May 6 11:08:03 UTC 2015

Hello *,

As you may be aware, GHC's `{-# LANGUAGE CPP #-}` language extension
currently relies on the system's C-compiler bundled `cpp` program to
provide a "traditional mode" c-preprocessor.

This has caused several problems in the past, since parsing Haskell code
with a preprocessor mode designed for use with C's tokenizer has caused
already quite some problems[1] in the past. I'd like to see GHC 7.12
adopt an implemntation of `-XCPP` that does not rely on the shaky
system-`cpp` foundation. To this end I've created a wiki page


to describe the actual problems in more detail, and a couple of possible
ways forward. Ideally, we'd simply integrate `cpphs` into GHC
(i.e. "plan 2"). However, due to `cpp`s non-BSD3 license this should be
discussed and debated since affects the overall-license of the GHC
code-base, which may or may not be a problem to GHC's user-base (and
that's what I hope this discussion will help to find out).

So please go ahead and read the Wiki page... and then speak your mind!


[1]: ...does anybody remember the issues Haskell packages (& GHC)
     encountered when Apple switched to the Clang tool-chain, thereby
     causing code using `-XCPP` to suddenly break due to subtly
     different `cpp`-semantics?

More information about the ghc-devs mailing list