Skip to content

Bump skainet from 0.32.3 to 0.33.0#148

Closed
dependabot[bot] wants to merge 1 commit into
developfrom
dependabot/gradle/skainet-0.33.0
Closed

Bump skainet from 0.32.3 to 0.33.0#148
dependabot[bot] wants to merge 1 commit into
developfrom
dependabot/gradle/skainet-0.33.0

Conversation

@dependabot

@dependabot dependabot Bot commented on behalf of github Jun 30, 2026

Copy link
Copy Markdown
Contributor

Bumps skainet from 0.32.3 to 0.33.0.
Updates sk.ainet.core:skainet-lang-core from 0.32.3 to 0.33.0

Changelog

Sourced from sk.ainet.core:skainet-lang-core's changelog.

[0.33.0] - 2026-06-29

Added

  • GRU layer (sk.ainet.lang.nn.Gru). SKaiNET's first recurrent layer (issue #217): single-layer, unidirectional, batch-first [B, S, D] -> [B, S, H], PyTorch gate order (reset, update, new). Built by composing existing primitives (matmul/add/sigmoid/tanh/narrow/concat) unrolled over the static sequence length at trace time — StableHLO has no loop construct, so any recurrence must unroll. It runs eagerly, is trainable through the standard tape, and exports to StableHLO with no dedicated converter. Also adds a gru(hiddenSize) { … } network-DSL builder. (PR #772)
  • upsample2d Bilinear + StableHLO export. Adds the Bilinear forward (PyTorch coord map, 4-neighbour blend) and its autodiff backward, and a traceable StableHLO lowering for both Nearest and Bilinear (scale is static at trace time, so everything lowers to fixed reshape/broadcast/dot_general — no runtime index math, no custom_call). Unblocks export of resize/FPN-style paths. (PR #771)
  • Seven newly-differentiable ops. cos, sin, tril, gather, indexSelect, unfold, convTranspose1d now carry @Diff and have backward rules (with finite-difference parity tests): trig for RoPE, gather for embedding lookup, tril for causal masks, the rest structural. (PR #774)
  • KSP-generated autodiff-coverage guard. The tracing-wrapper processor now emits DifferentiableTensorOpsRules.ruleNames (the authoritative @Diff op set); a unit test asserts the execution tape's dispatch covers it, so a differentiable op can no longer ship with a backward rule that is never wired. operators.json now records isDifferentiable (+ optional diffRuleName), schema-validated. (PR #774)

Fixed

  • Silent gradient drop for elu, leakyRelu, permute. These were @Diff and had correct backward formulas, but had no arm in the execution tape's trace dispatch, so their gradients fell through to null and were silently discarded. Now wired (and guarded by the coverage test above); permuteBackward also fixed to decode its axes attribute as the traced List<Int>. (PR #774)
  • layerNorm / rmsNorm / batchNorm lower to real stablehlo.reduce. The norm converters previously emitted non-compilable reduce_mean / reduce_variance custom_calls (export-only); they now decompose to real stablehlo.reduce, so all three compile and run on stock IREE (llvm-cpu). (PR #769)

Changed

  • BREAKING: TensorOps.sin, TensorOps.cos, TensorOps.convTranspose1d are now abstract. They previously had default throw NotImplementedError(...) bodies; they are abstract so the tracing wrapper records them (and they become differentiable/exportable). Any type implementing TensorOps directly must now override them — both bundled backends (DefaultCpuOpsBase, VoidTensorOps) already do. (PR #774)

[0.32.4] - 2026-06-26

Fixed

  • Streaming detokenization preserves word-boundary spaces (Tokenizer.decodeToken). A generation loop that decodes one token at a time (decode(tokenId)) ran words together ("the process""theprocess"): the single-token path delegated to the sequence-level SentencePieceTokenizer.decode(IntArray), whose addSpacePrefix leading-space strip is only correct once per sequence. Adds Tokenizer.decodeToken(id) (default = decode(intArrayOf(id))) and

... (truncated)

Commits
  • bade11c release: 0.33.0 — GRU, upsample2d Bilinear export, autodiff coverage fix
  • c785151 Merge pull request #774 from SKaiNET-developers/feat/autodiff-coverage
  • 75527fb feat(autodiff): close dispatch gaps + KSP-generated coverage guard #773
  • 5351684 Merge pull request #772 from SKaiNET-developers/feat/gru-module
  • 2749917 feat(nn): add GRU layer (composed, trainable, StableHLO-exportable) #217
  • a1e40e8 Merge pull request #771 from SKaiNET-developers/feat/upsample2d-stablehlo
  • 2959e05 ci: actualize Kotlin/JS yarn.lock (ws -> 8.20.1)
  • 7b71386 feat(upsample2d): Bilinear (eager+autodiff) + traceable StableHLO lowering fo...
  • 27138a5 Merge pull request #768 from SKaiNET-developers/perf/q6k-neon-kernel
  • c67f515 ci: actualize Kotlin/Wasm yarn.lock (ws 8.18.3 -> 8.20.1)
  • Additional commits viewable in compare view

Updates sk.ainet.core:skainet-lang-models from 0.32.3 to 0.33.0

Changelog

Sourced from sk.ainet.core:skainet-lang-models's changelog.

[0.33.0] - 2026-06-29

Added

  • GRU layer (sk.ainet.lang.nn.Gru). SKaiNET's first recurrent layer (issue #217): single-layer, unidirectional, batch-first [B, S, D] -> [B, S, H], PyTorch gate order (reset, update, new). Built by composing existing primitives (matmul/add/sigmoid/tanh/narrow/concat) unrolled over the static sequence length at trace time — StableHLO has no loop construct, so any recurrence must unroll. It runs eagerly, is trainable through the standard tape, and exports to StableHLO with no dedicated converter. Also adds a gru(hiddenSize) { … } network-DSL builder. (PR #772)
  • upsample2d Bilinear + StableHLO export. Adds the Bilinear forward (PyTorch coord map, 4-neighbour blend) and its autodiff backward, and a traceable StableHLO lowering for both Nearest and Bilinear (scale is static at trace time, so everything lowers to fixed reshape/broadcast/dot_general — no runtime index math, no custom_call). Unblocks export of resize/FPN-style paths. (PR #771)
  • Seven newly-differentiable ops. cos, sin, tril, gather, indexSelect, unfold, convTranspose1d now carry @Diff and have backward rules (with finite-difference parity tests): trig for RoPE, gather for embedding lookup, tril for causal masks, the rest structural. (PR #774)
  • KSP-generated autodiff-coverage guard. The tracing-wrapper processor now emits DifferentiableTensorOpsRules.ruleNames (the authoritative @Diff op set); a unit test asserts the execution tape's dispatch covers it, so a differentiable op can no longer ship with a backward rule that is never wired. operators.json now records isDifferentiable (+ optional diffRuleName), schema-validated. (PR #774)

Fixed

  • Silent gradient drop for elu, leakyRelu, permute. These were @Diff and had correct backward formulas, but had no arm in the execution tape's trace dispatch, so their gradients fell through to null and were silently discarded. Now wired (and guarded by the coverage test above); permuteBackward also fixed to decode its axes attribute as the traced List<Int>. (PR #774)
  • layerNorm / rmsNorm / batchNorm lower to real stablehlo.reduce. The norm converters previously emitted non-compilable reduce_mean / reduce_variance custom_calls (export-only); they now decompose to real stablehlo.reduce, so all three compile and run on stock IREE (llvm-cpu). (PR #769)

Changed

  • BREAKING: TensorOps.sin, TensorOps.cos, TensorOps.convTranspose1d are now abstract. They previously had default throw NotImplementedError(...) bodies; they are abstract so the tracing wrapper records them (and they become differentiable/exportable). Any type implementing TensorOps directly must now override them — both bundled backends (DefaultCpuOpsBase, VoidTensorOps) already do. (PR #774)

[0.32.4] - 2026-06-26

Fixed

  • Streaming detokenization preserves word-boundary spaces (Tokenizer.decodeToken). A generation loop that decodes one token at a time (decode(tokenId)) ran words together ("the process""theprocess"): the single-token path delegated to the sequence-level SentencePieceTokenizer.decode(IntArray), whose addSpacePrefix leading-space strip is only correct once per sequence. Adds Tokenizer.decodeToken(id) (default = decode(intArrayOf(id))) and

... (truncated)

Commits
  • bade11c release: 0.33.0 — GRU, upsample2d Bilinear export, autodiff coverage fix
  • c785151 Merge pull request #774 from SKaiNET-developers/feat/autodiff-coverage
  • 75527fb feat(autodiff): close dispatch gaps + KSP-generated coverage guard #773
  • 5351684 Merge pull request #772 from SKaiNET-developers/feat/gru-module
  • 2749917 feat(nn): add GRU layer (composed, trainable, StableHLO-exportable) #217
  • a1e40e8 Merge pull request #771 from SKaiNET-developers/feat/upsample2d-stablehlo
  • 2959e05 ci: actualize Kotlin/JS yarn.lock (ws -> 8.20.1)
  • 7b71386 feat(upsample2d): Bilinear (eager+autodiff) + traceable StableHLO lowering fo...
  • 27138a5 Merge pull request #768 from SKaiNET-developers/perf/q6k-neon-kernel
  • c67f515 ci: actualize Kotlin/Wasm yarn.lock (ws 8.18.3 -> 8.20.1)
  • Additional commits viewable in compare view

Updates sk.ainet.core:skainet-model-yolo from 0.32.3 to 0.33.0

Changelog

Sourced from sk.ainet.core:skainet-model-yolo's changelog.

[0.33.0] - 2026-06-29

Added

  • GRU layer (sk.ainet.lang.nn.Gru). SKaiNET's first recurrent layer (issue #217): single-layer, unidirectional, batch-first [B, S, D] -> [B, S, H], PyTorch gate order (reset, update, new). Built by composing existing primitives (matmul/add/sigmoid/tanh/narrow/concat) unrolled over the static sequence length at trace time — StableHLO has no loop construct, so any recurrence must unroll. It runs eagerly, is trainable through the standard tape, and exports to StableHLO with no dedicated converter. Also adds a gru(hiddenSize) { … } network-DSL builder. (PR #772)
  • upsample2d Bilinear + StableHLO export. Adds the Bilinear forward (PyTorch coord map, 4-neighbour blend) and its autodiff backward, and a traceable StableHLO lowering for both Nearest and Bilinear (scale is static at trace time, so everything lowers to fixed reshape/broadcast/dot_general — no runtime index math, no custom_call). Unblocks export of resize/FPN-style paths. (PR #771)
  • Seven newly-differentiable ops. cos, sin, tril, gather, indexSelect, unfold, convTranspose1d now carry @Diff and have backward rules (with finite-difference parity tests): trig for RoPE, gather for embedding lookup, tril for causal masks, the rest structural. (PR #774)
  • KSP-generated autodiff-coverage guard. The tracing-wrapper processor now emits DifferentiableTensorOpsRules.ruleNames (the authoritative @Diff op set); a unit test asserts the execution tape's dispatch covers it, so a differentiable op can no longer ship with a backward rule that is never wired. operators.json now records isDifferentiable (+ optional diffRuleName), schema-validated. (PR #774)

Fixed

  • Silent gradient drop for elu, leakyRelu, permute. These were @Diff and had correct backward formulas, but had no arm in the execution tape's trace dispatch, so their gradients fell through to null and were silently discarded. Now wired (and guarded by the coverage test above); permuteBackward also fixed to decode its axes attribute as the traced List<Int>. (PR #774)
  • layerNorm / rmsNorm / batchNorm lower to real stablehlo.reduce. The norm converters previously emitted non-compilable reduce_mean / reduce_variance custom_calls (export-only); they now decompose to real stablehlo.reduce, so all three compile and run on stock IREE (llvm-cpu). (PR #769)

Changed

  • BREAKING: TensorOps.sin, TensorOps.cos, TensorOps.convTranspose1d are now abstract. They previously had default throw NotImplementedError(...) bodies; they are abstract so the tracing wrapper records them (and they become differentiable/exportable). Any type implementing TensorOps directly must now override them — both bundled backends (DefaultCpuOpsBase, VoidTensorOps) already do. (PR #774)

[0.32.4] - 2026-06-26

Fixed

  • Streaming detokenization preserves word-boundary spaces (Tokenizer.decodeToken). A generation loop that decodes one token at a time (decode(tokenId)) ran words together ("the process""theprocess"): the single-token path delegated to the sequence-level SentencePieceTokenizer.decode(IntArray), whose addSpacePrefix leading-space strip is only correct once per sequence. Adds Tokenizer.decodeToken(id) (default = decode(intArrayOf(id))) and

... (truncated)

Commits
  • bade11c release: 0.33.0 — GRU, upsample2d Bilinear export, autodiff coverage fix
  • c785151 Merge pull request #774 from SKaiNET-developers/feat/autodiff-coverage
  • 75527fb feat(autodiff): close dispatch gaps + KSP-generated coverage guard #773
  • 5351684 Merge pull request #772 from SKaiNET-developers/feat/gru-module
  • 2749917 feat(nn): add GRU layer (composed, trainable, StableHLO-exportable) #217
  • a1e40e8 Merge pull request #771 from SKaiNET-developers/feat/upsample2d-stablehlo
  • 2959e05 ci: actualize Kotlin/JS yarn.lock (ws -> 8.20.1)
  • 7b71386 feat(upsample2d): Bilinear (eager+autodiff) + traceable StableHLO lowering fo...
  • 27138a5 Merge pull request #768 from SKaiNET-developers/perf/q6k-neon-kernel
  • c67f515 ci: actualize Kotlin/Wasm yarn.lock (ws 8.18.3 -> 8.20.1)
  • Additional commits viewable in compare view

Updates sk.ainet.core:skainet-lang-dag from 0.32.3 to 0.33.0

Changelog

Sourced from sk.ainet.core:skainet-lang-dag's changelog.

[0.33.0] - 2026-06-29

Added

  • GRU layer (sk.ainet.lang.nn.Gru). SKaiNET's first recurrent layer (issue #217): single-layer, unidirectional, batch-first [B, S, D] -> [B, S, H], PyTorch gate order (reset, update, new). Built by composing existing primitives (matmul/add/sigmoid/tanh/narrow/concat) unrolled over the static sequence length at trace time — StableHLO has no loop construct, so any recurrence must unroll. It runs eagerly, is trainable through the standard tape, and exports to StableHLO with no dedicated converter. Also adds a gru(hiddenSize) { … } network-DSL builder. (PR #772)
  • upsample2d Bilinear + StableHLO export. Adds the Bilinear forward (PyTorch coord map, 4-neighbour blend) and its autodiff backward, and a traceable StableHLO lowering for both Nearest and Bilinear (scale is static at trace time, so everything lowers to fixed reshape/broadcast/dot_general — no runtime index math, no custom_call). Unblocks export of resize/FPN-style paths. (PR #771)
  • Seven newly-differentiable ops. cos, sin, tril, gather, indexSelect, unfold, convTranspose1d now carry @Diff and have backward rules (with finite-difference parity tests): trig for RoPE, gather for embedding lookup, tril for causal masks, the rest structural. (PR #774)
  • KSP-generated autodiff-coverage guard. The tracing-wrapper processor now emits DifferentiableTensorOpsRules.ruleNames (the authoritative @Diff op set); a unit test asserts the execution tape's dispatch covers it, so a differentiable op can no longer ship with a backward rule that is never wired. operators.json now records isDifferentiable (+ optional diffRuleName), schema-validated. (PR #774)

Fixed

  • Silent gradient drop for elu, leakyRelu, permute. These were @Diff and had correct backward formulas, but had no arm in the execution tape's trace dispatch, so their gradients fell through to null and were silently discarded. Now wired (and guarded by the coverage test above); permuteBackward also fixed to decode its axes attribute as the traced List<Int>. (PR #774)
  • layerNorm / rmsNorm / batchNorm lower to real stablehlo.reduce. The norm converters previously emitted non-compilable reduce_mean / reduce_variance custom_calls (export-only); they now decompose to real stablehlo.reduce, so all three compile and run on stock IREE (llvm-cpu). (PR #769)

Changed

  • BREAKING: TensorOps.sin, TensorOps.cos, TensorOps.convTranspose1d are now abstract. They previously had default throw NotImplementedError(...) bodies; they are abstract so the tracing wrapper records them (and they become differentiable/exportable). Any type implementing TensorOps directly must now override them — both bundled backends (DefaultCpuOpsBase, VoidTensorOps) already do. (PR #774)

[0.32.4] - 2026-06-26

Fixed

  • Streaming detokenization preserves word-boundary spaces (Tokenizer.decodeToken). A generation loop that decodes one token at a time (decode(tokenId)) ran words together ("the process""theprocess"): the single-token path delegated to the sequence-level SentencePieceTokenizer.decode(IntArray), whose addSpacePrefix leading-space strip is only correct once per sequence. Adds Tokenizer.decodeToken(id) (default = decode(intArrayOf(id))) and

... (truncated)

Commits
  • bade11c release: 0.33.0 — GRU, upsample2d Bilinear export, autodiff coverage fix
  • c785151 Merge pull request #774 from SKaiNET-developers/feat/autodiff-coverage
  • 75527fb feat(autodiff): close dispatch gaps + KSP-generated coverage guard #773
  • 5351684 Merge pull request #772 from SKaiNET-developers/feat/gru-module
  • 2749917 feat(nn): add GRU layer (composed, trainable, StableHLO-exportable) #217
  • a1e40e8 Merge pull request #771 from SKaiNET-developers/feat/upsample2d-stablehlo
  • 2959e05 ci: actualize Kotlin/JS yarn.lock (ws -> 8.20.1)
  • 7b71386 feat(upsample2d): Bilinear (eager+autodiff) + traceable StableHLO lowering fo...
  • 27138a5 Merge pull request #768 from SKaiNET-developers/perf/q6k-neon-kernel
  • c67f515 ci: actualize Kotlin/Wasm yarn.lock (ws 8.18.3 -> 8.20.1)
  • Additional commits viewable in compare view

Updates sk.ainet.core:skainet-compile-core from 0.32.3 to 0.33.0

Changelog

Sourced from sk.ainet.core:skainet-compile-core's changelog.

[0.33.0] - 2026-06-29

Added

  • GRU layer (sk.ainet.lang.nn.Gru). SKaiNET's first recurrent layer (issue #217): single-layer, unidirectional, batch-first [B, S, D] -> [B, S, H], PyTorch gate order (reset, update, new). Built by composing existing primitives (matmul/add/sigmoid/tanh/narrow/concat) unrolled over the static sequence length at trace time — StableHLO has no loop construct, so any recurrence must unroll. It runs eagerly, is trainable through the standard tape, and exports to StableHLO with no dedicated converter. Also adds a gru(hiddenSize) { … } network-DSL builder. (PR #772)
  • upsample2d Bilinear + StableHLO export. Adds the Bilinear forward (PyTorch coord map, 4-neighbour blend) and its autodiff backward, and a traceable StableHLO lowering for both Nearest and Bilinear (scale is static at trace time, so everything lowers to fixed reshape/broadcast/dot_general — no runtime index math, no custom_call). Unblocks export of resize/FPN-style paths. (PR #771)
  • Seven newly-differentiable ops. cos, sin, tril, gather, indexSelect, unfold, convTranspose1d now carry @Diff and have backward rules (with finite-difference parity tests): trig for RoPE, gather for embedding lookup, tril for causal masks, the rest structural. (PR #774)
  • KSP-generated autodiff-coverage guard. The tracing-wrapper processor now emits DifferentiableTensorOpsRules.ruleNames (the authoritative @Diff op set); a unit test asserts the execution tape's dispatch covers it, so a differentiable op can no longer ship with a backward rule that is never wired. operators.json now records isDifferentiable (+ optional diffRuleName), schema-validated. (PR #774)

Fixed

  • Silent gradient drop for elu, leakyRelu, permute. These were @Diff and had correct backward formulas, but had no arm in the execution tape's trace dispatch, so their gradients fell through to null and were silently discarded. Now wired (and guarded by the coverage test above); permuteBackward also fixed to decode its axes attribute as the traced List<Int>. (PR #774)
  • layerNorm / rmsNorm / batchNorm lower to real stablehlo.reduce. The norm converters previously emitted non-compilable reduce_mean / reduce_variance custom_calls (export-only); they now decompose to real stablehlo.reduce, so all three compile and run on stock IREE (llvm-cpu). (PR #769)

Changed

  • BREAKING: TensorOps.sin, TensorOps.cos, TensorOps.convTranspose1d are now abstract. They previously had default throw NotImplementedError(...) bodies; they are abstract so the tracing wrapper records them (and they become differentiable/exportable). Any type implementing TensorOps directly must now override them — both bundled backends (DefaultCpuOpsBase, VoidTensorOps) already do. (PR #774)

[0.32.4] - 2026-06-26

Fixed

  • Streaming detokenization preserves word-boundary spaces (Tokenizer.decodeToken). A generation loop that decodes one token at a time (decode(tokenId)) ran words together ("the process""theprocess"): the single-token path delegated to the sequence-level SentencePieceTokenizer.decode(IntArray), whose addSpacePrefix leading-space strip is only correct once per sequence. Adds Tokenizer.decodeToken(id) (default = decode(intArrayOf(id))) and

... (truncated)

Commits
  • bade11c release: 0.33.0 — GRU, upsample2d Bilinear export, autodiff coverage fix
  • c785151 Merge pull request #774 from SKaiNET-developers/feat/autodiff-coverage
  • 75527fb feat(autodiff): close dispatch gaps + KSP-generated coverage guard #773
  • 5351684 Merge pull request #772 from SKaiNET-developers/feat/gru-module
  • 2749917 feat(nn): add GRU layer (composed, trainable, StableHLO-exportable) #217
  • a1e40e8 Merge pull request #771 from SKaiNET-developers/feat/upsample2d-stablehlo
  • 2959e05 ci: actualize Kotlin/JS yarn.lock (ws -> 8.20.1)
  • 7b71386 feat(upsample2d): Bilinear (eager+autodiff) + traceable StableHLO lowering fo...
  • 27138a5 Merge pull request #768 from SKaiNET-developers/perf/q6k-neon-kernel
  • c67f515 ci: actualize Kotlin/Wasm yarn.lock (ws 8.18.3 -> 8.20.1)
  • Additional commits viewable in compare view

Updates sk.ainet.core:skainet-compile-dag from 0.32.3 to 0.33.0

Changelog

Sourced from sk.ainet.core:skainet-compile-dag's changelog.

[0.33.0] - 2026-06-29

Added

  • GRU layer (sk.ainet.lang.nn.Gru). SKaiNET's first recurrent layer (issue #217): single-layer, unidirectional, batch-first [B, S, D] -> [B, S, H], PyTorch gate order (reset, update, new). Built by composing existing primitives (matmul/add/sigmoid/tanh/narrow/concat) unrolled over the static sequence length at trace time — StableHLO has no loop construct, so any recurrence must unroll. It runs eagerly, is trainable through the standard tape, and exports to StableHLO with no dedicated converter. Also adds a gru(hiddenSize) { … } network-DSL builder. (PR #772)
  • upsample2d Bilinear + StableHLO export. Adds the Bilinear forward (PyTorch coord map, 4-neighbour blend) and its autodiff backward, and a traceable StableHLO lowering for both Nearest and Bilinear (scale is static at trace time, so everything lowers to fixed reshape/broadcast/dot_general — no runtime index math, no custom_call). Unblocks export of resize/FPN-style paths. (PR #771)
  • Seven newly-differentiable ops. cos, sin, tril, gather, indexSelect, unfold, convTranspose1d now carry @Diff and have backward rules (with finite-difference parity tests): trig for RoPE, gather for embedding lookup, tril for causal masks, the rest structural. (PR #774)
  • KSP-generated autodiff-coverage guard. The tracing-wrapper processor now emits DifferentiableTensorOpsRules.ruleNames (the authoritative @Diff op set); a unit test asserts the execution tape's dispatch covers it, so a differentiable op can no longer ship with a backward rule that is never wired. operators.json now records isDifferentiable (+ optional diffRuleName), schema-validated. (PR #774)

Fixed

  • Silent gradient drop for elu, leakyRelu, permute. These were @Diff and had correct backward formulas, but had no arm in the execution tape's trace dispatch, so their gradients fell through to null and were silently discarded. Now wired (and guarded by the coverage test above); permuteBackward also fixed to decode its axes attribute as the traced List<Int>. (PR #774)
  • layerNorm / rmsNorm / batchNorm lower to real stablehlo.reduce. The norm converters previously emitted non-compilable reduce_mean / reduce_variance custom_calls (export-only); they now decompose to real stablehlo.reduce, so all three compile and run on stock IREE (llvm-cpu). (PR #769)

Changed

  • BREAKING: TensorOps.sin, TensorOps.cos, TensorOps.convTranspose1d are now abstract. They previously had default throw NotImplementedError(...) bodies; they are abstract so the tracing wrapper records them (and they become differentiable/exportable). Any type implementing TensorOps directly must now override them — both bundled backends (DefaultCpuOpsBase, VoidTensorOps) already do. (PR #774)

[0.32.4] - 2026-06-26

Fixed

  • Streaming detokenization preserves word-boundary spaces (Tokenizer.decodeToken). A generation loop that decodes one token at a time (decode(tokenId)) ran words together ("the process""theprocess"): the single-token path delegated to the sequence-level SentencePieceTokenizer.decode(IntArray), whose addSpacePrefix leading-space strip is only correct once per sequence. Adds Tokenizer.decodeToken(id) (default = decode(intArrayOf(id))) and

... (truncated)

Commits
  • bade11c release: 0.33.0 — GRU, upsample2d Bilinear export, autodiff coverage fix
  • c785151 Merge pull request #774 from SKaiNET-developers/feat/autodiff-coverage
  • 75527fb feat(autodiff): close dispatch gaps + KSP-generated coverage guard #773
  • 5351684 Merge pull request #772 from SKaiNET-developers/feat/gru-module
  • 2749917 feat(nn): add GRU layer (composed, trainable, StableHLO-exportable) #217
  • a1e40e8 Merge pull request #771 from SKaiNET-developers/feat/upsample2d-stablehlo
  • 2959e05 ci: actualize Kotlin/JS yarn.lock (ws -> 8.20.1)
  • 7b71386 feat(upsample2d): Bilinear (eager+autodiff) + traceable StableHLO lowering fo...
  • 27138a5 Merge pull request #768 from SKaiNET-developers/perf/q6k-neon-kernel
  • c67f515 ci: actualize Kotlin/Wasm yarn.lock (ws 8.18.3 -> 8.20.1)
  • Additional commits viewable in compare view

Updates sk.ainet.core:skainet-backend-cpu from 0.32.3 to 0.33.0

Changelog

Sourced from sk.ainet.core:skainet-backend-cpu's changelog.

[0.33.0] - 2026-06-29

Added

  • GRU layer (sk.ainet.lang.nn.Gru). SKaiNET's first recurrent layer (issue #217): single-layer, unidirectional, batch-first [B, S, D] -> [B, S, H], PyTorch gate order (reset, update, new). Built by composing existing primitives (matmul/add/sigmoid/tanh/narrow/concat) unrolled over the static sequence length at trace time — StableHLO has no loop construct, so any recurrence must unroll. It runs eagerly, is trainable through the standard tape, and exports to StableHLO with no dedicated converter. Also adds a gru(hiddenSize) { … } network-DSL builder. (PR #772)
  • upsample2d Bilinear + StableHLO export. Adds the Bilinear forward (PyTorch coord map, 4-neighbour blend) and its autodiff backward, and a traceable StableHLO lowering for both Nearest and Bilinear (scale is static at trace time, so everything lowers to fixed reshape/broadcast/dot_general — no runtime index math, no custom_call). Unblocks export of resize/FPN-style paths. (PR #771)
  • Seven newly-differentiable ops. cos, sin, tril, gather, indexSelect, unfold, convTranspose1d now carry @Diff and have backward rules (with finite-difference parity tests): trig for RoPE, gather for embedding lookup, tril for causal masks, the rest structural. (PR #774)
  • KSP-generated autodiff-coverage guard. The tracing-wrapper processor now emits DifferentiableTensorOpsRules.ruleNames (the authoritative @Diff op set); a unit test asserts the execution tape's dispatch covers it, so a differentiable op can no longer ship with a backward rule that is never wired. operators.json now records isDifferentiable (+ optional diffRuleName), schema-validated. (PR #774)

Fixed

  • Silent gradient drop for elu, leakyRelu, permute. These were @Diff and had correct backward formulas, but had no arm in the execution tape's trace dispatch, so their gradients fell through to null and were silently discarded. Now wired (and guarded by the coverage test above); permuteBackward also fixed to decode its axes attribute as the traced List<Int>. (PR #774)
  • layerNorm / rmsNorm / batchNorm lower to real stablehlo.reduce. The norm converters previously emitted non-compilable reduce_mean / reduce_variance custom_calls (export-only); they now decompose to real stablehlo.reduce, so all three compile and run on stock IREE (llvm-cpu). (PR #769)

Changed

  • BREAKING: TensorOps.sin, TensorOps.cos, TensorOps.convTranspose1d are now abstract. They previously had default throw NotImplementedError(...) bodies; they are abstract so the tracing wrapper records them (and they become differentiable/exportable). Any type implementing TensorOps directly must now override them — both bundled backends (DefaultCpuOpsBase, VoidTensorOps) already do. (PR #774)

[0.32.4] - 2026-06-26

Fixed

  • Streaming detokenization preserves word-boundary spaces (Tokenizer.decodeToken). A generation loop that decodes one token at a time (decode(tokenId)) ran words together ("the process""theprocess"): the single-token path delegated to the sequence-level SentencePieceTokenizer.decode(IntArray), whose addSpacePrefix leading-space strip is only correct once per sequence. Adds Tokenizer.decodeToken(id) (default = decode(intArrayOf(id))) and

... (truncated)

Commits
  • bade11c release: 0.33.0 — GRU, upsample2d Bilinear export, autodiff coverage fix
  • c785151 Merge pull request #774 from SKaiNET-developers/feat/autodiff-coverage
  • 75527fb feat(autodiff): close dispatch gaps + KSP-generated coverage guard #773
  • 5351684 Merge pull request #772 from SKaiNET-developers/feat/gru-module
  • 2749917 feat(nn): add GRU layer (composed, trainable, StableHLO-exportable) #217
  • a1e40e8 Merge pull request #771 from SKaiNET-developers/feat/upsample2d-stablehlo
  • 2959e05 ci: actualize Kotlin/JS yarn.lock (ws -> 8.20.1)
  • 7b71386 feat(upsample2d): Bilinear (eager+autodiff) + traceable StableHLO lowering fo...
  • 27138a5 Merge pull request #768 from SKaiNET-developers/perf/q6k-neon-kernel
  • c67f515 ci: actualize Kotlin/Wasm yarn.lock (ws 8.18.3 -> 8.20.1)
  • Additional commits viewable in compare view

Updates sk.ainet.core:skainet-data-api from 0.32.3 to 0.33.0

Changelog

Sourced from sk.ainet.core:skainet-data-api's changelog.

[0.33.0] - 2026-06-29

Added

  • GRU layer (sk.ainet.lang.nn.Gru). SKaiNET's first recurrent layer (issue #217): single-layer, unidirectional, batch-first [B, S, D] -> [B, S, H], PyTorch gate order (reset, update, new). Built by composing existing primitives (matmul/add/sigmoid/tanh/narrow/concat) unrolled over the static sequence length at trace time — StableHLO has no loop construct, so any recurrence must unroll. It runs eagerly, is trainable through the standard tape, and exports to StableHLO with no dedicated converter. Also adds a gru(hiddenSize) { … } network-DSL builder. (PR #772)
  • upsample2d Bilinear + StableHLO export. Adds the Bilinear forward (PyTorch coord map, 4-neighbour blend) and its autodiff backward, and a traceable StableHLO lowering for both Nearest and Bilinear (scale is static at trace time, so everything lowers to fixed reshape/broadcast/dot_general — no runtime index math, no custom_call). Unblocks export of resize/FPN-style paths. (PR #771)
  • Seven newly-differentiable ops. cos, sin, tril, gather, indexSelect, unfold, convTranspose1d now carry @Diff and have backward rules (with finite-difference parity tests): trig for RoPE, gather for embedding lookup, tril for causal masks, the rest structural. (PR #774)
  • KSP-generated autodiff-coverage guard. The tracing-wrapper processor now emits DifferentiableTensorOpsRules.ruleNames (the authoritative @Diff op set); a unit test asserts the execution tape's dispatch covers it, so a differentiable op can no longer ship with a backward rule that is never wired. operators.json now records isDifferentiable (+ optional diffRuleName), schema-validated. (PR #774)

Fixed

  • Silent gradient drop for elu, leakyRelu, permute. These were @Diff and had correct backward formulas, but had no arm in the execution tape's trace dispatch, so their gradients fell through to null and were silently discarded. Now wired (and guarded by the coverage test above); permuteBackward also fixed to decode its axes attribute as the traced List<Int>. (PR #774)
  • layerNorm / rmsNorm / batchNorm lower to real stablehlo.reduce. The norm converters previously emitted non-compilable reduce_mean / reduce_variance custom_calls (export-only); they now decompose to real stablehlo.reduce, so all three compile and run on stock IREE (llvm-cpu). (PR #769)

Changed

  • BREAKING: TensorOps.sin, TensorOps.cos, TensorOps.convTranspose1d are now abstract. They previously had default throw NotImplementedError(...) bodies; they are abstract so the tracing wrapper records them (and they become differentiable/exportable). Any type implementing TensorOps directly must now override them — both bundled backends (DefaultCpuOpsBase, VoidTensorOps) already do. (PR #774)

[0.32.4] - 2026-06-26

Fixed

  • Streaming detokenization preserves word-boundary spaces (Tokenizer.decodeToken). A generation loop that decodes one token at a time (decode(tokenId)) ran words together ("the process""theprocess"): the single-token path delegated to the sequence-level SentencePieceTokenizer.decode(IntArray), whose addSpacePrefix leading-space strip is only correct once per sequence. Adds Tokenizer.decodeToken(id) (default = decode(intArrayOf(id))) and

... (truncated)

Commits
  • bade11c release: 0.33.0 — GRU, upsample2d Bilinear export, autodiff coverage fix
  • c785151 Merge pull request #774 from SKaiNET-developers/feat/autodiff-coverage
  • 75527fb feat(autodiff): close dispatch gaps + KSP-generated coverage guard #773
  • 5351684 Merge pull request #772 from SKaiNET-developers/feat/gru-module
  • 2749917 feat(nn): add GRU layer (composed, trainable, StableHLO-exportable) #217
  • a1e40e8 Merge pull request #771 from SKaiNET-developers/feat/upsample2d-stablehlo
  • 2959e05 ci: actualize Kotlin/JS yarn.lock (ws -> 8.20.1)
  • 7b71386 feat(upsample2d): Bilinear (eager+autodiff) + traceable StableHLO lowering fo...
  • 27138a5 Merge pull request #768 from SKaiNET-developers/perf/q6k-neon-kernel
  • c67f515 ci: actualize Kotlin/Wasm yarn.lock (ws 8.18.3 -> 8.20.1)
  • Additional commits viewable in compare view

Updates sk.ainet.core:skainet-data-basic from 0.32.3 to 0.33.0

Changelog

Sourced from sk.ainet.core:skainet-data-basic's changelog.

[0.33.0] - 2026-06-29

Added

  • GRU layer (sk.ainet.lang.nn.Gru). SKaiNET's first recurrent layer (issue #217): single-layer, unidirectional, batch-first [B, S, D] -> [B, S, H], PyTorch gate order (reset, update, new). Built by composing existing primitives (matmul/add/sigmoid/tanh/narrow/concat) unrolled over the static sequence length at trace time — StableHLO has no loop construct, so any recurrence must unroll. It runs eagerly, is trainable through the standard tape, and exports to StableHLO with no dedicated converter. Also adds a gru(hiddenSize) { … } network-DSL builder. (PR #772)
  • upsample2d Bilinear + StableHLO export. Adds the Bilinear forward (PyTorch coord map, 4-neighbour blend) and its autodiff backward, and a traceable StableHLO lowering for both Nearest and Bilinear (scale is static at trace time, so everything lowers to fixed reshape/broadcast/dot_general — no runtime index math, no custom_call). Unblocks export of resize/FPN-style paths. (PR #771)
  • Seven newly-differentiable ops.Description has been truncated

Bumps `skainet` from 0.32.3 to 0.33.0.

Updates `sk.ainet.core:skainet-lang-core` from 0.32.3 to 0.33.0
- [Changelog](https://github.com/SKaiNET-developers/SKaiNET/blob/develop/CHANGELOG.md)
- [Commits](SKaiNET-developers/SKaiNET@0.32.3...0.33.0)

Updates `sk.ainet.core:skainet-lang-models` from 0.32.3 to 0.33.0
- [Changelog](https://github.com/SKaiNET-developers/SKaiNET/blob/develop/CHANGELOG.md)
- [Commits](SKaiNET-developers/SKaiNET@0.32.3...0.33.0)

Updates `sk.ainet.core:skainet-model-yolo` from 0.32.3 to 0.33.0
- [Changelog](https://github.com/SKaiNET-developers/SKaiNET/blob/develop/CHANGELOG.md)
- [Commits](SKaiNET-developers/SKaiNET@0.32.3...0.33.0)

Updates `sk.ainet.core:skainet-lang-dag` from 0.32.3 to 0.33.0
- [Changelog](https://github.com/SKaiNET-developers/SKaiNET/blob/develop/CHANGELOG.md)
- [Commits](SKaiNET-developers/SKaiNET@0.32.3...0.33.0)

Updates `sk.ainet.core:skainet-compile-core` from 0.32.3 to 0.33.0
- [Changelog](https://github.com/SKaiNET-developers/SKaiNET/blob/develop/CHANGELOG.md)
- [Commits](SKaiNET-developers/SKaiNET@0.32.3...0.33.0)

Updates `sk.ainet.core:skainet-compile-dag` from 0.32.3 to 0.33.0
- [Changelog](https://github.com/SKaiNET-developers/SKaiNET/blob/develop/CHANGELOG.md)
- [Commits](SKaiNET-developers/SKaiNET@0.32.3...0.33.0)

Updates `sk.ainet.core:skainet-backend-cpu` from 0.32.3 to 0.33.0
- [Changelog](https://github.com/SKaiNET-developers/SKaiNET/blob/develop/CHANGELOG.md)
- [Commits](SKaiNET-developers/SKaiNET@0.32.3...0.33.0)

Updates `sk.ainet.core:skainet-data-api` from 0.32.3 to 0.33.0
- [Changelog](https://github.com/SKaiNET-developers/SKaiNET/blob/develop/CHANGELOG.md)
- [Commits](SKaiNET-developers/SKaiNET@0.32.3...0.33.0)

Updates `sk.ainet.core:skainet-data-basic` from 0.32.3 to 0.33.0
- [Changelog](https://github.com/SKaiNET-developers/SKaiNET/blob/develop/CHANGELOG.md)
- [Commits](SKaiNET-developers/SKaiNET@0.32.3...0.33.0)

Updates `sk.ainet.core:skainet-io-core` from 0.32.3 to 0.33.0
- [Changelog](https://github.com/SKaiNET-developers/SKaiNET/blob/develop/CHANGELOG.md)
- [Commits](SKaiNET-developers/SKaiNET@0.32.3...0.33.0)

Updates `sk.ainet.core:skainet-io-gguf` from 0.32.3 to 0.33.0
- [Changelog](https://github.com/SKaiNET-developers/SKaiNET/blob/develop/CHANGELOG.md)
- [Commits](SKaiNET-developers/SKaiNET@0.32.3...0.33.0)

Updates `sk.ainet.core:skainet-io-onnx` from 0.32.3 to 0.33.0
- [Changelog](https://github.com/SKaiNET-developers/SKaiNET/blob/develop/CHANGELOG.md)
- [Commits](SKaiNET-developers/SKaiNET@0.32.3...0.33.0)

---
updated-dependencies:
- dependency-name: sk.ainet.core:skainet-lang-core
  dependency-version: 0.33.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
- dependency-name: sk.ainet.core:skainet-lang-models
  dependency-version: 0.33.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
- dependency-name: sk.ainet.core:skainet-model-yolo
  dependency-version: 0.33.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
- dependency-name: sk.ainet.core:skainet-lang-dag
  dependency-version: 0.33.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
- dependency-name: sk.ainet.core:skainet-compile-core
  dependency-version: 0.33.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
- dependency-name: sk.ainet.core:skainet-compile-dag
  dependency-version: 0.33.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
- dependency-name: sk.ainet.core:skainet-backend-cpu
  dependency-version: 0.33.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
- dependency-name: sk.ainet.core:skainet-data-api
  dependency-version: 0.33.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
- dependency-name: sk.ainet.core:skainet-data-basic
  dependency-version: 0.33.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
- dependency-name: sk.ainet.core:skainet-io-core
  dependency-version: 0.33.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
- dependency-name: sk.ainet.core:skainet-io-gguf
  dependency-version: 0.33.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
- dependency-name: sk.ainet.core:skainet-io-onnx
  dependency-version: 0.33.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
@dependabot dependabot Bot added dependencies Pull requests that update a dependency file java Pull requests that update java code labels Jun 30, 2026
@dependabot @github

dependabot Bot commented on behalf of github Jul 6, 2026

Copy link
Copy Markdown
Contributor Author

Superseded by #150.

@dependabot dependabot Bot closed this Jul 6, 2026
@dependabot
dependabot Bot deleted the dependabot/gradle/skainet-0.33.0 branch July 6, 2026 04:27
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Pull requests that update a dependency file java Pull requests that update java code

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants