Highlights
----------
- First release to officially support SuiteSparse:GraphBLAS 8 (456, 488, 504, 511, 512)
- Newly affiliated with NumFOCUS and pyOpenSci (482, 510)
- We have a new logo, check it out! (506)
Expired deprecations
--------------------
- Removed `gb.io.draw`; use `gb.viz.draw` instead (485)
- Removed `A.ss.scan_rowwise`, `A.ss.selectk_rowwise`, `A.ss.compactify_rowwise`, and `A.ss.*_columnwise` variants (486)
- Use e.g. `A.ss.scan(order="row")` instead
Enhancements
------------
- Support SuiteSparse:GraphBLAS 8 (456)
- Document and improve using the JIT for user-defined operators defined in C (512)
- Document `gb.ss.config` options (504)
- Document `gb.ss.context` (488)
- Test against python-suitesparse-graphblas 8.0.2.1, 8.2.0.1, 8.2.1.0 (511)
- Add `matrix.power(k)` to compute e.g. `A A A ...` using repeated squaring with arbitrary semiring (483)
- Add `matrix.setdiag(x, k=0)` to set a diagonal of a matrix; supports mask and accum (493)
- Add `gb.ss.burble` to enable SuiteSparse:GraphBLAS diagnostics; may be used as a context (514)
- Add CSS to better stylize matrices in online docs (502)
- Add `.thunk_type` attribute to SelectOp and IndexUnaryOp (512)
- Add badge for pyOpenSci affiliation; we were peer reviewed! (482)
- Add badge for NumFOCUS affiliation; we were added as an affiliated project! (510)
- Created logo and color palette for `python-graphblas`! Notebook added that creates it (506)
Bug fixes
---------
- Allow `scalar.__index__` for integral dtypes only (481)
- Fix broken link to graphblas.org (503)
Maintenance
-----------
- Drop support for:
- Python 3.8 (489)
- scipy 1.8 (489)
- Add support for:
- Python 3.12 (508)
- numpy 1.26 (493, 505)
- pandas 2.1 (500)
- awkward 2.4 (500)
- Drop usage of coveralls (use codecov instead) (509)
New contributors
----------------
- We welcomed alugowski, paul-tqh-nguyen, and Transurgeon as new code contributors this release :tada: