diff --git a/CHANGELOG.md b/CHANGELOG.md index d99ebae0..c83e2e07 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,24 @@ ## [Unreleased] +## [0.32.2] - 2026-06-24 + +### Added + +- **`ExecutionContext.isRecording`.** A default-`false` `isRecording` on the lang-core + `ExecutionContext` interface, overridden by `GraphExecutionContext` (`currentTape?.isRecording`). + Lets modules with an eager fast-path that bypasses `ops.*` (e.g. RoPE's raw-array INTERLEAVED + rotation) detect tracing and emit a graph-traceable `ctx.ops.*` path — so they export to StableHLO + while keeping the fast path for eager inference — without depending on the compile-dag module. + Backward-compatible (existing `ExecutionContext` implementations inherit the default). (PR #757) + +### Changed + +- **Docs:** Antora docs version-currency (dependency snippets → current release) and broken-link + fixes across all pages (`.md` `link:` → `xref:`, dead `tensorflow.org/xla` → `openxla.org`, dead + `rfc.md`/`bench-prd.md` references, `ainet-sk` → `SKaiNET-developers`). (PR #758) +- **Dependency:** `ch.qos.logback:logback-classic` 1.5.34 → 1.5.35. (PR #756) + ## [0.32.1] - 2026-06-23 ### Fixed diff --git a/README.md b/README.md index aa40f463..7fc6ab71 100644 --- a/README.md +++ b/README.md @@ -36,7 +36,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.32.1")) + implementation(platform("sk.ainet:skainet-bom:0.32.2")) implementation("sk.ainet.core:skainet-lang-core") implementation("sk.ainet.core:skainet-backend-cpu") @@ -241,6 +241,15 @@ Runnable examples: --- +## What's New in 0.32.2 + +- **`ExecutionContext.isRecording`.** A default-`false` flag (overridden by the graph/tape context) + so a module with an eager fast-path that bypasses `ops.*` — e.g. RoPE's raw-array INTERLEAVED + rotation — can detect tracing and emit a graph-traceable `ctx.ops.*` path instead, exporting to + StableHLO while keeping the eager fast path. Backward-compatible. (PR #757) +- **Docs:** Antora version-currency + broken-link fixes across all pages (PR #758). +- **Dependency:** `ch.qos.logback:logback-classic` → 1.5.35 (#756). + ## What's New in 0.32.1 - **GroupNorm compiles on stock IREE.** The 0.32.0 GroupNorm converter emitted `@reduce_mean` / @@ -249,20 +258,10 @@ Runnable examples: the [`skainet-iree-conformance`](https://github.com/SKaiNET-developers/skainet-iree-conformance) harness (`iree-compile` + `iree-run-module` + numpy validate → PASS, `max_abs_err = 1.2e-7`). (PR #754) -## What's New in 0.32.0 - -- **GroupNorm StableHLO converter.** `groupNorm` now lowers to real `stablehlo.*` ops — reshape - `(N, C, *spatial)` into `(N, G, M)` groups → per-group `mean`/`variance` → normalize → reshape back → - optional per-channel `scale`/`offset`. Previously a `groupNorm` node fell through to the "operation - not supported" path. (PR #752) -- **Docs:** a SKEEP proposals module (PR #750) and a quantization-process explanation — - weights, activations, calibration (PR #747). -- **Dependencies:** `com.vanniktech.maven.publish` → 0.37.0 (#748), - `com.networknt:json-schema-validator` → 3.0.5 (#749), kotest → 6.2.1 (#744), - Gradle wrapper → 9.6.0 (#745), `actions/checkout` → 7 (#743). - ### Recent releases +- **0.32.0** — **GroupNorm StableHLO converter** (#752): `groupNorm` lowers to real `stablehlo.*` ops; plus a SKEEP proposals docs module (#750), a quantization-process explanation (#747), and dependency bumps. + - **0.31.2** — `RowDequantSource` + `ops.gather` row-dequant: a packed/oversized embedding (a Q-quantised `token_embd`) stays packed and is looked up via `ops.gather`, dequantising only the touched rows. (PR #741) - **0.31.0** — `ops.transpose` lazily handles every packed matmul dtype (Q8_0/Q4_0 added, completing the Q4_K/Q5_K/Q6_K/Q5_0/Q5_1/Q8_0/Q4_0 set); `json-schema-validator` → 3.0.4. (PRs #736, #737, #733) diff --git a/docs/modules/ROOT/pages/how-to/io-readers.adoc b/docs/modules/ROOT/pages/how-to/io-readers.adoc index f83aef2a..659e337d 100644 --- a/docs/modules/ROOT/pages/how-to/io-readers.adoc +++ b/docs/modules/ROOT/pages/how-to/io-readers.adoc @@ -20,7 +20,7 @@ Add the following dependencies to your `build.gradle.kts`: [source,kotlin] ---- dependencies { - implementation(platform("sk.ainet:skainet-bom:0.32.1")) + implementation(platform("sk.ainet:skainet-bom:0.32.2")) implementation("sk.ainet.core:skainet-io-gguf") implementation("org.jetbrains.kotlinx:kotlinx-io-core:0.8.2") @@ -32,7 +32,7 @@ dependencies { [source,kotlin] ---- dependencies { - implementation(platform("sk.ainet:skainet-bom:0.32.1")) + implementation(platform("sk.ainet:skainet-bom:0.32.2")) implementation("sk.ainet.core:skainet-io-onnx") implementation("org.jetbrains.kotlinx:kotlinx-io-core:0.8.2") diff --git a/docs/modules/ROOT/pages/how-to/java-model-training.adoc b/docs/modules/ROOT/pages/how-to/java-model-training.adoc index 5b9476d2..3a0bfa61 100644 --- a/docs/modules/ROOT/pages/how-to/java-model-training.adoc +++ b/docs/modules/ROOT/pages/how-to/java-model-training.adoc @@ -23,7 +23,7 @@ This guide covers building neural networks, defining loss functions and optimize sk.ainet skainet-bom - 0.32.1 + 0.32.2 pom import diff --git a/docs/modules/ROOT/pages/how-to/minerva-export.adoc b/docs/modules/ROOT/pages/how-to/minerva-export.adoc index 59d4409a..61c565cd 100644 --- a/docs/modules/ROOT/pages/how-to/minerva-export.adoc +++ b/docs/modules/ROOT/pages/how-to/minerva-export.adoc @@ -38,7 +38,7 @@ For a published application, use the SKaiNET BOM and the Minerva artifact: [source,kotlin] ---- dependencies { - implementation(platform("sk.ainet:skainet-bom:0.32.1")) + implementation(platform("sk.ainet:skainet-bom:0.32.2")) implementation("sk.ainet.core:skainet-compile-minerva") } ---- diff --git a/docs/modules/ROOT/pages/tutorials/image-data-getting-started.adoc b/docs/modules/ROOT/pages/tutorials/image-data-getting-started.adoc index 7c5d97cc..708ef994 100644 --- a/docs/modules/ROOT/pages/tutorials/image-data-getting-started.adoc +++ b/docs/modules/ROOT/pages/tutorials/image-data-getting-started.adoc @@ -32,7 +32,7 @@ For a JVM project, add the image/data modules alongside the CPU backend: [source,kotlin] ---- dependencies { - implementation(platform("sk.ainet:skainet-bom:0.32.1")) + implementation(platform("sk.ainet:skainet-bom:0.32.2")) implementation("sk.ainet:skainet-backend-cpu-jvm") implementation("sk.ainet:skainet-io-image-jvm") diff --git a/docs/modules/ROOT/pages/tutorials/java-getting-started.adoc b/docs/modules/ROOT/pages/tutorials/java-getting-started.adoc index 9ed9e9ed..2d91afac 100644 --- a/docs/modules/ROOT/pages/tutorials/java-getting-started.adoc +++ b/docs/modules/ROOT/pages/tutorials/java-getting-started.adoc @@ -46,7 +46,7 @@ The `skainet-bom` manages all SKaiNET module versions so you never have to keep ---- - 0.32.1 + 0.32.2 @@ -144,7 +144,7 @@ repositories { dependencies { // Import BOM for version alignment - implementation(platform("sk.ainet:skainet-bom:0.32.1")) + implementation(platform("sk.ainet:skainet-bom:0.32.2")) // Core tensor library implementation("sk.ainet:skainet-lang-core-jvm") diff --git a/gradle.properties b/gradle.properties index 8710a63a..b997cf5c 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,5 +1,5 @@ GROUP=sk.ainet.core -VERSION_NAME=0.32.1 +VERSION_NAME=0.32.2 POM_DESCRIPTION=SKaiNET POM_URL=https://github.com/SKaiNET-developers/skainet/