Compiler Design Q&A Site

A proposed Q&A site for those wanting to discuss language design or create a compiler/interpreter using existing tools or from scratch.

http://area51.stackexchange.com/proposals/7848/compiler-design

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

Also the theoretical computer science Q&A

Would be quite useful to have a Q&A for theoretical side of PL

Theoretical computer science Q&A

Site now closed

Sadly StackOverflow have decided not to open this site after all. The explanation is here

Reasonable. A tag for

Reasonable. A tag for language and compiler design questions allow the topics to exist directly in Stack Overflow.

Love the use of the Charlie Brown/Lucy/Football photo.

Tags vs Sites

Of course a site comes with expectations about what the scope of questions should be. There was a list of good/bad questions and the early users who had committed to the site could be expected to moderate the questions to keep the signal to noise ratio fairly high. In comparison the compiler tag on StackOverflow already has a fairly low signal to noise ratio as many of the questions have nothing to do with compilers in the sense of Compiler Design, and instead are "I have a problem making X compile on Y". Also, I don't think there can be any moderation by tags on StackOverflow - is it possible to vote down questions for having the wrong tag?

Given the large number of people who committed to the site I wonder if something else will spring up to fill the void?

Here's hoping

A discussion site, of LtU calibre, focusing on the practical side of language design/implementation woud be of huge benefit for somebody as green around the ears as I am. Following the BitC mailing list has been worthwhile however I'm yet to find any websites worthy of note.

</end moaning>

I guess that it is worth

I guess that it is worth mentioning that LtU has had an "implementation" department for many years. Interesting items regarding language implementation (from parsing to runtime issues) are quite on topic here. Naturally, on this topic as on others, the purpose of LtU is to discuss interesting approaches and new work and techniques, not to be a Q&A site or a forum from brain storming.

Just to clarify, if anybody read it as such

The "/end moaning" in my previous post wasn't supposed to imply frustration that LtU does not fulfil the role the StackExchange site looked to be taking on.

As Andrew observed; the signal to noise ratio on StackOverflow (and other sites I've found) is pretty poor and the Compiler Design StackExchange looked like it might facilitate my learning of practical aspects of language design and implementation in the same way LtU has for theoretical ones.

Thanks for the reminder about the implementation department Ehud, I've grabbed a few bits a pieces posted there for (much) later reading. The level of the material is a bit beyond me at the moment however I can see that it'll be useful in the future.

Just registered phinode.com

We might as well make this site ourselves. I just registered phinode.com and I have plenty of free space on my webhost. Could anyone recommend a platform? I could potentially code a site from scratch but I'm sure I'd be reinventing an oft-reinvented wheel.

Anyhow, I like the idea of a site not as heavily focused on new research as LtU. There is a frightening mass of "folklore" in different research/implementation communities and it wouldn't hurt to get everyone talking about existing expertise. For example, I would love to see a nitty-gritty discussion between compiler people who work in different intermediate representations (SSA CFG vs. some continuation passing lambda language vs. program dependence graph). Some optimizations are easy in X but difficult in Y-- understanding why this is true helps you understand both the representation and the optimization. Also, there are often very interesting posts on the BitC mailing list, the OCaml mailing list, the types-list and on other online communities that deserve to be more widely read. That's not to say new research wouldn't be welcome (I'd love to keep better tabs on what gets published at CGO, PLDI, etc..) but it should be on even footing with established techniques.

Topics I imagine could cohere and keep a community interested:
- interpretation and virtual machines
- compilation: static, dynamic or some staged combination of the two
- program analysis: data flow, abstract interpretation, type and effect systems
- runtime features: garbage collection, data movement for distributed computation
- implementation details for any of the above

Just FYI, on the apology

Just FYI, on the apology page somebody called "configurator" posted this:

To everyone that was disappointed by having the rug pulled out from under compilers.stackexchange.com, I’ve got some good news. A small group of us has banded together to create the website instead, and we’ve started a private beta. By private, of course, I mean only people who have heard of it will be able to access it. The website is currently at the heavily-hyphenated subdomain http://super-secret-private-beta.compiler-design.com/ – and all who committed or were interested in the original proposal are welcome to join. For more details see http://www.compiler-design.com/why.

The blurb on the beta site says explicitly that it is about "compiler and language design". Perhaps anyone interested could try to contribute there first before opening a new site. Unfortunately, the information about the site is buried in the midst of the comments.

I've scanned the questions,

I've scanned the questions, not many on language design yet.

Maybe the group of people that do language design, and even compiler implementation, is pretty small...sort of like the 10 people in the world who can write a decent garbage collector. So there wouldn't be so much critical mass for a Q&A site even in the idea case where everyone eligible uses it.

Some of the content is reasonable for language implementation...

However, I don't know if pure Q&A is the right format for this kind of thing. I like LtU's curated front page posts, the guarantee on quality makes me more likely to visit here repeatedly. There are many things worth posting which aren't a question. Also, as on LtU, some posts require a little introduction/explanatory text to make them interesting. Otherwise you just deter the majority of readers with titles like "An O(n^2) implementation of UNFAMILIAR JARGON".

