Repository navigation
A reliable idiomatic wrapper for the C library igraphs [$400] #446
Description
A reliable idiomatic igraphs wrapper [$400]
The JuliaGraphs/IGraphs.jl package already exists and provides a simple low-level wrapper for the igraph C library. A lot of this work probably will not be directly in the Graphs.jl repository.
- Fast conversion and/or views between Graphs.jl types and the C structures of igraph (slow converters already exist for simple graphs and some vectors/matrices)
- Complete Graph API support for the IGraph types (so that IGraph types can be used in all already existing Graph.jl algorithms that do not peek behind the API)
- use GraphsInterfaceChecker.jl in the test suite
- Dispatch from operations defined in Graphs/GraphsMatching/GraphsOptim to igraph implementation. For instance if there is a pre-existing
Graphs.some_interesting_property(::AbstractGraph)there should now be a new method defined in IGraphssome_interesting_property(g::AbstractGraph, ::IGraphAlgorithm)that dispatches to the C implementation. It should convert thegargument to IGraph if necessary. - If there is an algorithm defined in igraph that does not exist yet in Graphs.jl, it should be declared in Graphs.jl (just a function with docs but no methods), together with an error hint that IGraphs is necessary. Given the large scope of the library, this can be more of a proof-of-concept setup, documenting how to add everything, but not expecting everything to be added for completing the bounty.
- Proper tests and documentation.
- PRs on this topic have to be submitted with clean git histories and well compartmentalized for ease of review.
Required skills: familiarity with the Graphs.jl API and understanding of the Julia-C interface
Reviewer: any Graphs.jl member with merge rights
Duration: 3 months
Payout procedure:
The Funding for these bounties comes from the National Science Foundation and from the NSF Center for Quantum Networks. The payouts are managed by the NumFOCUS foundation and processed in bulk once every two months. If you live in a country in which NumFOCUS can make payments, you can participate in this bounty program.
Click here for more details about the bug bounty program.
Bug bounty logistic details (click to expand)
To claim exclusive time to work on this bounty either post a comment here or message skrastanov@umass.edu with:
- your name
- github username
- (optional) a brief list of previous pertinent projects you have engaged in
If you want to, you can work on this project without making a claim, however claims are encouraged to give you and other contributors peace of mind. Whoever has made a claim takes precedence when solutions are considered.
You can always propose your own funded project, if you would like to contribute something of value that is not yet covered by an official bounty.
Activity
[-]A reliable idiomatic `igraphs` wrapper [$400][/-][+]A reliable idiomatic wrapper for the C library `igraphs` [$400][/+]BenraouaneSoufiane commentedon Aug 1, 2025
BenraouaneSoufiane commentedon Aug 1, 2025
Krastanov commentedon Aug 1, 2025
Krastanov commentedon Aug 1, 2025
BenraouaneSoufiane commentedon Aug 1, 2025
Krastanov commentedon Aug 1, 2025
BenraouaneSoufiane commentedon Aug 1, 2025
BenraouaneSoufiane commentedon Aug 16, 2025
Krastanov commentedon Aug 16, 2025
Krastanov commentedon Sep 12, 2025
BenraouaneSoufiane commentedon Sep 12, 2025
Krastanov commentedon Sep 30, 2025
nenadilic84 commentedon Feb 12, 2026
Hi @Krastanov, I've submitted two PRs to IGraphs.jl addressing the bounty requirements:
PR 1: Complete Graphs.jl AbstractGraph API
edges,outneighbors/inneighbors,add_edge!,add_vertex!,rem_vertex!,copyhas_edgeGraphsInterfaceChecker.jlto the test suite (both mandatory and mutation interfaces pass)PR 2: Add IGraphAlg dispatch for connectivity algorithms
IGraphAlgdispatch forconnected_components,is_connected,articulation,bridgesBoth PRs are self-contained with clean git histories as requested. Happy to iterate based on review feedback.
zhanglin2603 commentedon Feb 12, 2026
lmee commentedon Feb 12, 2026
nenadilic84 commentedon Feb 13, 2026
energypantry commentedon Feb 16, 2026
feat: add igraph algorithm stubs and documentation JuliaGraphs#446
mahmudsudo commentedon Aug 2, 2026
Hi @Krastanov this issue and its pr is becoming stale , can we just round it up ?
singhharsh1708 commentedon Sep 7, 2026
Not a claim, just a heads up that I put one concrete fix up as JuliaGraphs/IGraphs.jl#55, since it is a bug rather than a design question.
Graphs.has_edgehands one-based vertices to the zero-basedget_eid, so onpath_graph(4)it raisesIGraphExceptionfor the real edge 3 to 4, andhas_edge(g, 0, 1)returnstruefor a vertex that does not exist. The current suite does not see it because the answer is accidentally right whenever the two vertices are consecutive, which is every pair in a path graph and in the random regular graphs used intest_consistency.jl.Worth flagging for anyone else working here: the
jet=truelane is red on every pull request in the repository right now, the dependabot ones included, becausetest/test_jet.jlpassestarget_defined_modules = trueand current JET rejects that option while constructing the analyzer, before any package code is read. It is a one line change, and @Krastanov asked for the same update on IGraphs.jl#43 in March.mahmudsudo commentedon Sep 10, 2026
@Krastanov bumping this up again to finish up on the pr
woahwhattheheck commentedon Oct 6, 2026
RanuK12 commentedon Oct 7, 2026