Skip to content

Update to SSGraphBLAS_jll 10.5 (0.12.0) - #158

Merged
ViralBShah merged 3 commits into
v11from
vs/graphblas10
Oct 27, 2026
Merged

ViralBShah merged 3 commits into
v11from
vs/graphblas10

Conversation

@ViralBShah

Copy link
Copy Markdown
Member

Moves to SuiteSparse:GraphBLAS 10.5. Closes #139 and supersedes #152.

Bindings

  • lib/LibGraphBLAS_gen.jl is regenerated with Clang.jl 0.19.3 against SSGraphBLAS_jll 10.5. The header now lives under include/suitesparse/.
  • import ..libgraphblas was previously a hand edit to the generated file; it is now in prologue.jl. The prologue also defines GxB_FC64_t = ComplexF64, because Clang.jl maps both complex types to ComplexF32.
  • lib/Manifest.toml is removed and gitignored.

API port

  • The removed varargs GxB_Desc_set/get and GxB_*_Option_set/get calls are replaced by their typed _INT32/_FP64 variants.
  • Descriptor nthreads/chunk are removed; GraphBLAS 10 no longer has them.
  • Reading the global chunk option now uses Cdouble.
  • GB_make_shallow no longer exists. Shallow (Julia-owned) arrays are now marked with a GxB_Container round trip using GxB_IS_READONLY, which is public API. GraphBLAS 10 also refuses to unpack read-only memory, so ownership is handed back just before each unpack.
  • GxB_BinaryOp_new replaces the internal GB_BinaryOp_new.
  • JIT disabled at init. The default JIT compiler is the jll build machine's gcc path, so the first JIT attempt fails with GxB_JIT_ERROR (seen in A[:, j]) before GraphBLAS falls back to built-in kernels.
  • No GrB_finalize at exit. After it runs, GraphBLAS uses libc free, and the finalizers that run after atexit hooks then abort on jl_malloc'd memory (free(): invalid pointer on Julia 1.10).
  • Compat bounds raised to the latest versions: SSGraphBLAS_jll = "10.5", KLU = "0.6", Blobs = "1", StorageOrders = "0.3.2". Version 0.12.0 (breaking).

Iterator fixes (these bugs exist in 0.11.x too)

  • Index arrays were read one element early: Julia's unsafe_load is 1-based, but the C code's indices are 0-based. Sparse and hypersparse iteration returned wrong rows; bitmap and full were unaffected.
  • A seek to an absent hypersparse column returned the next stored column's entries.
  • _rc_knext never advanced k.
  • The iterator now also handles GraphBLAS 10's 32- and 64-bit index arrays.
  • Verified against SparseArrays on sparse, hypersparse (including empty columns and ranges), bitmap and full matrices. A small regression testset was added to test/gbarray.jl.

Tests

  • The reduce(any, ...) test (reduce fails when using any as a function #88) no longer assumes which entry the ANY monoid returns.
  • Pkg.test() passes locally on Julia nightly (1.14.0-DEV). An earlier revision, before the iterator fixes, also passed on 1.10.12 and 1.13.2.

🤖 Generated with Claude Code

ViralBShah and others added 3 commits October 27, 2026 15:16
Header moved to include/suitesparse. The libgraphblas import and the complex
type aliases move into prologue.jl (Clang.jl maps GxB_FC64_t to ComplexF32).
lib/Manifest.toml is no longer committed.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Typed GxB_*_Option and GxB_Desc get/set calls replace the varargs ones.
  Descriptor nthreads/chunk are gone in GraphBLAS 10.
- Shallow arrays use a GxB_Container round trip with GxB_IS_READONLY
  (GB_make_shallow was removed); ownership is handed back before unpacking.
- GxB_BinaryOp_new replaces the internal GB_BinaryOp_new.
- Disable the JIT, whose default compiler is the jll build machine's.
- Drop GrB_finalize at exit; later finalizers would free jl_malloc'd memory
  with libc free.
- Compat: SSGraphBLAS_jll 10.5, KLU 0.6, Blobs 1, StorageOrders 0.3.2.
- The reduce(any) test no longer assumes which entry ANY returns.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Index arrays were read one element early (1-based unsafe_load with C's
0-based indices), seeks to absent hypersparse vectors returned the next
stored vector, and _rc_knext never advanced k. Also handle GraphBLAS 10's
32/64-bit index arrays.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@codecov

codecov Bot commented Oct 27, 2026 •

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 68.23529% with 27 lines in your changes missing coverage. Please review.
✅ Project coverage is 65.59%. Comparing base (bfa3114) to head (ea1f75c).
⚠️ Report is 1 commits behind head on v11.

Files with missing lines Patch % Lines
src/options.jl 36.84% 12 Missing ⚠️
src/descriptors.jl 58.82% 7 Missing ⚠️
src/iterator.jl 75.00% 3 Missing ⚠️
src/unpack.jl 66.66% 3 Missing ⚠️
src/SuiteSparseGraphBLAS.jl 50.00% 1 Missing ⚠️
src/pack.jl 95.83% 1 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##              v11     #158      +/-   ##
==========================================
+ Coverage   63.75%   65.59%   +1.83%     
==========================================
  Files          54       54              
  Lines        4415     4441      +26     
==========================================
+ Hits         2815     2913      +98     
+ Misses       1600     1528      -72     

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@ViralBShah
ViralBShah merged commit cde8c7f into v11 Oct 27, 2026
7 checks passed
@ViralBShah
ViralBShah deleted the vs/graphblas10 branch October 27, 2026 15:27
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Bump the version of SSGraphBLAS_jll to v9.1.0+0

1 participant