Gosl v1.2.13 was published on 28 September 2026, marking the first release of the library since v1.2.12 in May 2023. The primary change resolves Cgo compilation failures in package la when building against SuiteSparse 7 on modern Linux distributions. This is an official stable release rather than a prerelease build.
The full release notes and downloads are on the GitHub release page.
UMFPACK SuiteSparse 7 compile fix in package la ¶
Gosl provides scientific computing primitives in Go, covering spatial geometry, linear algebra, and numerical calculus. Package la wraps external C libraries, including SuiteSparse and UMFPACK, to solve sparse linear systems.
On distributions shipping SuiteSparse 7, such as Ubuntu 24.04, previous Gosl releases failed during compilation. In v1.2.12, the internal helper function umfErr expected an argument of type long. SuiteSparse 7 defines status return codes as 32 bit signed integers. When building package la with Cgo, the Go compiler halted with ten type errors stating that status of type C.int could not be passed as a C.LONG value to umfErr.
Issue #68 resolved the mismatch across commits 9541a3b3 and d25acbe8. The helper function umfErr now accepts a standard int, and status codes are converted at every call site. This change allows Go programs to compile against SuiteSparse 7 without build flags or patched headers.
In the same linear algebra hierarchy, package la/oblas received a fix in commit 4c5ce3c3. The conjugate transpose flag in BLAS routine zherk is now passed correctly, preventing calculation errors in complex matrix operations.
Solver iterations and routine adjustments in num ode and io ¶
Beyond linear algebra, version v1.2.13 cleans up routines across numerical and input output packages.
Package num received four bug fixes via pull request #67. Function Elliptic3 now checks error states correctly. Redundant conditions were removed from Chebyshev point calculation functions. A warning is now emitted when callers supply a negative index n to complex functions. In routine GaussLegendreXW, commit 06803204 corrected a shadowed loop iterator variable that previously compromised quadrature weights. These changes were committed across 683911dc, 1176b63e, 64896c2b, and 06803204.
Package ode contains solvers for ordinary differential equations. Commit ad8ce6c3 removed an unnecessary external loop from the core solver, eliminating redundant work during step progression. Commits 75668b8e, 8191bb52, and ab6e75ef removed unused solver tests and stale benchmark data to streamline the test suite.
Package io received a modernization patch in commit 99e69c38 via pull request #63. A manual loop that copied byte buffers was replaced with the Go built in copy function, simplifying the implementation and allowing the runtime to use vectorized memory copy routines.
Verification environment and project maintenance status ¶
The maintainers verified all nineteen packages inside a pinned Docker container on Ubuntu 24.04. The container environment included SuiteSparse 7.6.1, OpenBLAS 0.3.26, LAPACKE 3.12.0, FFTW3 3.3.10, METIS 5.1.0, mumps-seq 5.6.2, gfortran 14.2, and Go 1.27.1.
Verification confirmed that go vet reports no warnings and all package tests pass. In issue #68 reproduction tests on Ubuntu 24.04, running go get github.com/cpmech/[email protected] followed by go build github.com/cpmech/gosl/la produced ten compilation failures, while v1.2.13 built without errors. Although go.mod specifies Go 1.17 for baseline compatibility, all packages compile and pass tests under Go 1.27.1.
The release notes clarify project maintenance status. Gosl is mature and currently in maintenance mode. The author directs new numerical development to Russell, the successor library. Existing Gosl users can continue filing bug reports, but new feature work is unlikely. Additionally, continuous integration no longer reports to Codecov, and documentation references now target branch main.
Upgrade notes ¶
Gosl v1.2.13 is a drop in replacement for v1.2.12. No exported API symbols were renamed, no packages were added or removed, and function signatures remain unchanged.
To upgrade existing Go modules, run:
go get -u github.com/cpmech/gosl
Pipelines that previously failed to build on Ubuntu 24.04 or SuiteSparse 7 hosts can remove workarounds and compile standard module dependencies directly.
Where to get it ¶
- Release page: https://github.com/cpmech/gosl/releases/tag/v1.2.13
- Repository: https://github.com/cpmech/gosl
- Tag:
v1.2.13