[cfe-dev] C++ Support

Douglas Gregor dgregor at apple.com
Thu Apr 23 15:53:32 PDT 2009


On Apr 23, 2009, at 2:05 PM, Philip Scott wrote:

> Hi all,
>
> I have a bit of an project in mind to write a simple language for
> dealing with a rather specific problem domain (high frequency time
> series), but using the power of clang to make the language highly
> interoperable with C++; e.g. my language's simplified classes will be
> valid C++  classes, strings will be std::strings etc.. in order to  
> allow
> tricksy parts of a codebase to be written  easily in C++, while the
> custom language would be a tool to create a tool for non-programmers  
> to
> quickly develop strategies and analyses.
>
> I was thinking of hooking into the AST generation stage of clang,
> parsing my language into the same AST that clang uses, and then
> borrowing the rest of the compilation pipeline in order to JIT compile
> the code and run it; does this sound at all feasable?

It seems feasible. One note of caution: Clang's ASTs are not  
considered stable, so the ASTs and the interfaces to them are likely  
to change (maybe significantly) in the future, especially as we ramp  
up C++ support within Clang.

> I have made brief
> examination of the clang code and it looks like this could work (great
> code, by the way; it's like a soothing balm after the stuff I have to
> deal with at work). I guess the things that could put a halt or the
> breaks on the project are whether or not the code generated by clang  
> is
> interoperable with that which gcc belches out (same name mangling  
> scheme
> etc..)

It will be. GCC interoperability is extremely important to us.

> and the general state of c++ support.

> I managed to get a few really basic programs compiled and running, but
> as soon as I tried something a bit adventurous like  
> #include<iostream>,
> the world appeard to fall apart. Is this expected, or am I doing
> something wrong?

That's expected. We're missing a lot of C++ features needed for the  
standard library. Our template system, in particular, is still in a  
relatively early stage of development.

> If need be I am happy to muck in to get this show on
> the road; but just so I know roughly how far away are y'all from being
> able to compile something like the standard library? (actually for my
> purposes being able to parse the headers would be sufficient)


I don't know. I hope that we'll be able to parse the standard library  
within a few months time, but you won't get a time table out of me no  
matter how hard you try ;)

Parsing will come first, and code generation is likely to lag by a bit.

	- Doug



More information about the cfe-dev mailing list