Repository navigation
SuperSLM 1.8.1
SuperSLM 1.8.1
Released 2026-09-25.
SuperSLM 1.8.1 is a single diagnostic fix on the CPU path: the four per-site saturation counts
travel with the saturation total they sum. No token, status, ABI surface, SslmGpuStatus ordinal,
save format or measured figure changes from 1.8.0, and no model-artifact reconversion is required.
What changed
SequenceLayerState carries a saturation total, kv_saturation_count, and the four per-site counts
it sums: kv_landing_saturation_count, k_channel_landing_saturation_count,
rope_q_saturation_count and rope_k_saturation_count. RunLayerLoop, the path decode uses,
already kept the four in step with the total. Two CPU ABI paths did not:
- Prefix adoption.
sslm_seq_adopt_prefixcopied the prefix's total but left the adopting
sequence's four per-site counts at whatever the sequence held before. They now come from the
prefix, like the total. - Prefill.
sslm_prefillandsslm_prefix_prefillrun throughPrefillWholeTokensand
RunLayerLoopChunkBatched, which grew the total without being handed the four per-site
out-parameters, so a prefilled sequence's per-site counts no longer summed to its total. They are
now passed, and the counts are filled.
Neither path changes a token: the counters are written beside the arithmetic, never read by it.
Compatibility and required action
None. Every C ABI verb, struct and status ordinal is unchanged from 1.8.0. The per-site counts are
internal SequenceLayerState fields, not part of the public ABI.
One limit is unchanged and stated here so it is not mistaken for part of this fix: sslm_seq_save
records only the saturation total, so a sequence restored with sslm_seq_restore has its total and
per-site counts of 0, so after a restore the per-site counts no longer sum to the total. Carrying them would change the save format, which this release does not do.
Verification
- Red first: two cells, one for adoption and one for prefill (both
sslm_prefilland
sslm_prefix_prefill), failed 6 checks against 1.8.0's engine for the reasons above. The prefill
prompt saturates 5 times on the committed fixture, so the prefill cell cannot pass on zeros. - Linux, GCC 13 Release:
superslm_tests0 failures; all 15 ctest entries pass; ASan and UBSan 0
failures; Clang 18 forced SSE2, AVX2 and AVX-512 tiers 0 failures each. - Windows, MSVC: CMake Release
superslm_tests34,759 checks andbuild.bat'ssuperslm_tests
step 34,753 checks, 0 failures each; the four Windows CI ctest cells pass. With the engine fix
reverted, 6 failures, all in the new cells. - GPU, TE-425 suite on the dev-box device: every one of 119 jobs gave the same verdict as the
1.8.0 exit check.src/gpu/is unchanged by this release.
Files changed
src/sslm_abi.cpp-- adoption copies the four per-site counts; prefill passes them to
RunLayerLoopChunkBatched. Adds a test-onlySslmPrefixLiveStateForTestaccessor beside the
existingSslmSeqLiveStateForTest, compiled only in the test-injection build.tests/test_slm18x_saturation_census.cpp-- new: the two cells above, in their own unit because
the C ABI header's constants collide withtest_main.cpp's Windows-onlyusing enum SslmGpuStatus.tests/test_main.cpp,CMakeLists.txt,build.bat-- wire the new unit intosuperslm_tests
and the three forced-tier test builds;build.bat'ssuperslm_testsstep linkssslm_abi.cppand
the fourdamped_greedysources, as CMake already did.CMakeLists.txt,tests/install-consumer/CMakeLists.txt,README.md,CHANGELOG.md, this
note -- version 1.8.1.