Now, I agree that number of people who can (or should) do language design is vanishingly small. However, the number involved in *implementing* languages seems to be sufficient for interesting discussions. If you consider just the LLVM devs and projects using their framework you'll already have quite a few people to potentially talk with (see llvm mailing list and http://llvm.org/ProjectsWithLLVM/). There are also developers working on Mono, PyPy, Parrot, the family of non-standard JVM languages, dynamic languages on .NET, the competing set of JavaScript JITs, the community of GCC developers, all the commercial language implementations (too numerous to count) and most importantly: Mike Pall the one man army of LuaJIT fame. If a compiler site had nothing but the pontifications of Mike Pall, I would read it happily.

Most questions were pulled from original stack exchange site

If you actually click into a large portion of the questions, especially the early ones, they are directly pulled from the original proposal. The original proposal did not have much in the way of language design.

I'm not sure language design works very well with the Q&A format. Quite frankly, I've been trying to think of a good question in that area. Why not give it a shot though? I think there's definitely a gap that LtU doesn't fill.

For the record, some folks

For the record, some folks went ahead and set up a mailing list awhile back: http://groups.google.com/group/pilud

I've been on the list a while

I think it's great, actually, but I think the mailing list isn't a perfect medium either. I'm happy to be a part of the exploration. It's an experiment I think, really.

Does anyone else remember

Does anyone else remember the good old comp.compilers usenet group? That was a very high quality, albeit moderated venue (by John Levine?). I agree some experimentation is needed. There is so much fun stuff to work with these days: wikis, blogs, micro-blogs, tweets, crowd-sourced Q&A site, social code hosting sites (GitHub), ...

Mostly uninteresting nowadays

I still follow it but find it mostly uninteresting these days. Once in a while an interesting thread floats by about some micro-optimization that was important years ago but sadly forgotten and references to very interesting older work appear.

Great link

That's exactly what I've been looking for. There seems to be a lot of interesting material to catch up on there.

It shocks me that dmbarbour is so verbose on there, compared to his normal conciseness here on LtU :)

Sarcasm carries so well

Sarcasm carries so well across a textual medium... :|

The PiLuD discussion group is for people who want help with language design - usually in the form of 'second opinions' and brainstorming, or at least we haven't yet seen many technically detailed discussions. I'm wondering if Wave or a Wiki might be a better forum - language design is such an iterative process.

Looks good

I've only read through a couple of the discussions on there so far but it looks really good. I like what you're doing: the "long-winded" interrogative approach seems to be a brilliant teaching aid. Too often people bounce into a forum with half-baked ideas and nobody has the patience to slowly go through the implications of their work with them to see if it floats or not. Often a forum can work as a talking shop for peers to exchange ideas (one area that LtU excels at), but it much rarer to see a venue that makes a mentoring approach work as well.

I'm going to keep an eye on how PiLuD does as there is a lot of interesting material on there. If you're going to experience with other media then I would caution against Wave. We tried it for a while as a talking shop, but ultimately it's too free form and the social conventions needs to guide the flow of a conversation are not backed by the technology. Even some kind of "recent changes" control that shows you where bits of the old conversation are mutating would be helpful.

Wiki is quite a good medium, and as always it raises the question of how to change smoothly from a purely discussion medium into some form of archival. Although Wave didn't hit that spot well enough there is still a need. If only there was a reader of LtU that had recently written a language for rapidly prototyping webapps that was interested in designing a mailing-list/wiki hybrid...

One element that probably

One element that probably does fit with the Q&A format is issues regarding formal semantics and interactions of features.

We need a moderated site on

We need a moderated site on compiler implementation and relevant language design issues.

The site must be moderated to kick off all student questions such as "How do I create grammar X to do my homework?" and too broad questions, such as "How does Ruby work?"

I imagine simple, naive but still legitimate questions will bloom early, and the moderator can then deny further identical questions, referring to the original thread, such as "What is direct threading?".

But the runtime systems, type checkers, panoply of optimizations at all levels, etc. for modern languages is, as a previous poster noted, full of very important folklore. I find Citerseer sometimes yields interesting articles and other times turns up naught, depending on the compiler implementation issue.

Like LTU, we can well privilege postings with references to quality literature, particularly new papers, on a particular implementation issue.

We need an LTU quality site to discuss fusion optimization or register allocation strategies, or costs/benefits of custom link-time optimizations, and so on and so forth.

- Scott

Agreed 100%. I would also

Agreed 100%.

I would also like to have a repository of information with a lot of examples of tradeoffs in IR choice, and discuss how the implementation of various optimizations becomes more or less complex across IRs, etc. This is perhaps the biggest design issue, and seeing how it has panned out in a large number of different compilers would be extremely helpful to implementors.

Having forum topics that are separated into roughly the different phases of compilation would allow people to go directly to their favorite topics faster and ignore the details of other phases that they are not interested in. Example topics: parsing, semantic analysis, typechecking, IR design, local optimizations, global optimizations, SSA form, loop optimizations, register allocation, instruction selection. Each of those seem to have enough topic topics for discussion to fills reams and reams of the internet :)

I would find the site helpful to find my blind spots. If each topic had a section on "required reading" with links to classic papers and textbooks--perhaps a beginner, intermediate, and advanced list of papers on each topic--that would certainly help a lot. Sometimes a literature search is stymied by terminology. It seems like the forum would be a good place for people to describe an idea, and if it roughly matches a known area with specific terminology, someone else who knows the correct terminology can point the person in the right direction, forwarding them to a section in the "required reading" page.