v0.2.4
stable-diffusion-go v0.2.4 — pure-Go binding + prebuilt native libraries.
Built from leejet/stable-diffusion.cpp @ e92e86f (upstream pin: master-802-e92e86f).
go get github.com/Pendra-Cloud/stable-diffusion-go@v0.2.4 for the
binding; the lib archives attached here match this exact tag. Each archive
contains a self-contained libstable-diffusion (ggml statically linked,
hidden visibility — exports only the sd_* symbols pkg/sd/load.go registers).
CUDA archives require a matching host CUDA runtime; Vulkan archives require
a Vulkan loader/ICD on the host. The Windows archive carries the per-CPU/GPU
(avx2/avx512/avx/noavx/vulkan/cuda13) subdir tree the binding selects from.
Root cause
The engine bump to upstream master-802-e92e86f (#27 — Krea2 + many new architectures) grew the single translation unit upstream/src/stable-diffusion.cpp past MSVC's COFF object-file section limit. Every Windows CPU and Vulkan matrix leg hard-failed with:
upstream\src\stable-diffusion.cpp : fatal error C1128: number of sections exceeded object file format limit: compile with /bigobj
(see the post-merge main build, run 30522367716). Those legs are mandatory, so the windows matrix failed, windows_assemble's symbol gate had no DLLs to pass, and the release job was skipped — no release can publish.
Fix
Add /bigobj to the MSVC compile via step-level CXXFLAGS/CFLAGS environment variables on the Windows "Build variant" step only.
Why env vars and not -DCMAKE_CXX_FLAGS=/bigobj: CMake initializes CMAKE_<LANG>_FLAGS as "$ENV{<LANG>FLAGS} <platform defaults>", so the env route appends /bigobj alongside MSVC's defaults (/DWIN32 /D_WINDOWS /EHsc /GR), whereas the cache-variable route would replace them and silently drop /EHsc (breaking C++ exception unwinding). SD_BASE_FLAGS is untouched — it is shared with the Linux/macOS GCC/Clang legs, where /bigobj is not a valid flag.
Verification (Windows-only gating run — manual runs never publish)
Dispatched build-libs.yml on this branch with only=windows-amd64: run 30524022593 — overall conclusion success.
| Leg | Result |
|---|---|
| windows (avx2, cpu) | ✅ success — 0 C1128 occurrences in log |
| windows (avx512, cpu) | ✅ success — 0 C1128 |
| windows (avx, cpu) | ✅ success — 0 C1128 |
| windows (noavx, cpu) | ✅ success — 0 C1128 |
| windows (vulkan) | ✅ success — 0 C1128 |
| windows (cuda13) | ❌ pre-existing, optional (continue-on-error): cuda_runtime.h(82): fatal error C1083 — the known CUDA-13-on-windows-2022 include failure, unchanged by this PR |
| windows_assemble | ✅ success — Windows symbol verification OK (5 variants) and Packaged stable-diffusion-libs-windows-amd64.tar.gz |
| release | ⏭ skipped (manual gating runs never publish) |
Merging this restores the Windows leg of the release pipeline; the cuda13 C1083 remains a separate known issue.
🤖 Generated with Claude Code
What's Changed
- Bump engine to master-802-e92e86f (Krea2 support) + full ABI re-port by @tomcrawf90 in #27
- ci(windows): compile with /bigobj to fix C1128 at upstream master-802 by @tomcrawf90 in #28
Full Changelog: v0.2.3...v0.2.4