GSoC'21 Project List

Welcome to the projects page for GSoC 2021.

Note:- It is not mandatory for you to choose a project from this list, you are free to propose your project idea too.

Some Important Links

  1. Official documentation
  2. simC wiki
  3. Official discord server

Project 1: simC Web Compiler

You might have used (or heard of) online compilers/interpreters like repl.it and online gdb. These provide compilers or interpreters for various programming languages as a web application, so that users do not have to install anything on their local machine.
Though installing simC is quite easy - pip install simc, but it requires one to have python installed in their system. This is the primary motivation to create a web compiler for simC.

Existing Solution

We have a very simple web compiler for simC ready and hosted in Heroku.

This basic web app uses HTML, CSS, JS and jQuery as front end and Flask as backend. This simply takes the user's source code from a <textarea> element and this code is passed using an AJAX request to the Flask backend, which runs the simC compiler and compiles the code, and returns the C code in the AJAX request as a response.

What we are looking for in the new version?

  1. A better front end (based on Vue.js or React.js - you can choose either technology, whichever you are most comfortable with).
  2. Replace Flask backend with a Node.js backend.
  3. Introduce MongoDB as a database.
  4. Allow users to create accounts and share their codes with one another.
  5. Save user's code in AWS S3 (URI can be saved in DB), so that he/she can come back to their old code.
  6. Create an admin portal, that shows a simple dashboard of weekly user signup and code compiler. This will also contain information about the current version of simC installed in the web compiler, and option to upgrade to later versions of simC.

Note: You are free to add more ideas to this list if you believe it can increase the usability of the web compiler.

Mentors: Dhairya Jain, Farhad Bharucha


Project 2: simC Optimizer and Garbage Collector

If you have a high-level idea of what simC is (if you don't have, then I would suggest getting to know simC a bit in the wiki), you might be wondering where exactly does an optimizer fit in. simC does not run the user's code, then what might be the use of this optimizer? Is this referring to the optimization of simC compiler's code?
Well, this optimizer is for the code generation stage - the compilation to C code. The code that is generated currently is simply what the user writes, and that will run pretty fast as the final code is C code, but we believe that generating more optimized code will result in even faster C code.

What optimizations can be done?

  1. Eliminating functions, variables, structures that are defined but never used.
  2. Unrolling loops
  3. Evaluating constant expressions ahead of compilation.
  4. Making function inline if the number of calls is lower (only one or two calls to the function).

Resources

These are some resources to read more about the code optimization problem in compilers:-

  1. GeeksForGeeks - Code Optimization in Compiler Design
  2. TutorialsPoint - Compiler Design - Code Optimization
  3. Paper - Code Optimization

Note: You are free to add more ideas to this list if you believe it can potentially speed up the resulting C code.

Mentors: Shashank Pandey, Siddhartha Dhar Choudhury


Propose your own project idea

We would also like to state that choosing one out of these two projects is not mandatory and we welcome your project ideas. The following points are required in your project idea:-

  1. Overview of the idea.
  2. How does it improve simC?
  3. How do you plan to implement the project?
  4. Tech stack.
  5. Any resource that might help us to understand the intricacies of the project idea.