Skip to content

Releases

10.5.2.0

Choose a tag to compare

@eriknw eriknw released this 28 Oct 15:26
8ff05f1

Highlights

  • SuiteSparse:GraphBLAS 10.5.2, a bug-fix release (#160). Fixes include:

    • GrB_select with a built-in VALUE* operator of a different type than the input (e.g. an INT8 matrix with GrB_VALUEEQ_FP64) kept the wrong entries or values.
    • GxB_Matrix_reshape silently corrupted indices when a new dimension exceeded 2^32.
    • GxB_*_sort could take quadratic time on already-sorted input.
    • The historical GxB_*_import methods checked the size of Ax incorrectly.
    • Not in GraphBLAS's ChangeLog: a memory arena created by GxB_arena_init without a realloc function had its memory freed by the default arena's free, which could crash.

    See the GraphBLAS 10.5.2 release notes.

Changes to lib (#160)

  • Removed: GxB_NONBLOCKING_GPU and GxB_BLOCKING_GPU. GraphBLAS 10.5.2 made them historical aliases of GrB_NONBLOCKING and GrB_BLOCKING; use those instead. The development branch of python-graphblas references them and needs an update. The released python-graphblas 2025.2.0 requires suitesparse-graphblas <10, so it is unaffected.
  • Added: GxB_NARENAS_GPU.

Maintenance

cibuildwheel 4.3.3 and gh-action-pypi-publish 1.14.3, both with fixes for the eMudhra CA compromise, and zizmor 1.31.1. (#160)

10.5.1.1

Choose a tag to compare

@eriknw eriknw released this 17 Oct 02:13
e23e85d

Highlights

  • Python 3.15: wheels for CPython 3.15 and free-threaded 3.15t (#157, #159)
  • WebAssembly wheels for Pyodide (PEP 783 pyemscripten, Python 3.13 and 3.14), so
    await micropip.install("suitesparse-graphblas") works in Pyodide 314 (Python 3.14) and
    0.29.4+ (Python 3.13), and in JupyterLite. GraphBLAS runs single-threaded there. (#158)
  • Memory-safety fixes: NumPy ≥ 2.5 allocates array data with a different allocator, so
    serialize_matrix/serialize_vector and binread could abort on free-threaded 3.15 or
    under PYTHONMALLOC=debug. Arrays that share memory with GraphBLAS now carry a NumPy
    memory handler (NEP 49) that matches the GraphBLAS allocator (including GraphBLAS ≥ 10.4
    memory arenas) that frees them. (#157)

suitesparse_graphblas.utils (#157)

  • New give_buffer(...): a context manager that hands an array's data to a GraphBLAS
    function that takes ownership (e.g. GxB_Matrix_pack_CSR, GxB_Vector_load). It copies
    when GraphBLAS can't own the data, and commits only if GraphBLAS actually took it.
  • New empty(...): allocates an array that GraphBLAS can always take ownership of.
  • New can_unclaim_buffer(array, arena=None).
  • claim_buffer and claim_buffer_2d take an optional arena argument.
  • Behavior change: unclaim_buffer now raises ValueError when GraphBLAS can't safely
    own the data: a view, a read-only array, an object dtype, or memory from another allocator
    (e.g. NumPy-allocated arrays with memory_manager="c", or a custom NumPy memory handler).
    Use give_buffer, or check can_unclaim_buffer first.

Other fixes

  • initialize() raises if GraphBLAS fails to initialize, instead of continuing silently. (#157)
  • binread allocates with GraphBLAS's allocator instead of libc malloc, and reads iso
    matrices correctly. binwrite restores the matrix if writing fails. (#157)

Platform and packaging changes

  • macOS arm64 wheels now require macOS 15 (previously 14), because GitHub is retiring
    its macOS 14 runners. (#159)
  • PyPy wheels now target PyPy 8.0 (pypy311_pp80). PyPy 7.3 can't install them and will
    build from the sdist. Windows PyPy wheels are no longer built. (#159)
  • Wheels no longer include build-only .c/.h sources, so they are smaller. (#158)
  • Releases are now published with PyPI Trusted Publishing instead of an API token. (#157)

Maintenance

cibuildwheel 4.3. GitHub Actions are pinned to commit SHAs with least-privilege permissions,
and actionlint/zizmor/pysentry checks were added. pytest is stricter (warnings are errors),
and new memory tests run under PYTHONMALLOC=debug. suitesparse.sh now stops at the first
failure and uses the CMake option names GraphBLAS honors (GRAPHBLAS_COMPACT,
GRAPHBLAS_JITINIT). (#157, #158, #159)

10.5.1.0

Choose a tag to compare

@eriknw eriknw released this 17 Sep 18:33
1434ec8

Update to SuiteSparse:GraphBLAS 10.5.1 #155

10.5.0.1

Choose a tag to compare

@eriknw eriknw released this 26 Aug 15:20
0ca0f0f

Update cmake config options and ensure SuiteSparse:GraphBLAS is compiled with OpenMP support.

10.5.0.0

Choose a tag to compare

@eriknw eriknw released this 25 Aug 16:33
96bb9a6

Update to SuiteSparse:GraphBLAS 10.5.0 #153

10.4.1.0

Choose a tag to compare

@eriknw eriknw released this 11 Aug 16:08
b1623b3

Update to SuiteSparse:GraphBLAS 10.4.1 #152

10.4.0.0

Choose a tag to compare

@eriknw eriknw released this 09 Aug 04:48
eca0261

Update to SuiteSparse:GraphBLAS 10.4.0 (#151)

10.3.1.0

Choose a tag to compare

@eriknw eriknw released this 27 Mar 22:36
292dc06
  • Update to SuiteSparse:GraphBLAS 10.3.1 (#142)
  • Add support for Python 3.14
  • Drop support for Python 3.9 and 3.10

10.1.1.0

Choose a tag to compare

@eriknw eriknw released this 14 Sep 19:54
4e49ec4
  • Update to SuiteSparse:GraphBLAS 10.1.1 (#141)

10.0.1.1

Choose a tag to compare

@eriknw eriknw released this 17 Mar 02:38
74c45cc
  • Update to SuiteSparse:GraphBLAS 10.0.1 (#132
    • Fix minor issue that prevented publishing 10.0.1.0 to PyPI (#140)