From 5751b01b74e197ee93c759b6dbceddd1a98b0a6b Mon Sep 17 00:00:00 2001 From: michalharakal Date: Fri, 25 Sep 2026 15:22:17 +0200 Subject: [PATCH 1/4] docs(changelog): 0.57.0 entry Also drops the 0.56.2 entry's duplicated Added block. --- CHANGELOG.md | 32 ++++++++++++++++++++++++-------- 1 file changed, 24 insertions(+), 8 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b1dee66c..2e92d4e3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,18 +9,34 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] -## [0.56.2] — 2026-09-22 +## [0.57.0] — 2026-09-25 -A transformers-only release against **SKaiNET engine 0.56.0** (unchanged). +Lock-step with **SKaiNET engine 0.57.0**. + +### Changed + +- **Engine 0.57.0, Kotlin 2.4.20** (#453). The engine fixes the StableHLO export of an explicit + attention mask under grouped-query attention and onto a dynamic key length (SKaiNET#1302), and + makes kotlinx-io part of `skainet-data-source`'s API. This repo moves to Kotlin 2.4.20 with it. ### Added -- **`IreeMoonshineStream`** (`llm-runtime:iree-android`, `libskainet_moonshine_stream.so`, arm64-v8a + - armeabi-v7a, Vulkan + local-task): the streaming Moonshine v2 speech-to-text runtime over the five - graphs of `MoonshineV2ExportCli` — PCM in, cumulative partial transcripts out, exact final on - `finish()`. The counterpart of `IreeKvSession` for ASR: the last piece a Moonshine cartridge needed - from a released artifact. `native/build-moonshine-stream.sh` builds it with the same image and - cache as the other two libraries. +- **FunctionGemma export contract carries the embedding geometry** (#452). `FunctionGemmaSpec` gains + `vocabSize` (default 262144), `nHeads`, `hiddenSize` and `slidingWindow`, and `manifest.json` emits + them, so `IreeKvSpec.fromManifest` no longer falls back to the stock constants. The export CLI reads + the vocabulary size from the checkpoint's `token_embd.weight` (`GEMMA_VOCAB` overrides): a fine-tune + that added special tokens has more rows, and the native KV session locates the embedding table by + `vocabSize × hiddenSize` bytes and clamps ids ≥ `vocabSize` to 0, so with the stock constant those + tokens would silently have become token 0. `IreeKvSpec.functionGemma270m` takes `vocabSize`. + +### Fixed + +- **Stale `functiongemma` API dump.** #452 changed the public API without re-dumping it, so + `apiCheck` failed on `develop`; refreshed in #453. + +## [0.56.2] — 2026-09-22 + +A transformers-only release against **SKaiNET engine 0.56.0** (unchanged). ### Added From 6558cbbc0e0943e1477c5202e175c98fe63a36b7 Mon Sep 17 00:00:00 2001 From: michalharakal Date: Fri, 25 Sep 2026 15:22:31 +0200 Subject: [PATCH 2/4] docs(readme): 0.57.0 highlights and BOM coordinate --- README.md | 24 +++++++++++------------- 1 file changed, 11 insertions(+), 13 deletions(-) diff --git a/README.md b/README.md index a58a01b0..6c814479 100644 --- a/README.md +++ b/README.md @@ -109,18 +109,16 @@ Honest status — see the project-status note at the top of this README. ## Current release -The current release is **0.56.2** (against **SKaiNET 0.56.0** — a transformers-only release, same -pattern as 0.54.1: no new engine version needed). - -**`IreeMoonshineStream`: the streaming Moonshine v2 speech-to-text runtime.** `libskainet_moonshine_stream.so` -(`llm-runtime:iree-android`, arm64-v8a + armeabi-v7a, Vulkan or CPU) drives the five graphs of -`MoonshineV2ExportCli` — frontend, encoder, adapter, masked prefill, dynamic with-past step — plus the -shared decoder parameter archive as a real streaming loop on the device: PCM in, cumulative partial -transcripts out, one exact full re-decode on `finish()`. The Kotlin binding is shaped like `IreeKvSession`: -files by absolute path, no `Context`. With the exporter (0.56.1) this is the last piece a Moonshine -cartridge needed from a released artifact rather than from C source of its own. - -It builds on **0.56.1**, which released `MoonshineV2ExportCli` (a Hugging Face snapshot in, the five +The current release is **0.57.0**, in lock-step with **SKaiNET 0.57.0**. + +**Engine 0.57.0 and Kotlin 2.4.20.** The engine fixes the StableHLO export of an explicit attention mask +under grouped-query attention and onto a dynamic key length, the shape of a chunked-prefill graph over a +KV cache. **The FunctionGemma export contract now carries the embedding geometry** (`vocabSize`, +`nHeads`, `hiddenSize`, `slidingWindow`) into `manifest.json`, read from the checkpoint, so a fine-tune +with added special tokens exports and runs without its new tokens silently collapsing to token 0. + +It builds on **0.56.2**, which released `IreeMoonshineStream`, the streaming Moonshine v2 runtime on the +device; **0.56.1**, which released `MoonshineV2ExportCli` (a Hugging Face snapshot in, the five StableHLO graphs and two host-side tables out, no Python, nothing to configure per language or size), and **0.56.0**, which put the two version lines back in lock-step with **SKaiNET 0.56.0** (the engine skipped 0.55.0 to realign them). @@ -256,7 +254,7 @@ The recommended way to consume is via the BOM. It pins every published `skainet- ```kotlin dependencies { - implementation(platform("sk.ainet.transformers:skainet-transformers-bom:0.56.2")) + implementation(platform("sk.ainet.transformers:skainet-transformers-bom:0.57.0")) // Versions resolved from the BOM: implementation("sk.ainet.transformers:skainet-transformers-core") From 9bcb7068593332564b4d9abb646f6ea211104301 Mon Sep 17 00:00:00 2001 From: michalharakal Date: Fri, 25 Sep 2026 15:22:31 +0200 Subject: [PATCH 3/4] docs: bump version references to 0.57.0 --- .../ROOT/pages/how-to/export-moonshine-v2-streaming.adoc | 2 +- docs/modules/ROOT/pages/reference/moonshine-encoder.adoc | 2 +- .../modules/ROOT/pages/tutorials/android-getting-started.adoc | 2 +- docs/modules/ROOT/pages/tutorials/getting-started-java.adoc | 4 ++-- docs/modules/ROOT/pages/tutorials/getting-started-leaf.adoc | 2 +- docs/modules/ROOT/pages/tutorials/llama3-tool-calling.adoc | 2 +- 6 files changed, 7 insertions(+), 7 deletions(-) diff --git a/docs/modules/ROOT/pages/how-to/export-moonshine-v2-streaming.adoc b/docs/modules/ROOT/pages/how-to/export-moonshine-v2-streaming.adoc index 13d6a4f6..28ce7687 100644 --- a/docs/modules/ROOT/pages/how-to/export-moonshine-v2-streaming.adoc +++ b/docs/modules/ROOT/pages/how-to/export-moonshine-v2-streaming.adoc @@ -32,7 +32,7 @@ From your own build, resolve the published module and run its main class: ---- val exportTool by configurations.creating dependencies { - exportTool(platform("sk.ainet.transformers:skainet-transformers-bom:0.56.2")) + exportTool(platform("sk.ainet.transformers:skainet-transformers-bom:0.57.0")) exportTool("sk.ainet.transformers:skainet-transformers-inference-moonshine") } tasks.register("exportMoonshine") { diff --git a/docs/modules/ROOT/pages/reference/moonshine-encoder.adoc b/docs/modules/ROOT/pages/reference/moonshine-encoder.adoc index ba4796f3..b22ea1c8 100644 --- a/docs/modules/ROOT/pages/reference/moonshine-encoder.adoc +++ b/docs/modules/ROOT/pages/reference/moonshine-encoder.adoc @@ -24,7 +24,7 @@ a DSL decoder is future work. [source,kotlin] ---- dependencies { - implementation(platform("sk.ainet.transformers:skainet-transformers-bom:0.56.2")) + implementation(platform("sk.ainet.transformers:skainet-transformers-bom:0.57.0")) implementation("sk.ainet.transformers:skainet-transformers-inference-moonshine") } ---- diff --git a/docs/modules/ROOT/pages/tutorials/android-getting-started.adoc b/docs/modules/ROOT/pages/tutorials/android-getting-started.adoc index 81d6f00e..562442fd 100644 --- a/docs/modules/ROOT/pages/tutorials/android-getting-started.adoc +++ b/docs/modules/ROOT/pages/tutorials/android-getting-started.adoc @@ -55,7 +55,7 @@ dependencies { // self-registers it on ART at process start — nothing to call. runtimeOnly("sk.ainet.core:skainet-backend-jni-cpu") - implementation(platform("sk.ainet.transformers:skainet-transformers-bom:0.56.2")) + implementation(platform("sk.ainet.transformers:skainet-transformers-bom:0.57.0")) implementation("sk.ainet.transformers:skainet-transformers-core") implementation("sk.ainet.transformers:skainet-transformers-runtime-kllama") implementation("sk.ainet.transformers:skainet-transformers-inference-llama") diff --git a/docs/modules/ROOT/pages/tutorials/getting-started-java.adoc b/docs/modules/ROOT/pages/tutorials/getting-started-java.adoc index 4cc34d51..dea25147 100644 --- a/docs/modules/ROOT/pages/tutorials/getting-started-java.adoc +++ b/docs/modules/ROOT/pages/tutorials/getting-started-java.adoc @@ -25,7 +25,7 @@ In your `build.gradle.kts`: [source,kotlin] ---- dependencies { - implementation(platform("sk.ainet.transformers:skainet-transformers-bom:0.56.2")) + implementation(platform("sk.ainet.transformers:skainet-transformers-bom:0.57.0")) implementation("sk.ainet.transformers:skainet-transformers-runtime-kllama") implementation("sk.ainet.transformers:skainet-transformers-agent") @@ -41,7 +41,7 @@ Or in Maven (Maven needs the `-jvm` classifier suffix on platform artifacts): sk.ainet.transformers skainet-transformers-bom - 0.56.2 + 0.57.0 pom import diff --git a/docs/modules/ROOT/pages/tutorials/getting-started-leaf.adoc b/docs/modules/ROOT/pages/tutorials/getting-started-leaf.adoc index f5414521..0e28d2c7 100644 --- a/docs/modules/ROOT/pages/tutorials/getting-started-leaf.adoc +++ b/docs/modules/ROOT/pages/tutorials/getting-started-leaf.adoc @@ -34,7 +34,7 @@ encoder output to the advertised dimensionality. The runtime applies it automati [source,kotlin] ---- dependencies { - implementation(platform("sk.ainet.transformers:skainet-transformers-bom:0.56.2")) + implementation(platform("sk.ainet.transformers:skainet-transformers-bom:0.57.0")) implementation("sk.ainet.transformers:skainet-transformers-providers") } ---- diff --git a/docs/modules/ROOT/pages/tutorials/llama3-tool-calling.adoc b/docs/modules/ROOT/pages/tutorials/llama3-tool-calling.adoc index 30b91b99..03cd064a 100644 --- a/docs/modules/ROOT/pages/tutorials/llama3-tool-calling.adoc +++ b/docs/modules/ROOT/pages/tutorials/llama3-tool-calling.adoc @@ -52,7 +52,7 @@ The pieces you need live in three modules: [source,kotlin] ---- dependencies { - implementation(platform("sk.ainet.transformers:skainet-transformers-bom:0.56.2")) + implementation(platform("sk.ainet.transformers:skainet-transformers-bom:0.57.0")) implementation("sk.ainet.transformers:skainet-transformers-runtime-kllama") implementation("sk.ainet.transformers:skainet-transformers-agent") From 131d1d75b9b954f88fba07f64d5428e8e421373b Mon Sep 17 00:00:00 2001 From: michalharakal Date: Fri, 25 Sep 2026 15:22:32 +0200 Subject: [PATCH 4/4] release: prepare 0.57.0 -- lock-step with engine 0.57.0 --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index cc3cc253..c0e454f3 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,5 +1,5 @@ GROUP=sk.ainet.transformers -VERSION_NAME=0.56.2 +VERSION_NAME=0.57.0 POM_DESCRIPTION=SKaiNET-transformers