Skip to content

A reliable idiomatic wrapper for the C library igraphs [$400] #446

Description

@Krastanov

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 IGraphs some_interesting_property(g::AbstractGraph, ::IGraphAlgorithm) that dispatches to the C implementation. It should convert the g argument 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

  1. changed the title [-]A reliable idiomatic `igraphs` wrapper [$400][/-] [+]A reliable idiomatic wrapper for the C library `igraphs` [$400][/+] on Jul 24, 2025
  2. added
    bountyThere is an award for solving this issue.
    on Jul 29, 2025
  3. BenraouaneSoufiane commented on Aug 1, 2025

    @BenraouaneSoufiane
  4. BenraouaneSoufiane commented on Aug 1, 2025

    @BenraouaneSoufiane
  5. Krastanov commented on Aug 1, 2025

    @Krastanov
    Author
  6. Krastanov commented on Aug 1, 2025

    @Krastanov
    Author
  7. BenraouaneSoufiane commented on Aug 1, 2025

    @BenraouaneSoufiane
  8. Krastanov commented on Aug 1, 2025

    @Krastanov
    Author
  9. BenraouaneSoufiane commented on Aug 1, 2025

    @BenraouaneSoufiane
  10. BenraouaneSoufiane commented on Aug 16, 2025

    @BenraouaneSoufiane
  11. Krastanov commented on Aug 16, 2025

    @Krastanov
    Author
  12. Krastanov commented on Sep 12, 2025

    @Krastanov
    Author
  13. BenraouaneSoufiane commented on Sep 12, 2025

    @BenraouaneSoufiane
  14. Krastanov commented on Sep 30, 2025

    @Krastanov
    Author
  15. nenadilic84 commented on Feb 12, 2026

    @nenadilic84

    Hi @Krastanov, I've submitted two PRs to IGraphs.jl addressing the bounty requirements:

    PR 1: Complete Graphs.jl AbstractGraph API

    • Implements edges, outneighbors/inneighbors, add_edge!, add_vertex!, rem_vertex!, copy
    • Fixes a 0-indexing bug in has_edge
    • Adds GraphsInterfaceChecker.jl to the test suite (both mandatory and mutation interfaces pass)
    • 305 tests pass (up from 267)

    PR 2: Add IGraphAlg dispatch for connectivity algorithms

    • Adds IGraphAlg dispatch for connected_components, is_connected, articulation, bridges
    • Output matches Graphs.jl conventions
    • All tested against reference implementations

    Both PRs are self-contained with clean git histories as requested. Happy to iterate based on review feedback.

  16. zhanglin2603 commented on Feb 12, 2026

    @zhanglin2603
  17. lmee commented on Feb 12, 2026

    @lmee
  18. nenadilic84 commented on Feb 13, 2026

    @nenadilic84
  19. energypantry commented on Feb 16, 2026

    @energypantry
  20. mahmudsudo commented on Aug 2, 2026

    @mahmudsudo

    Hi @Krastanov this issue and its pr is becoming stale , can we just round it up ?

  21. singhharsh1708 commented on Sep 7, 2026

    @singhharsh1708

    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_edge hands one-based vertices to the zero-based get_eid, so on path_graph(4) it raises IGraphException for the real edge 3 to 4, and has_edge(g, 0, 1) returns true for 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 in test_consistency.jl.

    Worth flagging for anyone else working here: the jet=true lane is red on every pull request in the repository right now, the dependabot ones included, because test/test_jet.jl passes target_defined_modules = true and 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.

  22. mahmudsudo commented on Sep 10, 2026

    @mahmudsudo

    @Krastanov bumping this up again to finish up on the pr

  23. woahwhattheheck commented on Oct 6, 2026

    @woahwhattheheck
  24. RanuK12 commented on Oct 7, 2026

    @RanuK12
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bountyThere is an award for solving this issue.bounty:400

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions