Skip to content

GSoC 2026 Ideas

Ondřej Čertík edited this page Mar 25, 2026 · 11 revisions

LFortran is participating again in GSoC 2026 under the Fortran-lang organizations.

Below we list developed project ideas listed by priority. The "High Priority" section contains projects that we are especially interested in, as they lie on the critical path to call LFortran Beta.

However, feel free to propose any project idea that you like to improve LFortran, for example by browsing open issues:

https://github.com/lfortran/lfortran/issues

If you are interested in applying, please get in touch with us at either our Zulip chat or our mailinglist:

We will help answer questions and help with finding and refining a project idea. You do not need to have a prior experience with compilers, we will teach you. It is fun. LFortran is written in C++, but we do not use many advanced features and if you have any programming experience you will be able to pick it up.

Here are a few projects for inspiration. You are welcome to propose your own idea.

Mentors

Potential mentors:

  • Ondřej Čertík
  • Pranav Goswami
  • Harshita Kalani
  • Assem Medhat
  • Jinang

High Priority

Compile any Fortran code

The primary goal is to compile as many codes as possible. We have identified and listed those at label:code-to-be-compiled.

This project aims to pick up a code and get it compiled to ASR, then to LLVM, binary and assure that values align with GFortran (or other Fortran compilers). We can have several of these projects at the same time.

Expected outcomes: LFortran can compile chosen code.

Skills preferred: Fortran and C++ programming

Difficulty: intermediate/hard, 350 hours

Mentors - Pranav Goswami, Assem Medhat, Harshita Kalani

Compile Fiats using LFortran

Currently LFortran compiles 5% of Fiats. Fiats: Functional inference and training for surrogates. It is a deep learning library for use in high-performance computing applications in modern Fortran.

Expected outcomes: LFortran can compile Fiats code.

Skills preferred: Fortran and C++ programming

Difficulty: intermediate/hard, 350 hours

Mentors - Pranav Goswami, Assem Medhat, Harshita Kalani

Compile neural-fortran using LFortran

Currently LFortran compiles 14% of neural-fortran. It is a parallel framework for deep learning.

Expected outcomes: LFortran can compile neural-fortran code.

Skills preferred: Fortran and C++ programming

Difficulty: intermediate/hard, 350 hours

Mentors - Pranav Goswami, Harshita Kalani

Compile benchmarking code written in Fortran with LFortran and improving LFortran's performance on these benchmarks

https://benchmarksgame-team.pages.debian.net/benchmarksgame/fastest/fortran.html contains all the benchmark codes written for various problems such as n-body, sepctral norm, mandelbrot. The workflow would involve first doing bug fixes to compile the code (modifying the input code would be okay) with LFortran and producing correct outputs. Then, improving LFortran to perform better or equivalent to other Fortran compilers such as GFortran.

n-body already compiles with workarounds with LFortran main. See, https://github.com/lfortran/lfortran/pull/1213. More work needs to be done for other benchmark codes.

Expected outcomes: LFortran can compile as many benchmark codes as possible. Performing better than other compilers would be an additional plus.

Skills preferred: Fortran and C++ programming

Difficulty: intermediate/hard, 350 hours

Mentors - Ondřej Čertík, Harshita Kalani

Allow running Fortran in the browser

We have LFortran running in the browser using WASM here: https://dev.lfortran.org/, the goal of this project would be to improve the user interface. Here is a list of issues that the project can work on fixing: https://github.com/lfortran/lcompilers_frontend/issues

This project would entail working with LFortran, LLVM, Emscripten, and Webassembly to allow running Fortran in the browser.

Skills preferred: Fortran and C++ programming

Difficulty: intermediate, 350 hours

Mentors - Ondřej Čertík, Assem Medhat

Other High Priority Ideas

Difficulty: intermediate, 350 hours

Mentors: Ondřej Čertík (@certik)

Implementation of features on the ASR and LLVM level

The roadmap https://gitlab.com/lfortran/lfortran/-/issues/272 issue contains a list of Fortran features that we want implemented. Each feature should be implemented at the ASR level and in the LLVM backend to be complete. If AST is missing for a given feature, then it has to be implemented also.

Here you can pick a feature or a set of features from the list and propose it as a GSoC project. In other words, this project idea can accommodate multiple student projects.

List of resources for more information and background:

If you have any questions, please do not hesitate to ask, we can discuss or provide more details.

Mentors: Ondrej Certik (@certik), Harshita Kalani

Medium Priority

Implement C API for generating LLVM & WASM code

Setup a C API to replace LLVM C APIs that generates equivalent LLVM code and later can be expanded to WASM by taking the final ASR as the input.

Expected outcomes: A C API used in LLVM backend of LFortran.

Difficulty: intermediate, 350 hours

Mentors: Ondřej Čertík (@certik), Assem Medhat

Enhance Fortran Backend

LFortran has fortran as one of its primary backend. The goal is to get the Fortran backend working with all Fortran code and third party packages.

Expected outcomes: Every code LFortran compiles should compile with --show-fortran

Difficulty: intermediate, 350 hours

Mentors: Pranav Goswami, Harshita Kalani

Language Server Enhancements for LFortran

