C³designer's blog

Yes, I'm C³wife's husband ;)

« Back to blog

Status Update + IPG

Not much happened on this blog and c3wife's blog lately because I was back at work at Beenox for 3 months. They urgently needed someone for a specific task and I was happy to get back to work for a short time, giving me time to think about the next steps for C3. My sabbatical will be extended to December 2011, making it a complete year as scheduled.

Since my return at home, I worked on IPG and I decided that I would complete this project before continuing work on C3. I think the best thing to do now is to get things rolling as soon as possible. I hope to get experience with the dynamics of releasing open source software and hopefully accepting patches and interacting with users and collaborators.

IPG stands for "Incremental Parser Generator". The basic idea is to create a parser generator (such as Yacc or Bison) but with a few twists:

IPG was created to implement the following design choices for C3:

  • Have a single grammar for multiple purposes: easily modifiy the syntax, generate the parser (potentially in many languages), learn the syntax
  • Have a single code path for all parsing needs: compilation, syntax-highlighting, refactoring, etc.
  • Have a completely incremental process from code to execution (that can happen on the fly)

The current implementation generates C++ code. One interesting property is that the interface to traverse the parse tree is an STL-style iterator, making the client code very clean and terse. I will continue to work improving the interface and implementation but I will soon make a real first release.

 

Sep 16, 2011
Aidan said...
I thought Microsoft were about to release a version of your langauge when I read this...

http://developers.slashdot.org/story/11/09/16/0253202/Microsoft-Previews-Comp...

...or at least use the C3 name. Turns out though it's just a typo, the author was aiming for C# but forgot the shift key.

I don't get that particular typo myself, because the UK layout keyboard has the # key next to the enter key. But it does illustrate that C3 is a good name (if it's allowed) as it's close to C#. How's the development going?

Nov 08, 2011
stellacore said...
How long before we get a look at your preview here?
Nov 08, 2011
I'm still working on the grammar, so I can't say anything better than "when it's done" :(
Nov 08, 2011
stellacore said...
Understood. Just from what I can tell you actually might "get it" regarding what a next gen system language should be. Now to get traction... probably the raspberry pi (http://raspberrypi.org) might be a good demonstration platform since it's so cheap and likely to become a standard in research, os, compiler, etc.
Nov 08, 2011
My plan is to emit LLVM bitcode and to support whatever platform that they do, starting with OS X since that's what I use (and LLVM support is great on OS X because they invest a lot in its development).
Nov 08, 2011
stellacore said...
somenoe just pointed out the "chapel" language by SGI.
http://bartoszmilewski.wordpress.com/2011/11/07/supercomputing-in-seattle/
leads to the chapel page.
My knee jerk reaction when i see something like this is: why are all the parallel support keywords required. Can't this be something that is handled by a library?
Nov 08, 2011
Yes! Allowing libraries like that is an important part of what C³ is all about.

The part that I dislike most about Chapel is their "shared global address space" . In C³, most of the time, you work with values and the compiler decides where to put them in memory.