You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: CHANGELOG.md
+19Lines changed: 19 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -2,6 +2,25 @@
2
2
3
3
## [Unreleased]
4
4
5
+
## [0.28.1] - 2026-06-06
6
+
7
+
### Fixed
8
+
9
+
-**DAG-DSL StableHLO export now compiles end-to-end with IREE for the full conformance suite (7/7 models, 27/27 ops).** Shape-changing ops declared a result/return type inferred from operand-0 instead of the op's real output, so `iree-compile` rejected the modules (*"inferred shape … is incompatible with return type"*). `DagBuilder.inferDagOutputSpecs` now computes the correct output spec for:
10
+
-**`reshape`/`view`** — reads the target shape from the op's `newShape` parameter (a `Shape`, which the converter's `as? List<Int>` had missed). (#673, PR #674)
11
+
-**`matmul`/`dot`/`mm`/`bmm`** — `(…, M, K) @ (…, K, N) → (…, M, N)` instead of echoing operand-0. (#673, PR #674)
12
+
-**`concatenate`** — the corrected summed-axis extent propagates to the consumers and the `func.func` return type, not just the op line. (#673, PR #674)
13
+
-**`conv1d`** — windowed `(N, Cout, Lout)`; `conv2d` already inferred via `Conv2dOperation`, but `conv1d` was a `GenericOperation`. (#675, PR #676)
-**`flatten`** — collapses `[startDim..endDim]` while preserving the leading batch dim (it was collapsing everything to rank-1, breaking the dense layer in mnist-cnn). (#675, PR #676)
17
+
-**`reduce_window` is emitted in IREE's parseable generic region form.** Pooling previously used the pretty `… applies <op> over window …` form, which IREE rejects (*"has no custom assembly form"*). Now emits `"stablehlo.reduce_window"(…) ({ ^bb0(…): … })` with full NCHW-rank window attributes; average pooling's divisor is splatted to the output type (was a scalar-vs-tensor mismatch). (#675, PR #676)
18
+
-**`MlirValidator` understands region block arguments.** It now registers `^bb0(%a, %b)` block-argument SSA definitions and every `%x =` result on a line, so single-line region ops (e.g. `reduce_window`) validate. (PR #676)
19
+
20
+
### Changed
21
+
22
+
- Regenerated the JVM binary-compatibility baselines (`apiDump`) to match the public API exposed since 0.27.0 (`AttentionOperationsConverter`, multi-output port helpers, `KClass` dtype constructors).
@@ -193,13 +193,15 @@ deployment, the StableHLO path for native and edge targets.
193
193
194
194
---
195
195
196
-
## What's New in 0.28.0
196
+
## What's New in 0.28.1
197
197
198
-
-**Four StableHLO export bugs fixed — the Kotlin DSL → MLIR path lowers reshape, concatenate, constants, and reductions correctly.**`reshape` whose target shape lives only in an op parameter now lowers to a typed `stablehlo.reshape` (#666); multi-input `concatenate` sums the operands' extents on the concatenated axis instead of echoing operand-0's (`1×1 + 1×4 + 1×1` on dim 1 → `1×6`, not `1×1`) (#667); DAG constants are inlined into the module and reductions drop the reduced dimension (#663); and `HloGenerator`'s forward-pass tracing now binds the sample input and synthesizes external inputs so it emits real ops instead of a structure-only module (#668). (PRs #664, #670)
199
-
-**Non-JVM image runtime support.** Image and data-transform modules are scoped to their supported KMP targets, with a non-JVM image runtime so the image/data-transform APIs build honestly across targets. (PR #671)
198
+
-**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.
199
+
-**`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)
200
+
- Verified end-to-end by publishing each candidate to mavenLocal and running the `skainet-iree-conformance` harness before release.
200
201
201
202
### Recent releases
202
203
204
+
-**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)
203
205
-**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.)
204
206
-**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)
205
207
-**0.25.0** — BF16 and Q8_0 matmul kernels end-to-end across the provider stack, autograd completeness for `pow`/`log` and the conv/pool/upsample/split family, the hybrid adaptive dtype-constraint DSL, the `@DarcValidated` operator-doc flag, and the SentencePiece special-token splitter. (PRs #595, #605–#628)
Copy file name to clipboardExpand all lines: skainet-lang/skainet-lang-core/api/jvm/skainet-lang-core.api
+6-6Lines changed: 6 additions & 6 deletions
Original file line number
Diff line number
Diff line change
@@ -2019,8 +2019,8 @@ public final class sk/ainet/lang/nn/metrics/MetricKt {
2019
2019
}
2020
2020
2021
2021
public final class sk/ainet/lang/nn/normalization/BatchNormalization : sk/ainet/lang/nn/Module, sk/ainet/lang/nn/topology/ModuleParameters {
2022
-
public fun <init> (IDDZLjava/lang/String;Lsk/ainet/lang/tensor/Tensor;Lsk/ainet/lang/tensor/Tensor;)V
2023
-
public synthetic fun <init> (IDDZLjava/lang/String;Lsk/ainet/lang/tensor/Tensor;Lsk/ainet/lang/tensor/Tensor;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
2022
+
public fun <init> (IDDZLjava/lang/String;Lsk/ainet/lang/tensor/Tensor;Lsk/ainet/lang/tensor/Tensor;Lkotlin/reflect/KClass;)V
2023
+
public synthetic fun <init> (IDDZLjava/lang/String;Lsk/ainet/lang/tensor/Tensor;Lsk/ainet/lang/tensor/Tensor;Lkotlin/reflect/KClass;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
2024
2024
public final fun eval ()V
2025
2025
public fun forward (Lsk/ainet/lang/tensor/Tensor;Lsk/ainet/context/ExecutionContext;)Lsk/ainet/lang/tensor/Tensor;
2026
2026
public fun getModules ()Ljava/util/List;
@@ -2030,17 +2030,17 @@ public final class sk/ainet/lang/nn/normalization/BatchNormalization : sk/ainet/
2030
2030
}
2031
2031
2032
2032
public final class sk/ainet/lang/nn/normalization/GroupNormalization : sk/ainet/lang/nn/Module, sk/ainet/lang/nn/topology/ModuleParameters {
2033
-
public fun <init> (IIDZLjava/lang/String;Lsk/ainet/lang/tensor/Tensor;Lsk/ainet/lang/tensor/Tensor;)V
2034
-
public synthetic fun <init> (IIDZLjava/lang/String;Lsk/ainet/lang/tensor/Tensor;Lsk/ainet/lang/tensor/Tensor;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
2033
+
public fun <init> (IIDZLjava/lang/String;Lsk/ainet/lang/tensor/Tensor;Lsk/ainet/lang/tensor/Tensor;Lkotlin/reflect/KClass;)V
2034
+
public synthetic fun <init> (IIDZLjava/lang/String;Lsk/ainet/lang/tensor/Tensor;Lsk/ainet/lang/tensor/Tensor;Lkotlin/reflect/KClass;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
2035
2035
public fun forward (Lsk/ainet/lang/tensor/Tensor;Lsk/ainet/context/ExecutionContext;)Lsk/ainet/lang/tensor/Tensor;
2036
2036
public fun getModules ()Ljava/util/List;
2037
2037
public fun getName ()Ljava/lang/String;
2038
2038
public fun getParams ()Ljava/util/List;
2039
2039
}
2040
2040
2041
2041
public final class sk/ainet/lang/nn/normalization/LayerNormalization : sk/ainet/lang/nn/Module, sk/ainet/lang/nn/topology/ModuleParameters {
2042
-
public fun <init> ([IDZLjava/lang/String;Lsk/ainet/lang/tensor/Tensor;Lsk/ainet/lang/tensor/Tensor;)V
2043
-
public synthetic fun <init> ([IDZLjava/lang/String;Lsk/ainet/lang/tensor/Tensor;Lsk/ainet/lang/tensor/Tensor;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
2042
+
public fun <init> ([IDZLjava/lang/String;Lsk/ainet/lang/tensor/Tensor;Lsk/ainet/lang/tensor/Tensor;Lkotlin/reflect/KClass;)V
2043
+
public synthetic fun <init> ([IDZLjava/lang/String;Lsk/ainet/lang/tensor/Tensor;Lsk/ainet/lang/tensor/Tensor;Lkotlin/reflect/KClass;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
2044
2044
public fun forward (Lsk/ainet/lang/tensor/Tensor;Lsk/ainet/context/ExecutionContext;)Lsk/ainet/lang/tensor/Tensor;
0 commit comments