This is the Summer of Code proposal I was talking about in my last message (anybody read?).
I'll soon send it to melange, too.
Title: C++0x Lambda functions implementation
The C++ committee recently approved the new C++ 2011 international standard, adding a lot of
new features to the language. The clang compiler supports a part of them, including the most
relevant ones such as variadic templates and r-value references.
However, a lot of other new features still need to be implemented. This proposal is about
implementing the new lambda functions. Although it's not the most important feature of the
new standard, it's already implemented in other compilers such as gcc and VC++,
and I think clang should stay up-to-date.
This project will implement lambda functions in Clang, including other needed C++0x features.
In particular, this will imply the implementation of at least the new "lately-specified return type" syntax.
The project will cover all the aspect of the implementation, from the parser to code generation,
including full compliance with the international standard document and a full set of unit tests.
The implementation design will also need to deal with a similar feature that
clang already implements: the apple blocks extension. As previously discussed
on the mailing list and in the IRC channel, the two features will have to share a fair amount
of architecture to work well together, and the interoperability issues between the two
features need to be well studied (especially regarding object lifetime in Objective-C++).
2. Why I'm interested in this project:
My main academic interest area is in the development of compilers, and for this reason
I've followed and used the LLVM and Clang project for the last two years.
Since I plan to graduate this year, the GSoC timeline fits quite well in my plans and
I would like this project to be my undergraduate thesis work.
I've chosen to implement lambda functions because I'm also very interested in functional
and functional-style programming, and it therefore is my favourite C++0x feature.
3. How the project will be useful for LLVM:
In the next years, competition between C++ compilers will focus on C++ 2011 compliance.
Therefore, I think it will be important to Clang and LLVM to have strong support for this new standard.
Since Visual C++ 2010 already implements lambdas, this feature should be added as soon as possible
(imho) also to increase interoperability.
4. Prior knowledge in compilers and LLVM:
As I said, In my academic life I've been interested primarily in compilers implementation.
For this reason, I'm following the Compilers course at the University as part of
my undergraduate degree in CS, and I've been interested in LLVM and Clang projects for the
last two years.
I've used the LLVM backend for a small personal project last year, and I've sent a couple
of trivial patches to Clang in 2009.
5. Academic, Industry and other experiences:
I'm an undergraduate student of the Computer Science course at the University of Udine, Italy
I've worked a lot with C++ in the last five years, including the development of two complex custom
C++ software systems for a quite big local industry, regarding industrial production and product
In 2009, I've successfully applied to the Google Summer of Code for the KDE project, implementing
KAuth, the authentication and authorization framework used by KDE desktops applications.