Skip to content

Latest commit

 

History

History
241 lines (179 loc) · 12.8 KB

File metadata and controls

241 lines (179 loc) · 12.8 KB

Changelog

All notable changes to the packages in this monorepo are documented in this file, as a single timeline (most recent first). The repository hosts four independently versioned packages — GNNGraphs.jl, GNNlib.jl, GraphNeuralNetworks.jl (Flux frontend), and GNNLux.jl (Lux frontend) — and each release below is tagged with the package it belongs to.

The format is based on Keep a Changelog, and the packages adhere to Semantic Versioning. Entries link to the pull request that introduced them.

GNNGraphs.jl — Unreleased (towards 1.6.0)

Added

  • Added a Mooncake package extension, so that Mooncake can differentiate on CUDA through add_self_loops and through adjacency-matrix graphs. Float edge weights of adjacency-matrix graphs stay differentiable (#704).

Fixed

  • Added an EnzymeCore package extension marking scaled_laplacian inactive for Enzyme, matching its existing @non_differentiable ChainRules declaration. Enzyme previously differentiated the Krylov eigensolve inside it and failed; this unblocks ChebConv, GConvGRUCell and GConvLSTMCell (#706).
  • Enzyme can now differentiate through the adjacency-matrix → COO graph conversion: a new internal keyword-free helper _to_coo_graph avoids the union-typed keyword handling of the GNNGraph(g; graph_type) constructor and of to_coo, which Enzyme's type analysis cannot compile. Together with upstream fixes in Enzyme ≥ 0.13.197 this removes the EnzymeInternalError crash on :dense/:sparse graphs (#703).

GNNLux.jl — Unreleased (towards 0.2.0)

Added

  • Added pooling layers (GlobalPool, GlobalAttentionPool, TopKPool) (#576).
  • TGCN now supports non-linear activation functions (#596).
  • Rewrote the recurrent temporal layers following the Flux frontend's design (#560): added the GNNRecurrence wrapper and split every temporal layer into a *Cell and a full-sequence layer, exporting both — TGCNCell/TGCN, GConvGRUCell/GConvGRU, GConvLSTMCell/GConvLSTM, DCGRUCell/DCGRU, EvolveGCNOCell/EvolveGCNO. A layer now consumes a whole sequence at once (an in × timesteps × num_nodes array on a GNNGraph, or a vector of snapshots on a TemporalSnapshotsGNNGraph) and returns the full output sequence (#696).

Changed

  • Bumped the NNlib, OneHotArrays, StableRNGs, and DocumenterInterLinks compat bounds (#687, #686, #684, #685).
  • The temporal cells now share their forward-pass math with the Flux frontend via new GNNlib functions, and several formulas were corrected in the process (e.g. the GConvGRU candidate state, previously tanh of the wrong term, and the GConvLSTM peephole connections) (#696).

Removed

  • Removed the A3TGCN layer, mirroring its removal from the Flux frontend (#696).

GNNlib.jl — Unreleased (towards 1.4.1)

Fixed

  • Fixed Enzyme.gradient failing when differentiating GCNConv, SGConv and TAGConv on :dense/:sparse adjacency graphs: their adjacency-matrix fallbacks now convert via the Enzyme-differentiable GNNGraphs._to_coo_graph instead of the keyword GNNGraph constructor. Requires GNNGraphs ≥ 1.5.2 and, for Enzyme, Enzyme ≥ 0.13.197 (#703).

GraphNeuralNetworks.jl — Unreleased (towards 1.1.1)

Changed

  • GNNRecurrence now hands each cell an indexed time slice instead of an eachslice view, matching the Lux frontend. Enzyme's type analysis fails on SubArray cell inputs, so this unblocks DCGRU, EvolveGCNO, GConvGRU and GConvLSTM under Enzyme (#707).
  • The recurrent temporal cells now delegate their forward-pass math to shared GNNlib functions (requires GNNlib ≥ 1.4); the layer behaviour is unchanged (#696).

GNNlib.jl 1.4.0 — 2026-07-22

Added

  • Added framework-agnostic forward passes for the recurrent temporal cells — tgcn, gconv_gru, gconv_lstm, dcgru — shared by the Flux and Lux frontends (#696).

Fixed

  • Worked around a Julia 1.12 code-generation segfault that crashed CGConv and GMMConv gradients: the layers' @warn (in the residual branch) is now wrapped in ignore_derivatives to keep the logging macro out of the AD-differentiated code path. Root cause reported upstream as FluxML/Zygote.jl#1662; re-enables the previously disabled CGConv/GMMConv gradient tests (#695).

GNNGraphs.jl 1.5.1 — 2026-07-22

Changed

  • Relaxed the CUDA compat bound to "5, 6", adding support for CUDA.jl v6 (#690).
  • Bumped the NNlib and KrylovKit compat bounds (#687, #680).

Fixed

  • Fixed remove_edges triggering scalar indexing on GPU graphs (#672, #691).
  • Fixed getgraph failing on GPU graphs (#691).
  • Fixed remove_self_loops mutating the input for adjacency-matrix graphs (#659).
  • Fixed unbatch for COO batches containing zero-edge graphs (#652).
  • Fixed sample_nbrs when sampling without replacement (#648).

GNNlib.jl 1.3.0 — 2026-07-22

Added

  • Added Mooncake rules for the propagate copy_xj, e_mul_xj, and w_mul_xj fast paths (#677, #678, #679).

Changed

  • Relaxed the CUDA compat bound to "5, 6", adding support for CUDA.jl v6 (#690).
  • Bumped the NNlib compat bound (#687).

Fixed

  • Fixed the d_conv (DConv) forward pass, which did not compute the diffusion convolution from the paper: the degree normalization was inverted (multiplying by degree instead of D_O⁻¹/D_I⁻¹), one weight slice was applied twice, and a spurious Chebyshev 2T − T₀ recurrence was used in place of the paper's bidirectional random-walk power series. Isolated nodes are now handled without producing NaN (#592).

GNNlib.jl 1.2.1 — 2026-04-29

Changed

  • Bumped the DataStructures compat bound (#670).

Fixed

  • Fixed the gmm_conv (GMMConv) implementation (#645).

GNNlib.jl 1.2.0 — 2026-01-11

Added

  • Added support for reducing nodes over heterogeneous graphs (#634).

Fixed

  • Fixed empty-edge handling in softmax_edge_neighbors (#636).

GNNGraphs.jl 1.5.0 — 2025-12-24

Added

  • Added coalesce and is_coalesced to sort and merge duplicate edges of COO graphs, and to query coalesced state (#613, #624, #625).
  • Added SpMM-based message passing with CUDA support for coalesced COO graphs (#617).
  • Added a fmt keyword to adjacency_matrix to select the output format, plus a copy_xj propagate fast path for Metal (#619).
  • Added CUDA support for the binarize() operation on sparse matrices (#601).

Changed

  • The monorepo now uses Julia workspaces for development (#630).

Fixed

  • Fixed the NNlib CUDA extension (#621).

GNNlib.jl 1.1.0 — 2025-12-24

Added

  • Added SpMM-based message passing with CUDA support for coalesced COO graphs (#617).
  • Added CUDA sparse support for the propagate copy_xj and w_mul_xj fast paths via matrix multiplication (#605, #610).
  • Added a fmt keyword to adjacency_matrix and a copy_xj propagate fast path for Metal (#619).

Changed

  • Refactored propagate signatures to accept COO subtypes for the copy_xj and w_mul_xj fast paths (#611).

Fixed

  • Fixed the NNlib CUDA extension (#621).

GraphNeuralNetworks.jl 1.1.0 — 2025-12-24

Added

  • TGCN now supports non-linear activation functions (#596).

Fixed

  • Fixed a Zygote differentiation error (#579).

GNNGraphs.jl 1.4.2 — 2025-02-07

Changed

  • Improved type inference for num_nodes (#588).
  • Bumped the KrylovKit compat bound (#587).

Fixed

  • Fixed a corner case in normalize_graphdata (#589).
  • Fixed a Zygote differentiation error (#579).

GNNlib.jl 1.0.1 — 2025-01-12

Maintenance release: internal fixes and test-infrastructure updates, no user-facing API changes.

GNNGraphs.jl 1.4.1 — 2024-12-25

Changed

  • Removed the constraint requiring an equal number of features across node/edge types in the gdata of heterographs (#570).

GNNGraphs.jl 1.4.0 — 2024-12-21

Added

  • Added broadcast, iterate, and setindex! support for TemporalSnapshotsGNNGraph (#563).

Changed

  • Updated for compatibility with Flux v0.15 (#550).

Fixed

  • Fixed show for graphs whose features are not arrays (#564).

GNNlib.jl 1.0.0 — 2024-12-21

First stable release of GNNlib.jl.

Changed

  • Rewrote the recurrent temporal layers for Flux v0.16 (#560).
  • Updated for compatibility with Flux v0.15 (#550).

GraphNeuralNetworks.jl 1.0.0 — 2024-12-21

First stable release of the Flux frontend.

Changed

  • Rewrote the recurrent temporal layers for Flux v0.16 (#560).
  • Updated for compatibility with Flux v0.15 (#550).

GNNLux.jl 0.1.1 — 2024-12-09

Documentation release: added the "Hands On" tutorial, a version selector, and general docs improvements (#549, #543, #542, #539). No API changes.

GNNLux.jl 0.1.0 — 2024-12-02

Initial release of the Lux-based frontend for GraphNeuralNetworks.jl, providing Lux implementations of the graph convolutional, pooling, and temporal layers (e.g. GCNConv, GraphConv, SAGEConv, GATConv, GMMConv, NNConv, ResGatedGraphConv, and the temporal layers TGCN, GConvGRU, GConvLSTM, DCGRU, EvolveGCNO) that share the message-passing implementations in GNNlib.