News

We follow SemVer as most of the Julia ecosystem. Below you might see the "breaking" label even for minor version bumps – we use it a bit more loosely to denote things that are not breaking by SemVer's definition but might cause breakage to people using internal or experimental APIs or undocumented implementation details.

v1.14.0 - 2026-02-26

  • (breaking) neighbors, inneighbors, and outneighbors now return an immutable FrozenVector instead of Vector
  • Louvain community detection algorithm
  • Graph views: ReverseView and UndirectedView for directed graphs
  • New graph products: strong_product, disjunctive_product, lexicographic_product, homomorphic_product
  • maximum_clique, clique_number, maximal_independent_sets, maximum_independent_set, independence_number
  • regular_tree generator
  • kruskal_mst now accepts weight vectors
  • is_planar planarity test and planar_maximally_filtered_graph (PMFG) algorithm
  • count_connected_components for efficiently counting connected components without materializing them
  • connected_components! is now exported and accepts an optional search_queue argument to reduce allocations
  • is_connected optimized to avoid allocating component vectors

v1.13.0 - 2025-06-05

  • (breaking) Julia v1.10 (LTS) minimum version requirement
  • Non-allocating enumerate_paths!

v1.12.0 - 2024-09-29

  • New options for BFSIterator

v1.11.0 - 2024-05-05

  • DFS and BFS iterators
  • Dorogovtsev-Mendes graph generator optimization

v1.10.0 - 2024-04-05

  • Longest path algorithm for DAGs
  • All simple paths algorithm

v1.9.0 - 2023-09-28

  • Rewrite of edit_distance with edge costs
  • Eulerian cycles/trails for undirected graphs
  • mincut implementation
  • strongly_connected_components_tarjan

v1.8.0 - 2023-02-10

  • newman_watts_strogatz graph generator
  • Prufer coding for trees
  • isdigraphical

v1.7.0 - 2022-06-19

  • Hierarchical documentation structure

v1.6.0 - 2022-02-09

  • (breaking) Requires Julia >= v1.6
  • (breaking) Base.zero no longer mandatory for AbstractGraph
  • Simplified AbstractGraph interface

v1.5.0 - 2022-01-09

  • (breaking) merge_vertices now only works on subtypes of AbstractSimpleGraph
  • rich_club function
  • induced_subgraph with boolean indexing
  • Optional start vertex for maximum_adjacency_search

v1.4.0 - 2021-10-17

  • Initial release as Graphs.jl (successor to LightGraphs.jl)

The Graphs.jl project is a reboot of the LightGraphs.jl package (archived in October 2021), which remains available on GitHub at sbromberger/LightGraphs.jl. If you don't need any new features developed since the fork, you can continue to use older versions of LightGraphs.jl indefinitely. New versions will be released here using the name Graphs.jl instead of LightGraphs.jl. There was an older package also called Graphs.jl. The source history and versions are still available in this repository, but the current code base is unrelated to the old Graphs.jl code and is derived purely from LightGraphs.jl. To access the history of the old Graphs.jl code, you can start from commit 9a25019.

Transition from LightGraphs to Graphs

LightGraphs.jl and Graphs.jl are functionally identical, still there are some steps involved making the change:

  • Change LightGraphs = "093fc24a-ae57-5d10-9952-331d41423f4d" to Graphs = "86223c79-3864-5bf0-83f7-82e725a168b6" in your Project.toml.
  • Update your using and import statements.
  • Update your type constraints and other references to LightGraphs to Graphs.
  • Increment your version number. Following semantic versioning, we suggest a patch release when no graphs or other Graphs.jl-objects can be passed through the API of your package by those depending on it, otherwise consider it a breaking release. "Passed through" entails created outside and consumed inside your package and vice versa.
  • Tag a release.

About versions

  • The master branch of Graphs.jl is generally designed to work with versions of Julia starting from the LTS release all the way to the current stable release, except during Julia version increments as we transition to the new version.
  • Later versions: Some functionality might not work with prerelease / unstable / nightly versions of Julia. If you run into a problem, please file an issue.
  • The project was previously developed under the name LightGraphs.jl and older versions of LightGraphs.jl (≤ v1.3.5) must still be used with that name.
  • There was also an older package also called Graphs.jl (git tags v0.2.5 through v0.10.3), but the current code base here is a fork of LightGraphs.jl v1.3.5.
  • All older LightGraphs.jl versions are tagged using the naming scheme lg-vX.Y.Z rather than plain vX.Y.Z, which is used for old Graphs.jl versions (≤ v0.10) and newer versions derived from LightGraphs.jl but released with the Graphs.jl name (≥ v1.4).
  • If you are using a version of Julia prior to 1.x, then you should use LightGraphs.jl at lg-v.12.* or Graphs.jl at v0.10.3