Skip to content

chore(deps): bump the rust-deps group with 2 updates - #496

Open
dependabot[bot] wants to merge 1 commit into
devfrom
dependabot/cargo/dev/rust-deps-93f9e12987
Open

dependabot[bot] wants to merge 1 commit into
devfrom
dependabot/cargo/dev/rust-deps-93f9e12987

Conversation

@dependabot

@dependabot dependabot Bot commented on behalf of github Sep 15, 2026

Copy link
Copy Markdown
Contributor

Bumps the rust-deps group with 2 updates: tract-onnx and console.

Updates tract-onnx from 0.23.6 to 0.23.7

Changelog

Sourced from tract-onnx's changelog.

0.23.7 - 2026-09-08

CPU / linalg

  • f32 ln and exp are linalg routines. They went through libm one element at a time, which is most of what a log-mel featurizer costs. Scalar fits and shared coefficients live in generic/{ln,exp}.rs, with FMA and AVX-512 kernels on x86_64, NEON on aarch64, and simd128 on wasm (four lanes at a time through madd_f32x4!, so a relaxed-simd build fuses them); the f32 arms of the core ops dispatch to them.
  • AVX2/FMA erf kernel, and the erf-flavoured GELU is now detected with the half factored out.
  • Matmul chunking slack is gated on the problem rather than the machine alone, with the boundary at the 1.5 MB knee, and taken only where the cache absorbs it. The generic i32 4x4 tile is demoted off x86_64.
  • Input validation added to the packing functions.
  • Depthwise convolution is vectorised along W. NCHW W-inner DepthWiseConv ran process_zone_n scalar; consecutive output points are now computed together when the output stride is 1, by splatting each kernel tap and FMA-ing a 4/8-wide load, with vld2q/vld3q for the stride 2/3 paths the DPDFNet 48 kHz encoder uses. Padded and non-unit-output-stride zones stay scalar, and BlockedConv is untouched. The kernel lives in linalg as a DepthwiseW routine rather than as aarch64 intrinsics inside core.

Core

  • Stft::eval_t addresses frames by offset. It walked contiguous tensors one element at a time through dynamic-rank ndarray views, re-resolving the window and branching on the pad offset per sample. Whole frames are now gathered and stored as slices when contiguous, the zero-padded window is computed once per eval, and an element-wise path is kept for a time axis not adjacent to the complex pair.

