Skip to content

Commit 6bd12e4

Browse files
michalharakalclaude
andcommitted
release: prepare 0.29.0
Bump VERSION_NAME to 0.29.0 and prepare release notes. - CHANGELOG: add [0.29.0] section (Minerva secure-MCU export module, packed-quant matmul kernels Q5_0/Q5_1/Q4_K/Q6_K with Native parity + Panama SIMD, auto-generated CI-gated kernel matrix, docs/tests/deps). - README: bump BOM coordinate, rewrite "What's New" for 0.29.0, demote 0.28.1 into Recent releases. - docs: bump skainet-bom coordinates to 0.29.0 (io-readers, minerva-export, java-getting-started); regenerate kernel-support-matrix. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
1 parent 1dec383 commit 6bd12e4

7 files changed

Lines changed: 47 additions & 11 deletions

File tree

CHANGELOG.md

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,41 @@
22

33
## [Unreleased]
44

5+
## [0.29.0] - 2026-06-09
6+
7+
### Added
8+
9+
- **Minerva secure-MCU export module.** A new export pipeline that takes a SKaiNET model all the way to a secure microcontroller project bundle, built up in phases:
10+
- **Shared graph-export contracts.** A backend-agnostic export contract layer (`feat(export)`), with a StableHLO graph-export adapter that exposes the existing HLO path through those contracts. (#697, #698, #702)
11+
- **Module API scaffold.** The Minerva export module's public API surface. (#700)
12+
- **Phase-one graph-compatibility validation.** Validates that a graph is exportable before any lowering work begins. (#701)
13+
- **IR lowering + npz compiler input.** Compatible graphs lower to Minerva IR (#704) and emit an `.npz` compiler input (#706).
14+
- **Compiler packager + host verification.** A packager flow that drives libminerva packaging, plus a host-verification flow and runtime-verification profile that prove the exported bundle on the host before it ships. (#706, #712, #714, #716, #717, #721, #725)
15+
- **Manifest fingerprinting.** Generated manifest artifacts are fingerprinted so bundle contents are tamper-evident. (#724)
16+
- **Runnable sample + examples + docs.** A runnable sample task and runner, secure MCU export examples, an ONNX export workflow, getting-started / explanation pages, and model-source guidance. (#707, #712, #719, #725)
17+
- **Packed-quant matmul kernels with Kotlin/Native parity.** Q5_0, Q5_1, Q4_K, and Q6_K gain matmul support across the provider stack:
18+
- **commonMain scalar kernels + SPI** for Q5_1/Q5_0/Q4_K/Q6_K, giving Kotlin/Native parity with the JVM path. (#710, #711)
19+
- **Packed-quant matmul dispatch in `DefaultCpuOpsBase`** so the packed-quant path is selected on Native, not just JVM. (#709, #711)
20+
- **Panama Vector (JVM SIMD) kernels** for Q5_1/Q5_0 (#709) and Q6_K, with Q6_K routed via the `KernelRegistry`. (#715, #720)
21+
- **Packed Q5_1/Q5_0 matmul kernels + lazy transpose** on the CPU backend. (#709)
22+
23+
### Changed
24+
25+
- **Kernel × platform support matrix is auto-generated and CI-gated.** The kernel/platform support matrix is now rendered through the build-logic → Antora pipeline (the same pipeline as the ops docs) from a CI-gated source, so it can't drift from the code. (#716, #724)
26+
27+
### Docs
28+
29+
- Refreshed the architecture kernel-provider section (native FFM ships; link matrix). (#726)
30+
- Eager-execution backends & kernels mindmap, refreshed after Panama Q6_K. (#720, #723)
31+
32+
### Tests
33+
34+
- Hardened CI browser tests against launch flakiness under `allTests` (Karma) and raised the Mocha timeout 10s → 60s for the micrograd demo. (#703, #705)
35+
36+
### Dependencies
37+
38+
- Bumped `io.github.optimumcode:json-schema-validator` to 0.5.5. (#713)
39+
540
## [0.28.1] - 2026-06-06
641

742
### Fixed

README.md

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ Add the core dependencies (Gradle Kotlin DSL):
3636
```kotlin
3737
dependencies {
3838
// Recommended: import the umbrella BOM and drop versions on the engine modules.
39-
implementation(platform("sk.ainet:skainet-bom:0.28.1"))
39+
implementation(platform("sk.ainet:skainet-bom:0.29.0"))
4040

4141
implementation("sk.ainet.core:skainet-lang-core")
4242
implementation("sk.ainet.core:skainet-backend-cpu")
@@ -227,14 +227,15 @@ Runnable examples:
227227

228228
---
229229

230-
## What's New in 0.28.1
230+
## What's New in 0.29.0
231231

232-
- **The Kotlin DSL → StableHLO → IREE path is green end-to-end for the whole conformance suite — 7/7 models and 27/27 ops `iree-compile` to a `vmfb`** (grayscale, tiny-mlp, whisper, mnist-cnn, yolo, leaf-embed, gemma3-260m). Shape-changing ops had been declaring a result/return type from operand-0 instead of their real output, so IREE rejected the modules. `inferDagOutputSpecs` now computes the correct output spec for `reshape`, `matmul`, `concatenate` (#673), and `conv1d`, `gather`, `maxpool2d`/`avgpool2d`, `flatten` (#675), and the corrected shapes flow to both the op result type and the `func.func` return.
233-
- **`reduce_window` (pooling) is emitted in IREE's generic region form** instead of the pretty `applies … over window` form IREE rejects; the `MlirValidator` now understands region block arguments. (#675, PR #676)
234-
- Verified end-to-end by publishing each candidate to mavenLocal and running the `skainet-iree-conformance` harness before release.
232+
- **Minerva secure-MCU export module.** A new end-to-end pipeline that lowers a SKaiNET model through shared graph-export contracts → Minerva IR → an `.npz` compiler input → a libminerva-packaged secure MCU project bundle, with host-side runtime verification and fingerprinted manifest artifacts. Ships with a runnable sample, secure-MCU export examples, an ONNX export workflow, and getting-started docs. (PRs #697#726)
233+
- **Packed-quant matmul kernels with Kotlin/Native parity.** Q5_0, Q5_1, Q4_K, and Q6_K gain matmul across the full provider stack: commonMain scalar kernels + SPI (Native parity), packed-quant dispatch in `DefaultCpuOpsBase`, and Panama Vector (JVM SIMD) kernels for Q5_1/Q5_0 and Q6_K routed via the `KernelRegistry`. (PRs #709#720)
234+
- **Auto-generated, CI-gated kernel × platform support matrix** rendered through the build-logic → Antora pipeline, so the docs can't drift from the code. (PRs #716, #724)
235235

236236
### Recent releases
237237

238+
- **0.28.1** — Kotlin DSL → StableHLO → IREE is green end-to-end for the whole conformance suite (7/7 models, 27/27 ops compile to a `vmfb`): `inferDagOutputSpecs` now infers correct output shapes for shape-changing ops, and `reduce_window` (pooling) emits IREE's generic region form. (PRs #674, #676)
238239
- **0.28.0** — Four StableHLO export bugs fixed (reshape #666, concatenate #667, constants/reductions #663, `HloGenerator` tracing #668) plus non-JVM image runtime support (#671). (PRs #664, #670, #671)
239240
- **0.27.0** — A full gemma3 network lowers to StableHLO and compiles to an IREE `vmfb` (zero op gaps, verified by `GemmaTraceTest`): new `scaledDotProductAttention` (with causal + explicit additive mask), `permute`, `narrow`, and multi-output `split` converters, plus boxing-free `FloatArray` weight externalization for `.irpa` baking. (PRs #661 et al.)
240241
- **0.26.0** — Q4_0 promoted to a first-class quantized format across the provider stack, `tanh` as a first-class activation primitive, and a CPU tensor `convert` op, plus test/build/CI hygiene. (PRs #648#651, #631, #636)

docs/modules/ROOT/pages/how-to/io-readers.adoc

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ Add the following dependencies to your `build.gradle.kts`:
2020
[source,kotlin]
2121
----
2222
dependencies {
23-
implementation(platform("sk.ainet:skainet-bom:0.27.0"))
23+
implementation(platform("sk.ainet:skainet-bom:0.29.0"))
2424
2525
implementation("sk.ainet.core:skainet-io-gguf")
2626
implementation("org.jetbrains.kotlinx:kotlinx-io-core:0.8.2")
@@ -32,7 +32,7 @@ dependencies {
3232
[source,kotlin]
3333
----
3434
dependencies {
35-
implementation(platform("sk.ainet:skainet-bom:0.27.0"))
35+
implementation(platform("sk.ainet:skainet-bom:0.29.0"))
3636
3737
implementation("sk.ainet.core:skainet-io-onnx")
3838
implementation("org.jetbrains.kotlinx:kotlinx-io-core:0.8.2")

docs/modules/ROOT/pages/how-to/minerva-export.adoc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ For a published application, use the SKaiNET BOM and the Minerva artifact:
3838
[source,kotlin]
3939
----
4040
dependencies {
41-
implementation(platform("sk.ainet:skainet-bom:0.28.1"))
41+
implementation(platform("sk.ainet:skainet-bom:0.29.0"))
4242
implementation("sk.ainet.core:skainet-compile-minerva")
4343
}
4444
----

docs/modules/ROOT/pages/reference/kernel-support-matrix.adoc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
= Kernel × platform support matrix
22
:description: Which compute-kernel provider serves each weight format on each KMP target.
33

4-
Generated from `kernel-support.json` (version `0.28.1`) by `KernelSupportMatrixTest` — registry introspection of the registered `KernelProvider` implementations. Do not edit by hand; run `./gradlew generateKernelMatrix` to refresh.
4+
Generated from `kernel-support.json` (version `0.29.0`) by `KernelSupportMatrixTest` — registry introspection of the registered `KernelProvider` implementations. Do not edit by hand; run `./gradlew generateKernelMatrix` to refresh.
55

66
Each cell is the best (highest-priority) provider that serves `Float32 × format` `matmul` on that platform: *native-ffm* (100) → *panama-vector* (50) → *scalar* (0). An empty cell (`—`) means no provider carries a kernel there (the format is dequant-to-FP32 only).
77

docs/modules/ROOT/pages/tutorials/java-getting-started.adoc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -144,7 +144,7 @@ repositories {
144144
145145
dependencies {
146146
// Import BOM for version alignment
147-
implementation(platform("sk.ainet:skainet-bom:0.27.0"))
147+
implementation(platform("sk.ainet:skainet-bom:0.29.0"))
148148
149149
// Core tensor library
150150
implementation("sk.ainet:skainet-lang-core-jvm")

gradle.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
GROUP=sk.ainet.core
2-
VERSION_NAME=0.28.1
2+
VERSION_NAME=0.29.0
33
POM_DESCRIPTION=SKaiNET
44

55
POM_URL=https://github.com/SKaiNET-developers/skainet/

0 commit comments

Comments
 (0)