GSoC 2026 Intro - Rishabh Singh | Error messages with configuration context

Hey preCICE team and community!

I know I’m a bit late to the party :sweat_smile:, and I read the pinned note about how you guys made it to the top of the GSoC list this year. Since I’ve already spent a massive chunk of time deep-diving into your XML parsing architecture, I figured I’d shoot my shot anyway—who knows, maybe I’ll accidentally get selected too!

I’m Rishabh Singh, a student and a game developer. For the past while, I’ve been building and optimizing a massive voxel-style mobile game called Crown BarrageGitHub - RishabhSinghMoonCake/Crown-Barrage: Crown Barrage android / ios game repo · GitHub give it a try if you like, its available on google play store. Wrangling complex architectures and hunting down obscure logic bugs is basically my day-to-day.

I am completely hooked on the “Error messages with configuration context” project. I’ve already mapped out the pipeline to solve it: extracting the line and column numbers using libxml2 during the ConfigParser phase, threading that location state into CTag and XMLTag, and ultimately injecting it into the PRECICE_ERROR and PRECICE_CHECK macros. The goal is to get those beautiful, compiler-style visual errors popping up in the terminal!

I totally understand that the team is dealing with a huge activity right now. If I get to contribute, I promise to be as low-friction as possible—clean code, well-documented PRs, and zero pressure on review times.

Super excited to be here and learn from you all!

Cheers,

Rishabh

1 Like

What motivates you spend this summer in GSoC instead of doing anything else?

→ I want to get significantly better at working with real-world codebases—especially reading, understanding, and improving code written by others. That’s a skill I don’t fully develop when working only on my own projects.

At the same time, I genuinely enjoy building things, so GSoC is the perfect combination of both: solving real problems in an active project while learning how experienced contributors structure and evolve complex systems.

What interests you most about our project?

→ The fact that my contribution will matter to the community because its not just a random feature it will be improving the developer experience by a lot, so it’s an impactful project both for precice community and my own portfolio.

Will you have any other commitments (e.g., work or study) while working on the project?

→ No major ones, I’m intentionally keeping this period clear so I can focus properly. I might continue light work on my personal projects in free time, but GSoC will be my main priority.

What previous experience do you have with the respective technologies?

Most of my experience comes from building and maintaining a fairly complex mobile games which are in production in play store.

These involved:

  • Designing and debugging trivial and non-trivial systems

  • Working with structured data and custom pipelines

  • Optimizing performance under constraints

  • Chasing down weird, hard-to-reproduce bugs (a lot of them :sweat_smile:)

While the exact stack may differ, the core skills—reading unfamiliar code, reasoning about systems, and implementing clean solutions—translate directly. I also have good in depth knowledge of cpp from leetcode(around 200 problems) all in cpp, and again game dev in unreal engine.

What previous experience with Git and GitHub do you have, if any?

→I use Git daily.

  • Managing my own projects end-to-end

  • Writing meaningful commits (not just “fix stuff”)

  • Handling branches, merges, and rebases

I’m comfortable collaborating through GitHub workflows and open to adapting to any project-specific conventions.

thanks :raising_hands:!

I got a bit delayed due to a health issues but since past few weeks I have been deep into precice repo reading through code related to Error messages and that’s when i noticed few issues with decodeXML function and i thought that was worth to be raised - ISSUE #2529

I noticed the current implementation relies on a while (true) loop with repeated std::string::find + replace calls. This creates two problems:

  • Performance: since replace shifts the remaining string each time, the overall behavior degrades to ~O(N²) for inputs with multiple entities

  • Incorrect recursive decoding Edge Case: cases like &amp;lt; get decoded twice (&amp;lt; → &lt; → <), whereas standard XML parsing should stop at &lt;

To explore this, I tried a single-pass linear approach (O(N)), where:

  • I iterate once over the string

  • Build the result using a pre-reserved buffer

  • Resolve entities without reprocessing already-decoded segments

I’ve pushed a working version here (since PRs are paused at the moment):
https://github.com/RishabhSinghMoonCake/precice/tree/fix-decodeXML-time-complexity

In this I’ve also added few extra tests to validate my process :slight_smile:

Would really appreciate feedback on whether this direction aligns with how you’d like to handle XML decoding in preCICE, thanks!

Currently, I have been able to figure out the pipeline through which line, column, and filecontent will flow and then formatted as compiler style errors, I have been successful in implementing a minimal viable solution that does the same for line and column, in this example I have removed <data:scalar name=“Pressure” /> from precice-config.xml inside elastic-tube-1d tutorial from entry test→

and this is the the error that it prints.

You can notice that it correctly captures line and column of the error → with more work we can definitely achieve those compiler style errors which we are aiming for.

I will be including the explanation of the whole pipeline and architecture flow in my gsoc proposal.