NNEF / ONNX

  • Fix: ONNX SimplifiedLayerNormalization lowered to a full LayerNorm instead of an RMS norm, so it subtracted a mean the operator does not have (#2646).

GPU / transformers

  • Metal convolution goes through an implicit GEMM. The direct kernel computed one output position per thread and left most of the GPU idle — a 56x56x64 -> 128 3x3 layer ran at about 20 GFLOP/s on an M1 Pro. MLX's tiled implicit-GEMM conv is ported as owned .metal source and takes NHWC f16/f32 single-group 2D convolutions; every other shape stays on the direct kernel. A metal-local rule reorders eligible kernels from the shared rewrite's OIHW into the OHWI layout the ported kernel wants, as a constant, since the metal transform does not declutter afterwards.
  • GatedDeltaNet recurrent and causal-conv1d-update CUDA kernels, matching the Metal implementation, with CPU-vs-GPU criterion benches on both backends.
  • RMSNorm fusions: residual absorption and scaled-norm fusion across nn/gpu/cuda/metal, a CUDA fused scale/residual kernel matching Metal, support for a fused in/out dtype cast, end-to-end coverage through the real backend pipeline, and a before/after latency bench on Metal. ScaledRmsNorm evaluation moved to the ctx-based EvalOp API.
  • Fix: the fused norms came out more precise than the graphs they replace, which cost accuracy on q40ef16 LLMs. The scale fusions multiplied gamma against the raw f32 accumulator where the graph rounds first (weight * hidden.to(input_dtype)) — the rounding target is now recorded as ScaledRmsNorm::scale_dt, carried through the cast folds and applied before scaling; fuse_scaled_rms_norm_out_cast folded widening casts as well as narrowing ones, deleting a rounding step and flipping the top-1 token on OpenELM q40ef16; and the CUDA kernel normalized an unrounded f32 residual sum, diverging from Metal and from the standalone Add it claims to replace. The OpenELM f16 Metal top-1 expectations relaxed while the fusions were in flight are restored to their pre-fusion values.
  • Fix: GpuMultiBroadcastTo panicked on a rank-0 input, whose strides are empty.

Security

  • SECURITY.md: private reporting through GitHub advisories, the supported release lines, the trust boundary between developer-supplied models and untrusted inference inputs, and the api/rs facade (the tract crate) as the supported surface.
  • Fix: NNEF tensor and resource labels could escape the destination directory. Only a leading slash was stripped, so a label carrying a .. component resolved outside the directory a model is written to. Labels are checked to be plain relative paths in both writers and in the CLI output dump.
  • Fix: a tensor's shape arithmetic overflowed before it was allocated, both ways, from a model file. uninitialized_aligned_dt multiplied the shape product by the datum size in wrapping arithmetic: wrapped large, from_raw_dt_align allocates before comparing against the payload, so a 4-byte payload made tract ask the allocator for 16 EiB (dims [-1] on 0.23.6); wrapped small, the length check passed and the tensor claimed far more elements than its buffer held, with as_slice_unchecked() handing out the oversized slice. The arithmetic is now checked, isize::MAX bound included, before allocating.
  • Fix: malformed TensorFlow TensorProtos return an error instead of panicking (CWE-248).
  • Fix: read_tensor is hardened against an untrusted NNEF string length (CWE-770).

Docs / infra

  • AGENTS.md is the single normative contributor file; the descriptive material moves to doc/overview.md, and CLAUDE.md, GEMINI.md and .github/copilot-instructions.md are symlinks to it. The rules had drifted between the two copies.
  • The test infra runtime reports the interface facts a transposing device runtime actually takes; the harness causal-conv1d-update case declares shapes the op accepts.
  • Dependency and action group bumps.

[WIP] Autobatch / streaming

  • One prepared model can serve many concurrent sessions. A laned state holds its lanes in a table, so several streams share one prepared model and one set of weights; a model whose state cannot be laned is refused up front, and a laned runnable counts the turns it runs and the seats they fill. OptMatMul's output stores are keyed on the shape they were built for.
  • Unstable exposition on the public API as Runnable::autobatch(max_sessions) behind the unstable-autobatch feature, which wraps a prepared model and fails there when it carries no batch axis. The streaming ASR example takes a session count and checks that batching leaves the transcript alone.
  • Fix: a laned turn served every seat the shared inputs of seat 0. Inputs with no batch axis — one value for the whole turn — were read from seat 0 with no check on the others, so streams disagreeing about one were silently served seat 0's value (for the nemotron encoder's lang_id, every seat of the turn transcribed in seat 0's language). The shared inputs are now compared across seats and the turn fails when they disagree.
  • Fix: a blockified mask read the absolute chunk index, so its band predicate held only while every turn advanced every stream; a laned runtime seating a stream on some turns and not others inflated the older window slots past the band and masked real context out. The predicate now reads the window's own slot offsets, leaving the per-lane PulsePad as the only positional input.
  • Fix: a blockified mask wired its position-free zeros as a scalar, so an axis change reaching the broadcast in front of them asserted on a rank-0 tensor.
  • PulsedRange says what its counter counts when it refuses lanes; PulsePad's pad constant is cast to the datum type it fills, and the harness runs the pulsified pad case in f16 too.

[WIP] CLI / diagnostics for Autobatch

... (truncated)

Commits
  • c862487 release 0.23.7
  • 3b3702a changelog again
  • a18f2c0 onnx: drop inaccurate bias note from SimplifiedLayerNormalization comment
  • 3f29aa5 test(onnx): use a non-unit scale in the RMS-norm test
  • fc607ec onnx: lower SimplifiedLayerNormalization to RMS norm, not LayerNorm
  • ef624cd fix(data): check tensor shape arithmetic before allocating
  • 1181892 core/cnn: the depthwise W test asserted a lowering wasm does not pick
  • 3613acc linalg,core: move depthwise W kernel to a linalg routine
  • 6381da8 (perf) core/cnn: vectorise depthwise along contiguous W
  • 129b5eb metal: implicit-GEMM convolution via a ported MLX kernel
  • Additional commits viewable in compare view

Updates console from 0.16.4 to 0.16.6

Release notes

Sourced from console's releases.

0.16.6

What's Changed

0.16.5

What's Changed

Commits
  • 4329b77 Bump version to 0.16.6
  • bdf46b0 utils: wrap tests in module
  • 4f54213 fix: measure the truncation tail in visible columns
  • ed342d0 test: consolidate text width regression coverage
  • 48b99e9 perf: accelerate printable ASCII text width
  • abf0358 Fix truncate_str panicking mid-character without ansi-parsing
  • ac3cb73 Bump version to 0.16.5
  • 97a91ae ansi: strip OSC and DCS sequences
  • See full diff in compare view

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


Dependabot commands and options

You can trigger Dependabot actions by commenting on this PR:

  • @dependabot rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • @dependabot show <dependency name> ignore conditions will show all of the ignore conditions of the specified dependency
  • @dependabot ignore <dependency name> major version will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)
  • @dependabot ignore <dependency name> minor version will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)
  • @dependabot ignore <dependency name> will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)
  • @dependabot unignore <dependency name> will remove all of the ignore conditions of the specified dependency
  • @dependabot unignore <dependency name> <ignore condition> will remove the ignore condition of the specified dependency and ignore conditions

Bumps the rust-deps group with 2 updates: [tract-onnx](https://github.com/snipsco/tract) and [console](https://github.com/console-rs/console).


Updates `tract-onnx` from 0.23.6 to 0.23.7
- [Release notes](https://github.com/snipsco/tract/releases)
- [Changelog](https://github.com/sonos/tract/blob/main/CHANGELOG.md)
- [Commits](sonos/tract@v0.23.6...v0.23.7)

Updates `console` from 0.16.4 to 0.16.6
- [Release notes](https://github.com/console-rs/console/releases)
- [Changelog](https://github.com/console-rs/console/blob/main/CHANGELOG.md)
- [Commits](console-rs/console@0.16.4...0.16.6)

---
updated-dependencies:
- dependency-name: tract-onnx
  dependency-version: 0.23.7
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: rust-deps
- dependency-name: console
  dependency-version: 0.16.6
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: rust-deps
...

Signed-off-by: dependabot[bot] <support@github.com>
@dependabot dependabot Bot added dependencies Pull requests that update a dependency file rust Pull requests that update rust code labels Sep 15, 2026
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 rust Pull requests that update rust code

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants