Google Summer Of Code

Thanks for your interest in the GNU Compiler Collection as your mentoring organization in Google's Summer of Code (GSoC).

In 2018, GCC has applied independently to be a GSoC mentoring organization. The primary org-admin is Martin Jambor. In the past, GCC has also applied under the umbrella of GNU project mentoring organization.

If you are a student with a project idea or want to work on any of the ideas below, please discuss it as soon as possible (way before the application) via the mailing list or via IRC. For general (non-GCC specific) questions about GSoC, the relevant mailing list is https://lists.gnu.org/mailman/listinfo/summer-of-code

The GCC is owned by the Free Software Foundation (FSF), as such, all contributors must assign their copyright to the FSF before any of their changes are accepted. The copyright assignment process is described in Contributing to GCC. See also GettingStarted.

Project Ideas

Selected project ideas (2018)

When discussing GSoC project ideas for 2018 in the community, we have found out we are especially interested in the following few. One of their main advantages, apart from their particular relevance and usefulness this year, is that we already have mentors for them. That does not mean we will not consider other projects, definitely feel free to look also at and we will be also happy to discuss with us ideas of your own. Nevertheless, please do especially consider applying for the following:

Note that some of the ideas found below might be fully or partially obsolete. Additionally, projects not listed here are also welcome. Thus, it is recommended to discuss the project of interest on the mailing list or via IRC before submitting a GSoC proposal.

GCC Improvement Projects

There are several pages with general ideas for GCC, many of which we linked below for easy access. These ideas usually are not just one project but a group of distinct projects.

Link-time optimization is relatively new infrastructure in GCC and there are many areas how to make it better. (Jan Hubicka, 2015)

New optimization passes

Language front-ends and run-time libraries

Improving GCC Developer Documentation

The rules of the GSoC program does not allow projects to consist of documentation improvements only. Nevertheless, note that writing documentation may be an important part of your project or even an essential one if you introduce user-visible changes and plan your work accordingly.

Other projects

If you are interested in learning your way around the GCC codebase, the Partial_Transitions is a good place to start.

Other project ideas can be found in the bug database. Look for old bugs which are still open.

Or invent your own project. We're always open to good ideas. But note that we are probably not too interested in projects to add new extensions to the C or C++ languages. We've found over time that these tend to introduce more problems than they solve.

Thanks, and we look forward to your submissions!

Before you apply

...and perhaps before you even reach out to us on the mailing list, make sure you can check out the GCC trunk source code, can build GCC from it, run the testsuite, save results from a testsuite run, build and run the testsuite and compare the results of the two runs (this is something that would need doing very many times in the course of any project working on GCC).

The following links should help you:

And while you are at it, also have a look at the source. But if you have done all of the above and still find it a little bit intimidating or if you have difficulties figuring out where to start looking for particular things, do not despair. That is something the mentors and the community at large are willing to help you with.

Application

Students applying for a GCC Google Summer of Code project need to have experience coding in C/C++ and should have at least some theoretical background in the area of compilers and compiler optimizations.

First, you need to select a project. If you have been following GCC development, you might have an idea of your own, otherwise look into the idea section above and try to pick an idea there. In the course of selecting a project, do not hesitate to ask questions or request more details from the community by email to the gcc@gcc.gnu.org mailing list with the string "GSoC" in the email subject or on our #gcc IRC channel at irc.oftc.net. Please note that the mailing list does not accept HTML messages, you must set your email client to plain text. We also encourage you to browse through our web site at https://gcc.gnu.org/ and of course this wiki.

After you believe you have selected and/or refined the project idea, please make sure you send us an email about your intention to apply to the gcc@gcc.gnu.org mailing list with the string "GSoC" in the email subject, in addition to any general required steps to apply to the GSoC program.

Last but not least, the GCC is owned by the Free Software Foundation (FSF), as such, all contributors must assign their copyright to the FSF before any of their changes are accepted. The copyright assignment process is described on pages:

Further tips and guidelines

Accepted GCC Projects

2016

Project

Student

Mentor

Replace libiberty with gnulib (project page)

Ayush Goel

Manuel Lopez-Ibanez

Development of GIMPLE Front End

Prasad Ghangal

Richard Biener

Further work on addressing mode selection

erikvarga

Oleg Endo

2015

Project

Student

Mentor

C++ Library Fundamentals: shared_ptr and polymorphic memory resources

Fan You

Tim Shen

Addressing mode selection in GCC

Erik Krisztian Varga

Oleg Endo

2014

Project

Student

Mentor

Coarray support in GNU GFortran

Alessandro Fanfarillo

Tobias Burnus

Concepts Separate Checking

Braden Obrzut

Andrew Sutton

Integration of ISL code generator into Graphite

Roman Gareev

Tobias Grosser

Generating folding patterns from meta description

Prathamesh Kulkarni

Richard Biener

GCC Go escape analysis

Ray Li

Ian Lance Taylor

2013

Project

Student

Mentor

Porting the GCC go language frontend on the GNU/HURD kernel

Fotis Koutoulakis

Thomas Schwinge

Optimizing large applications with LTO

Martin Liška

Jan Hubicka

Completing C++11 regex

Tim Shen

Stephen M. Webb

