Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 12 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,18 @@

## [Unreleased]

Headline: **model-specific detector code leaves core; the reusable detection pieces stay.**
## [0.62.1] - 2026-10-21

Headline: **the native Q8_0 / Q4_0 / Q5_0 / Q5_1 kernel bindings no longer zero the earlier rows of a
multi-row product** (#1436, see *Fixed*). The defect was in the JVM FFM lane since those bindings exist: a
single-row product (a decode step) was right, every multi-row one kept only its last row, which made any
quantize-at-load encoder on the JVM with `skainet-backend-native-cpu` on the classpath — Laya on Q8_0 — answer
with uniform probabilities. CI never saw it because its classpath has no native provider; the LayaMoE example
did. Fix releases carry what develop holds: also the YOLO move-out below, the StableHLO softmax axis fixes, the
*Flexibility at every compile stage* explanation page (#1432) and the SKEEP-008 draft, *Precision and encoding
conversion* (#1434, tracking #1433).

Also in this release: **model-specific detector code leaves core; the reusable detection pieces stay.**

### Added

Expand Down
2 changes: 1 addition & 1 deletion CITATION.cff
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ authors:
orcid: https://orcid.org/0009-0006-7981-4075
- name: SKaiNET-developers contributors
website: https://github.com/SKaiNET-developers
version: "0.62.0"
version: "0.62.1"
date-released: "2026-10-21"
license: MIT
repository-code: https://github.com/SKaiNET-developers/SKaiNET
Expand Down
23 changes: 20 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ Add the core dependencies (Gradle Kotlin DSL):
```kotlin
dependencies {
// Recommended: import the umbrella BOM and drop versions on the engine modules.
implementation(platform("sk.ainet:skainet-bom:0.62.0"))
implementation(platform("sk.ainet:skainet-bom:0.62.1"))

implementation("sk.ainet.core:skainet-lang-core")
implementation("sk.ainet.core:skainet-backend-cpu")
Expand Down Expand Up @@ -308,7 +308,18 @@ val withoutLabel = dataPipeline<RawDataset>()

---

## What's New in 0.62.0
## What's New in 0.62.1

A fix release on top of 0.62.0: the native FFM bindings of the Q8_0, Q4_0, Q5_0 and Q5_1 kernels
copied a zero-filled staging buffer back from index 0, so a product served row by row — any
quantize-at-load encoder on the JVM with `skainet-backend-native-cpu` on the classpath — kept only
its last row. Single-row decode steps were never affected. A regression test now covers every packed
format for one, seven and fifty rows. Also: the YOLOv8 model code moves out of core into its cartridge
blueprint (`skainet-model-yolo` is gone; `Letterbox`, `BoundingBox` and `nonMaxSuppression` stay in
`skainet-data-media`), the StableHLO `softmax` axis and `logSoftmax` lowering are fixed, and the docs
gain *Flexibility at every compile stage* and the SKEEP-008 draft on precision and encoding conversion.

### Carried from 0.62.0

JVM ↔ Kotlin/Wasm parity: the browser tier runs the same kernels as the JVM, keeps its activations
in the sidecar, and reads models the way the JVM does — with every remaining difference documented.
Expand Down Expand Up @@ -359,6 +370,12 @@ We love contributions! Whether it's a new operator, documentation, or a bug fix:

Browse the full codebase documentation on [DeepWiki](https://deepwiki.com/SKaiNET-developers/SKaiNET).

### Contributors (0.62.1)

- **Michal Harakal** ([@michalharakal](https://github.com/michalharakal)) — the native packed-kernel
binding fix and its regression test, the YOLO move-out, the compile-flexibility explanation, the
SKEEP-008 draft, and the release

### Contributors (0.62.0)

- **Michal Harakal** ([@michalharakal](https://github.com/michalharakal)) — the JVM ↔ wasm parity
Expand Down Expand Up @@ -478,7 +495,7 @@ from it). Ready-to-paste BibTeX:
author = {Harakal, Michal and {SKaiNET-developers contributors}},
title = {{SKaiNET}: A {Kotlin} Multiplatform {AI} Framework},
year = {2026},
note = {Version 0.62.0. MIT License},
note = {Version 0.62.1. MIT License},
howpublished = {\url{https://github.com/SKaiNET-developers/SKaiNET}}
}
```
Expand Down
2 changes: 1 addition & 1 deletion docs/antora.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ asciidoc:
framework_name: SKaiNET
# Current SKaiNET release — bump once per release; referenced as
# {skainet_version} in dependency snippets (blocks need subs="attributes+").
skainet_version: 0.62.0
skainet_version: 0.62.1
ksp_version: 2.2.21-2.0.5
dokka_version: 2.1.0
asciidoctorj_version: 3.0.0
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
= Kernel × platform support matrix
:description: Which compute-kernel provider serves each weight format on each KMP target.

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

Each cell is the best (highest-priority) provider that serves `Float32 × format` `matmul` on that platform: *native-ffm* / *native-jni* / *native-cinterop* (100) → *panama-vector* / *wasm-simd128* (50) → *scalar* (0). An empty cell (`—`) means no provider carries a kernel there (the format is dequant-to-FP32 only). The JS/WASM column assumes `WasmSimd.install()` has run; without the sidecar it is the scalar floor.

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
= AI-NET Operators Reference

Generated from version `0.62.0` on 2026-10-21
Generated from version `0.62.1` on 2026-10-21

== Operators by Modality

Expand Down
2 changes: 1 addition & 1 deletion docs/modules/ROOT/pages/reference/ops-status-matrix.adoc
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
= Operator Coverage Matrix
:description: Cross-backend status for every operator function in SKaiNET.

Generated from `operators.json` version `0.62.0` on 2026-10-21.
Generated from `operators.json` version `0.62.1` on 2026-10-21.

Rows are `Operator.function` pairs. A gap is marked in source with `@NotImplemented(reason = …, issue = …)` (or `@InProgress`) and shows up here as ❌ (or 🚧) linked to its tracking issue; the PR that closes the gap removes the annotation. See xref:contributing/issue-taxonomy.adoc[Issue taxonomy] to pick one up.

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,12 +19,12 @@ An Android project with Kotlin. Add the SKaiNET modules:
[source,kotlin]
----
dependencies {
implementation("sk.ainet.core:skainet-lang-core:0.62.0") // tensors, DSL, training
implementation("sk.ainet.core:skainet-backend-cpu:0.62.0") // CPU ops
implementation("sk.ainet.core:skainet-compile-dag:0.62.0") // autograd (training context)
implementation("sk.ainet.core:skainet-data-api:0.62.0") // Dataset / DataBatch
implementation("sk.ainet.core:skainet-data-simple:0.62.0") // embedded Iris
runtimeOnly("sk.ainet.core:skainet-backend-jni-cpu:0.62.0") // NEON kernels (see below)
implementation("sk.ainet.core:skainet-lang-core:0.62.1") // tensors, DSL, training
implementation("sk.ainet.core:skainet-backend-cpu:0.62.1") // CPU ops
implementation("sk.ainet.core:skainet-compile-dag:0.62.1") // autograd (training context)
implementation("sk.ainet.core:skainet-data-api:0.62.1") // Dataset / DataBatch
implementation("sk.ainet.core:skainet-data-simple:0.62.1") // embedded Iris
runtimeOnly("sk.ainet.core:skainet-backend-jni-cpu:0.62.1") // NEON kernels (see below)
}
----

Expand Down
2 changes: 1 addition & 1 deletion gradle.properties
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
GROUP=sk.ainet.core
VERSION_NAME=0.62.0
VERSION_NAME=0.62.1
POM_DESCRIPTION=SKaiNET

POM_URL=https://github.com/SKaiNET-developers/skainet/
Expand Down
Loading