As part of the STF grant, we have implemented an initial Language Server for LFortran. However, several key improvements and additional functionalities are still required to enhance its capabilities. The majority of the implementation resides in the lfortran-lsp repository and in LFortran itself.

This project aims to:

  • Address the remaining tasks outlined in Issue #6.
  • Implement additional functionalities to improve the efficiency and usability of the Language Server.
  • Enhance the overall robustness and feature set to better support Fortran development environments.

Expected Outcomes

By the end of this project, the Language Server should:

  • Provide a more comprehensive and reliable development experience for Fortran users.
  • Support additional features that align with modern language server protocols.
  • Improve performance, error handling, and integration with various editors.

Expected outcomes: LFortran can be used as a Fortran language server that can be used in other software such as source code editors and IDEs.

Skills preferred: Fortran and C++ programming

Difficulty: intermediate, 350 hours

Mentors: Ondřej Čertík (@certik), Pranav Goswami

Improving Performance by Enhancing --fast Optimization

As we progress towards the beta release of LFortran, we aim to ensure that the --fast optimization flag is enabled and effective for every code and example we compile. Additionally, we seek to brainstorm and design new optimization passes to further improve performance.

The primary objectives of this project are:

  • Ensure compatibility: Get all integration tests and third-party tests compiled with the --fast flag.
  • Enhance performance: Investigate and implement optimizations that improve execution speed.
  • Explore additional optimizations (if time permits): Design and prototype more optimization passes for LFortran.

By the end of this project, LFortran should:

  • Successfully compile and run a broad set of test cases with --fast enabled.
  • Demonstrate improved compilation and execution performance.
  • Have an initial design or implementation for additional optimization passes.

This project is ideal for contributors interested in compiler performance, code optimization, and high-performance computing (HPC). 🚀

Skills preferred: Fortran and C++ programming

Difficulty: intermediate, 350 hours

Mentors: Ondřej Čertík (@certik), Pranav Goswami, Harshita Kalani

Enhancing LLVM Debugging Support with -g Option

LFortran has an initial implementation for debugging LLVM-generated code using the -g option. However, there are existing bugs and missing functionalities that need to be addressed to make debugging more reliable and fully functional.

This project aims to:

  • Fix existing bugs in the -g debugging support.
  • Ensure compatibility by enabling -g across all compiled codes.
  • Improve debugging features to enhance the developer experience.

Skills preferred: Fortran and C++ programming

Difficulty: intermediate, 350 hours

Mentors: Ondřej Čertík (@certik), Assem Medhat

Enhancing MLIR Backend for LFortran

LFortran has recently introduced an MLIR backend, but it is currently in its early stages with limited functionality. To fully leverage MLIR’s capabilities, we aim to expand its feature set and ensure broader test coverage.

This project aims to:

  • Enhance the existing MLIR backend by implementing additional features.
  • Ensure compatibility by supporting all existing LFortran tests with the MLIR backend.
  • Improve the robustness and efficiency of the MLIR-based code generation.

By the end of this project, LFortran should:

  • Have a more feature-complete MLIR backend.
  • Pass all existing test cases using MLIR.
  • Improve compiler modularity and support MLIR transformations for optimization.

Skills preferred: Fortran, MLIR and C++ programming

Difficulty: intermediate, 350 hours

Mentors: Ondřej Čertík (@certik)

Improve x86 code generation

LFortran has a very fast x86 code generation backend implemented in asr_to_x86.cpp which allows very fast compiling (many times faster than going via LLVM). The x86 backend does not do any optimizations, so it is meant to be used in Debug mode only. As every backend in LFortran, the backend receives the code as ASR, and it recursively walks over each ASR node and generates x86 machine code.

The purpose of this project would be to extend this backend to cover more Fortran features.

If you have any questions, please do not hesitate to ask, we can discuss or provide more details.

Mentors: Ondrej Certik (@certik)

Low Priority

Automatic Fortran to Python wrapping

Add a backend to LFortran that automatically exposes (eventually all) Fortran module contents to Python. Similar to how f2py works, but using a robust production level parser and semantic analysis from LFortran.

Related issues:

Mentors: Ondrej Certik (@certik), Harshita Kalani

Finish the automatic formatter (lfortran fmt)

Here is a list of issues that should be fixed in order to make automatic formatting via lfortran fmt more useful: https://gitlab.com/lfortran/lfortran/-/milestones/2. This project could work on fixing those and implement other improvements in order for lfortran fmt to work on some projects such as stdlib.

Mentors: Ondrej Certik (@certik),

Allow to use gfortran compiled module files

There is a prototype parser for gfortran module files here: https://gitlab.com/lfortran/lfortran.py/-/blob/7a3b356122174d291562a5c47f0d2c9dc3b183da/lfortran/adapters/gfortran/mod.py. Port it to C++ and the current LFortran, and then allow such modules to be "used" in LFortran.

Related issues:

  • lfortran#52: Allow to "use" modules compiled by gfortran

Mentors: Ondrej Certik (@certik),

Roundtrip Parser

Modify the LFortran parser as a roundtrip parser, which can recreate the original source code by fully capturing formatting data (case-sensitive variable names, whitespace, comments, etc.) alongside the syntactically essential content. For performance reasons this mode might need to be optional.

Mentors: Ondrej Certik (@certik),

Clone this wiki locally