# \[ANN\] SuiteSparseGraphBLAS.jl v0.4.0 - Complete Rewrite!

**URL:** https://discourse.julialang.org/t/ann-suitesparsegraphblas-jl-v0-4-0-complete-rewrite/63958
**Category:** Package Announcements
**Tags:** linearalgebra, sparse
**Created:** [July 2, 2021, 9:03pm UTC](https://discourse.julialang.org/t/ann-suitesparsegraphblas-jl-v0-4-0-complete-rewrite/63958 "2021-07-02T21:03:30Z")
**Posts on this page:** 1
**Page:** 1

<div class="post-metadata">

### Author: ![rayegun](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/rayegun/32/26729_2.png) [@rayegun](https://discourse.julialang.org/u/rayegun)
#### Post date: [July 2, 2021, 9:03pm UTC](https://discourse.julialang.org/t/ann-suitesparsegraphblas-jl-v0-4-0-complete-rewrite/63958/1 "2021-07-02T21:03:30Z")

</div>

Hi everyone, I’m happy to announce the v0.4.0 release of [JuliaSparse/SuiteSparseGraphBLAS.jl (github.com)](https://github.com/JuliaSparse/SuiteSparseGraphBLAS.jl)!

This release is a complete rewrite of the original package, updating it to the latest version of SuiteSparse:GraphBLAS, and including much more Julian syntax.

SuiteSparseGraphBLAS.jl is a sparse linear algebra library which generalizes operations we all know and love like matrix multiplication, to arbitrary semirings. Essentially you can replace the `:+` and `:*` operat_ors_ with your own binary operators.

This lets you encode all sorts of graph algorithms in the language of linear algebra, like triangle counting:

```julia
julia> A = GBMatrix([1,1,2,2,3,4,4,5,6,7,7,7], [2,4,5,7,6,1,3,6,3,3,4,5], [1:12...])
7x7 GraphBLAS int64_t matrix, bitmap by col
  12 entries, memory: 832 bytes

    (4,1) 6
    (1,2) 1
    (4,3) 7
    (6,3) 9
    (7,3) 10
    (1,4) 2
    (7,4) 11
    (2,5) 3
    (7,5) 12
    (3,6) 5
    (5,6) 8
    (2,7) 4

julia> M = eadd(A, A', BinaryOps.PLUS) #Make A undirected/symmetric

julia> function trianglecount(A)
         L = select(SelectOps.TRIL, A)
         return reduce(Monoids.PLUS_MONOID[Int64], mul(L, L, Semirings.PLUS_PAIR; mask=L))
       end

julia> trianglecount(M)
2

```

This is my Julia Summer of Code project, so any feedback is more than welcome! You can expect a v1.0 release in the week before JuliaCon!
