GSoC project ideas

Hello,

I'm currently trying to define a project proposal for the Google Summer
of Code. I'm looking for a project that will be at the same time
valuable to Clang and appealing to me. I am mainly interested by the
tooling infrastructure (enhancements to LibClang, LibTooling or work in
extra/).

After some digging, I have found various options that I would like to
discuss with the community in order to find the best match in terms of
usefulness and "fitability" (~12 weeks).

-- Modules --

I stumbled upon the modularize project (in extra/) and the Module.rst
document. The section "Future Directions" caught my attention.
Available here: http://clang.llvm.org/docs/Modules.html#future-directions

**Improve modularize** interests me but I'm not sure what "better UI"
and "assistant mode" imply. If it's about writing a GUI application I am
not sure it is what I'm looking for the GSoC but maybe it's about
enhanced program options, configuration files and an interactive mode? I
don't know yet how convoluted can be the detection of problems. Might-it
be a fit for the GSoC itself?

I'm also interested by **Detect unused module imports** and **Fix-Its
for missing imports** which I think can fit together under the same
project.

For the **C++ Support**, this is really unclear to me today what are the
implications of such project. What needs to be done and how.

-- Doxygen like tool --

The open Clang projects page has an entry: "Implement a tool to generate
code documentation". I have the feeling that everything that is needed
is already available in the LibClang comment API. What is left is mainly
the generation of the website (or similar). If I am not mistaken then I
am too interested by this project for the GSoC.

-- cpp11-migrate --

I saw this project in extra/ that I find interesting. One idea of
improvement I read is "add the passing by value when move constructor is
available on the stored type".

And some other ideas are also available here:
http://clang.llvm.org/docs/ClangTools.html#ideas-for-new-tools

Such as:
- Convert member functions begin()/end() to their non-member counterpart.
- Replace tr1 by the C++11 version (drop tr1 namespace and tr1/
  include prefix for example).

-- Compilation Database --

I saw a few times on the mailing list the idea of adding an option to
Clang to generate a compile_commands.json. I think only CMake and Ninja
offer such support for now. Clang is supported by more build systems,
having this option could increase the number of projects
"Tooling-friendly". The implementation will have to deal with parallel
compilation jobs but I don't think it's too difficult. Alone this task
is certainly too short for the GSoC.

To finish a few words about me. I'm Guillaume Papin, French student (but
actually doing the 1st year of my Master in Sweden). I chose Clang for
the GSoC because it's a project I follow for some time now (since 2011).
I regularly check the mailing list and I'm in love with the code base
who is very clean IMHO (not only Clang but more generally LLVM). I'm
working on an Emacs package that provides C/C++ completion using
LibClang (still needs a lot of work): https://github.com/Sarcasm/irony-mode.

Thank you.

Are you interested in improving C++ code completion? QtCreator clang plugin revealed ~12 issues in this area. Fixing it probably will be enough for GSoC. On the on hand, I have no idea where you can find mentor for this project. On the other hand, I can provide additional information for each bug when needed. I hope you will find some feature requests collected in other clang-based plugins. Maybe Dmitri Gribenko can tell about situation with vim-complete.

http://qt-project.org/wiki/clang-bugs-at-wip-clang-branch
http://llvm.org/bugs/buglist.cgi?quicksearch=completion&list_id=36503

If you want to make some patches before GSOC, check this: http://llvm.org/bugs/show_bug.cgi?id=15660
The most annoying bug is: http://llvm.org/bugs/show_bug.cgi?id=15745 (it can take much time to fix)

13.04.2013 07:02, Guillaume Papin пишет:

It works, but I never had time to fix the reviewers' comments :frowning:

Dmitri

Yes, it will be an interesting project for me to work on C++ code
completion. Finding a mentor is something I'm already unsure
with the current project ideas I exposed but this is something
that need to be discussed here I guess (I don't remember
having seen a list of available mentors).

Thank you for the links provided. I might have some of my
own feature requests as well on my computer (such as
"goto completion of labels" which isn't performed IIRC).

Hey Guillaume,

Being a new project, cpp11-migrate has a ton of things to work on. We've been trying to log bugs in bugzilla as well as our internal JIRA but I'm afraid most of our ideas for improvements to cpp11-migrate are in our internal JIRA instance only. You saw a few new transforms listed already: tr1 removal and making use of existing move constructors. Also planned is a transform to replace use of the deprecated auto_ptr class with unique_ptr. You might find today's LLVM blog posting on the migrator interesting too: http://blog.llvm.org/2013/04/status-of-c11-migrator.html.

There are a few bugs available too:

http://llvm.org/bugs/buglist.cgi?query_format=specific&order=relevance+desc&bug_status=open&product=clang-tools-extra&content=

If you're keen on learning and using the new features in C++11 or are interested learning the C++ language at the level of the specification your help would be most welcome.

Hello,

I'm currently trying to define a project proposal for the Google Summer
of Code. I'm looking for a project that will be at the same time
valuable to Clang and appealing to me. I am mainly interested by the
tooling infrastructure (enhancements to LibClang, LibTooling or work in
extra/).

After some digging, I have found various options that I would like to
discuss with the community in order to find the best match in terms of
usefulness and "fitability" (~12 weeks).

-- Modules --

I stumbled upon the modularize project (in extra/) and the Module.rst
document. The section "Future Directions" caught my attention.
Available here: http://clang.llvm.org/docs/Modules.html#future-directions

**Improve modularize** interests me but I'm not sure what "better UI"
and "assistant mode" imply. If it's about writing a GUI application I am
not sure it is what I'm looking for the GSoC but maybe it's about
enhanced program options, configuration files and an interactive mode? I
don't know yet how convoluted can be the detection of problems. Might-it
be a fit for the GSoC itself?

I'm also interested by **Detect unused module imports** and **Fix-Its
for missing imports** which I think can fit together under the same
project.

For the **C++ Support**, this is really unclear to me today what are the
implications of such project. What needs to be done and how.

I'd actually recommend against the various modules-related projects. There's enough experimental stuff in the modules realm, along with very rough corners, that it might be hard to make progress on such a GSoC project.

-- Doxygen like tool --

The open Clang projects page has an entry: "Implement a tool to generate
code documentation". I have the feeling that everything that is needed
is already available in the LibClang comment API. What is left is mainly
the generation of the website (or similar). If I am not mistaken then I
am too interested by this project for the GSoC.

Yes, most of the work here is in generating the XML/HTML/whatever.

  - Doug

Are you interested in improving C++ code completion? QtCreator clang plugin revealed ~12 issues in this area. Fixing it probably will be enough for GSoC.

Improving C++ code completion would be a great GSoC project. There's a ton of low-hanging fruit there.

  - Doug