feat: initial release
Release / gates (push) Successful in 4m38s
Test / test (push) Successful in 5m16s
Release / release (push) Successful in 35s

Assisted-by: GLM 5.3 Flash
This commit is contained in:
2026-09-03 10:00:00 +02:00
commit af4ee19703
617 changed files with 191195 additions and 0 deletions
+58
View File
@@ -0,0 +1,58 @@
# Race, Go. Dispatched by hand, and never a gate on a push or a tag: the release tag is
# cut only after `just gates` has already raced the tree, so this workflow is the
# explicit second opinion, not a step of the release.
#
# The race detector roughly doubles both time and memory, which the shared runner box
# cannot afford on every push. Locally it belongs to `just gates`, which runs it once
# per task; here it is an explicit decision rather than a routine.
#
# The matrix keeps the libm check the push pipeline once carried: the same linux/amd64
# oracle digests run against glibc (fedora, openeuler) and musl (alpine), which is
# exactly where floating-point kernels can drift. Dispatched, because three full
# sweeps are not affordable on every push.
#
# Every step is one command, so the step that fails is the gate that failed.
name: Race
on:
workflow_dispatch:
env:
# One core: parallelism buys no speed here and costs memory the box does not have.
GOFLAGS: -p=1
GOMAXPROCS: "2"
jobs:
race:
runs-on: ${{ matrix.runner }}
timeout-minutes: 45
strategy:
fail-fast: false
matrix:
include:
- runner: fedora
packages: dnf install -y git gcc perl
- runner: alpine
packages: apk add --no-cache git gcc perl musl-dev
- runner: openeuler
packages: dnf install -y git gcc perl
steps:
- name: Install git, gcc and Perl
# The race detector needs cgo, hence gcc; alpine adds musl-dev for the same
# reason. The installs are no-ops where the packages already exist.
run: ${{ matrix.packages }}
- uses: actions/checkout@v7
- uses: actions/setup-go@v6
with:
go-version-file: go.mod
cache: true
- name: Oracle digests for this platform
run: go test -run TestOracle -v .
- name: Race
# Equal to `packages` in the project's justfile: the logic packages,
# the main-program examples aside.
run: go test -race -count=1 -timeout 30m . ./internal/... ./grad/... ./integrate/... ./io/... ./linalg/... ./optim/... ./signal/... ./spmd/... ./stats/...