2012

Project

Student

Mentor

Continue work on GCC generic optimisation and cleanup

Dimitrios Apostolou

Andrey Belevantsev

Implement regular expressions to C++

Morgen Matvey

Benjamin De Kosnik

Gimple FE : Extending the text gimple recognizer to a real front end

Sandeep Soni

Diego Novillo

C++11 regex support in libstdc++

Sergey Lega

Benjamin De Kosnik

2011

Project

Student

Mentor

Extend GFortran's Coarray support with MPI-based paralellization (project page)

Daniel Carrera

Tobias Burnus

GCC Optimisation Final Report, Various Notes: (1) (2) (3)

Dimitrios Apostolou

Steven Bosscher

Integration of transactional memory support into a data-flow extension of OpenMP

Ismail KURU

Richard Henderson

Developement of Gimple Front End (project page)

Ketaki

Diego Novillo

Gccpy - GCC Python Front-end (project page)

Philip Herron

Ian Lance Taylor

Customizable warnings with a GCC plugin (project page)

Piervit

Basile Starynkevitch

Implement faster OpenMP Task for libgomp

Sho Nakatani (中谷 翔)

Jakub Jelínek

2010

The source code for finished projects can be found at Google's code hosting site and their respective SVN branches.

Project

Student

Mentor

EFI extension of Binutils

Yi-Hong Lu

H. J. Lu

Development of GIMPLE FE

Sandeep Soni

Diego Novillo

Improvement of general vector extension in GCC

Artjoms Sinkarovs

Richard Günther

Partial Implementation of Python as a GCC Front-end

Philip Herron

Ian Taylor

Improving the static control part detection mechanism in Graphite

Vladimir Kargov

Sebastian Pop

Traditional loop transformations in GRAPHITE

Ankur Deshwal

David Edelsohn

ScopLib support for Graphite - Linking Graphite to the huge industrial and research community

Riyadh Baghdadi

Sebastian Pop

Porting GRAPHITE to CLooG trunk

Andreas Simbuerger

Tobias Grosser

gfortran: Polymorphism and a complete OOP implementation

Janus Weil

Tobias Burnus

Extending Fortran 2003 and 2008 support for gfortran (esp. Co-Arrays)

Daniel Kraft

Tobias Burnus

2009

Project

Student

Mentor

Automatic parallelization in Graphite

Li Feng

Tobias Grosser

Enable generic function cloning and program instrumentation in GCC to be able to create static binaries adaptable to varying program and system behavior or different architectures at run-time

Liang Peng

Grigori Fursin

gfortran: Procedure Pointer Components & OOP

Janus Weil

Tobias Burnus

Traditional Loop Transformations

pranav garg

Sebastian Pop

Make the OpenCL Platform Layer API and Runtime API for the Cell Processor and CPUs

phil prattszeliga

Paolo Bonzini

Provide fine-grain optimization selection and tuning abilities in GCC to be able to tune default optimization heuristic of the compiler or fine optimizations for a given program on a given architecture entirely automatically using statistical and machine learning techniques from the MILEPOST project.

Yuanjie Huang

Grigori Fursin

2008

Project

Student

Mentor

GCC Improvements on Windows

Aaron W. LaFramboise

Steven Bosscher

Improving Dead Store Elimination

Jakub Staszak

Daniel Berlin

Extend Fortran 2003 support for gfortran

Daniel Kraft

François-Xavier Coudert

C++0x lambda functions for GCC

John Freeman

Douglas Gregor

Improved GIMPLE to GRAPHITE transformation

Tobias Grosser

Sebastian Pop

Finish work on propagation aliasing and array dependence information from Tree-SSA to RTL.

Alexander Monakov

Diego Novillo

Procedure Pointers for gfortran

Janus Weil

Tobias Burnus

2007

Project

Student

Mentor

Propagating array data dependence information from Tree-SSA to RTL

Alexander Monakov

Daniel Berlin

Better_Uninitialized_Warnings

Manuel López-Ibáñez

Diego Novillo

Speeding up GCC for fun and profit

James Webber

Eric Marshall Christopher

Fortran 2003 features for GCC

Janus Weil

Steven Bosscher

Open Mutliprogramming Interprocedural Analasis and Optimalizations

Jakub Staszak

Daniel Berlin

Integrating OpenJDK's javac bytecode compiler into gcj

Dalibor Topic

Mark J. Wielaard

New static scheduling heuristic for GCC

Dmitry Zhurikhin

Vladimir Makarov

GCC support for Windows-compatible Structured Exception Handling (SEH) on the i386 platform

Michele Cicciotti

Ian Lance Taylor

2006

Project

Student

Mentor

Code parallelization using polyhedral model

Plesco Alexandru

Daniel Berlin

Escape_analysis

Paul Biggar

Daniel Berlin

Garbage_collection_tuning

Laurynas Biveinis

Daniel Berlin

java.lang.management in Classpath

Andrew John Hughes

Mark Wielaard

Lock free C++ containers

Phillip Jordan

Benjamin Kosnik

Wcoercion option

Manuel López-Ibáñez

Ian Lance Taylor

None: SummerOfCode (last edited 2018-03-15 11:17:20 by MartinJambor)