Progress report in case someone comes across this in the future:
I successfully added Julia bindings for some of libSparse’s functionality (GitHub link). My approach requires manually working out the name mangling and individually writing the Julia wrappers. There’s bash script for demangling here should someone want to go that route.
If you want to automate the generation of the Julia wrappers, parsing the header as C++ seems like the way to go. Sadly, Clang.jl does not suppport and cannot easily support (issue) parsing the overloadable attribute, which is used extensively in libSparse.h
The performance of the linear solvers is curiously poor. Profiling an in-place solve in Julia, the C routines taking the most time are related to allocating/deallocating the internal matrix representation. If I repeat the computation in Objective-C, the runtime is the same: calling the libSparse functions as C vs as Objective-C probably isn’t to blame. I asked on the Apple Developer form about this: a dev said “that’s strange,” but no response beyond that.