GSoC 2026 Week 4 Report: Implementation of Make Biconnected Planar and Make Maximal Planar Algorithm to pgRouting

Mohit Rawat
Github id: Mohit242-bit

Mentors: @cvvergara, @robe
Organization: OSGeo / pgRouting
OSGeo Profile: OSGeo Profile Link
Project Wiki: Github Wiki Link
Repository: Repo Link

This is my fourth weekly report of Official coding period for GSoC 2026

Week 4 Report (15th June - 21st June)

What did I get done this week?

This week focused entirely on completing the implementation and testing of the disconnected components logic for the planar algorithms, as well as heavily refining the project architecture.

  • Implemented Disconnected Graph Support: Successfully implemented pgr_makeMaximalPlanar and pgr_makeBiconnectedPlanar for disconnected component inputs using a multi-component bucket architecture without dropping graph accuracy.

  • Architectural Cleanup: Maintained the core pgRouting 3-layer architecture by removing outdated redundant validation checks that blocked disconnected graphs, and enforcing the mutable planar_visitor pattern for accurate edge traversal.

  • Memory Safety & Robustness: Extensively handled edge cases, memory bounds, and vertex indices mapping between Boost components and pgRouting components.

  • Comprehensive pgTAP Tests: Wrote and executed a full suite of pgTAP tests (including types_check.pg, inner_query.pg, no_crash_test.pg, and edge_cases.pg) for both algorithms. Tested memory crashes and input data issues. All 71+ tests pass successfully.

  • Documentation & Standardisation: Wrote documentation of algorithms with proper syntax.

What do I plan on doing next week? (June 22nd- June 28th)

  • Discuss on the official .rst documentation and C++ docqueries for both pgr_makeBiconnectedPlanar and pgr_makeMaximalPlanar so they are fully ready for the official release.

  • Present my completed work to the mentors, gather feedback on the disconnected components architecture, and implement any performance optimizations requested.

Am I blocked on anything?

No

References:

1] Link to detailed wiki page

2] Link to github repository

3] Link to pull requests : [1] and [2]