Skip to content

fix(deps): update rust crate ndarray to 0.17 - autoclosed#898

Closed
renovate[bot] wants to merge 1 commit into
mainfrom
renovate/ndarray-0.x
Closed

fix(deps): update rust crate ndarray to 0.17 - autoclosed#898
renovate[bot] wants to merge 1 commit into
mainfrom
renovate/ndarray-0.x

Conversation

@renovate
Copy link
Copy Markdown
Contributor

@renovate renovate Bot commented Feb 21, 2026

This PR contains the following updates:

Package Type Update Change
ndarray dependencies minor 0.160.17

Warning

Some dependencies could not be looked up. Check the Dependency Dashboard for more information.


Release Notes

rust-ndarray/ndarray (ndarray)

v0.17.2

Compare Source

===========================
Version 0.17.2 is mainly a patch fix to bugs related to the new ArrayRef implementation.

In addition, ndarray has reduced its packaging footprint to ease supply chain reviews (and shrink the binary size!).
A special thanks to @​SwishSwushPow and @​weiznich for bringing this to our attention and making the necessary changes.

Added

Fixed

Documentation

v0.17.1

Compare Source

===========================
Version 0.17.1 provides a patch to fix the originally-unsound implementation of the new array reference types.

The reference types are now all unsized.
Practically speaking, this has one major implication: writing functions and traits that accept RawRef and LayoutRef will now need a + ?Sized bound to work ergonomically with ArrayRef.
For example, the release notes for 0.17.0 said

Reading / Writing Shape: LayoutRef<A, D>

LayoutRef lets functions view or modify shape/stride information without touching data.
This replaces verbose signatures like:

fn alter_view<S>(a: &mut ArrayBase<S, Ix1>)
where S: Data<Elem = f64>;

Use AsRef / AsMut for best compatibility:

fn alter_shape<T>(a: &mut T)
where T: AsMut<LayoutRef<f64>>;

However, these functions now need an additional bound to allow for callers to pass in &ArrayRef types:

fn alter_shape<T>(a: &mut T)
where T: AsMut<LayoutRef<f64>> + ?Sized; // Added bound here

A huge thank you to Sarah Quiñones (@​sarah-quinones) for catching the original unsound bug and helping to fix it.
She does truly excellent work with faer-rs; check it out!

v0.17.0

Compare Source

===========================
Version 0.17.0 introduces a new array reference type — the preferred way to write functions and extension traits in ndarray.
This release is fully backwards-compatible but represents a major usability improvement.
The first section of this changelog explains the change in detail.

It also includes numerous new methods, math functions, and internal improvements — all credited below.

A New Way to Write Functions

TL;DR

ndarray 0.17.0 adds new reference types for writing functions and traits that work seamlessly with owned arrays and views.

When writing functions that accept array arguments:

  • Use &ArrayRef<A, D> to read elements from any array.
  • Use &mut ArrayRef<A, D> to modify elements.
  • Use &T where T: AsRef<LayoutRef<A, D>> to inspect shape/stride only.
  • Use &mut T where T: AsMut<LayoutRef<A, D>> to modify shape/stride only.

All existing function signatures continue to work; these new types are fully opt-in.

Background

ndarray has multiple ways to write functions that take arrays (a problem captured well in issue #​1059).
For example:

fn sum(a: ArrayView1<f64>) -> f64;
fn sum(a: &ArrayView1<f64>) -> f64;
fn sum(a: &Array1<f64>) -> f64;

All of these work, but having several equivalent forms causes confusion.
The most general solution, writing generically over storage types:

fn sum<S>(a: &ArrayBase<S, Ix1>) -> f64
where S: Data<Elem = f64>;

is powerful but verbose and often hard to read.
Version 0.17.0 introduces a new, simpler pattern that expresses the same flexibility more clearly.

Solution

Three new reference types make it easier to write functions that accept any kind of array while clearly expressing what kind of access (data or layout) they need.

Reading / Writing Elements: ArrayRef<A, D>

ArrayRef is the Deref target of ArrayBase.
It behaves like &[T] for Vec<T>, giving access to elements and layout.
Mutability is expressed through the reference itself (& vs &mut), not through a trait bound or the type itself.
It is used as follows:

fn sum(a: &ArrayRef1<f64>) -> f64;
fn cumsum_mut(a: &mut ArrayRef1<f64>);

(ArrayRef1 is available from the prelude.)

Reading / Writing Shape: LayoutRef<A, D>

LayoutRef lets functions view or modify shape/stride information without touching data.
This replaces verbose signatures like:

fn alter_view<S>(a: &mut ArrayBase<S, Ix1>)
where S: Data<Elem = f64>;

Use AsRef / AsMut for best compatibility:

fn alter_shape<T>(a: &mut T)
where T: AsMut<LayoutRef<f64>>;

(Accepting a LayoutRef directly can cause unnecessary copies; see #​1440.)

Reading / Writing Unsafe Elements: RawRef<A, D>

RawRef augments RawArrayView and RawArrayViewMut for power users needing unsafe element access (e.g. uninitialized buffers).
Like LayoutRef, it is best used via AsRef / AsMut.

Added

Changed

  • remove_index can now be called on views, in addition to owned arrays by @​akern40

Removed

  • Removed the serde-1, test, and docs feature flags; by @​akern40 #​1479
    • Use approx,serde,rayon instead of docs.
    • Use serde instead of serde-1

Fixed

  • last_mut() now guarantees that the underlying data is uniquely held by @​bluss #​1429
  • ArrayView is now covariant over lifetime by @​akern40 #​1480, so that the following code now compiles
fn fn_cov<'a>(x: ArrayView1<'static, f64>) -> ArrayView1<'a, f64> {
    x
}

Documentation

  • Filled missing documentation and adds warn(missing_docs) by @​akern40
  • Fixed a typo in the documentation of select by @​Drazhar
  • Fixed a typo in the documentation of into_raw_vec_and_offset by @​benliepert
  • Documented Array::zeros with how to control the return type by @​akern40

Other


Configuration

📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about this update again.


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

@renovate
Copy link
Copy Markdown
Contributor Author

renovate Bot commented Feb 21, 2026

⚠️ Artifact update problem

Renovate failed to update an artifact related to this branch. You probably do not want to merge this PR as-is.

♻ Renovate will retry this branch, including artifacts, only when one of the following happens:

  • any of the package files in this branch needs updating, or
  • the branch becomes conflicted, or
  • you click the rebase/retry checkbox if found above, or
  • you rename this PR's title to start with "rebase!" to trigger it manually

The artifact failure details are included below:

File name: Cargo.lock
Command failed: cargo update --config net.git-fetch-with-cli=true --manifest-path spnl/Cargo.toml --package ndarray@0.16.1 --precise 0.17.2
    Updating crates.io index
    Updating git repository `https://github.com/mgeisler/lipsum.git`
From https://github.com/mgeisler/lipsum
 * [new ref]         233e48a36df40641a609a9476fe9009d928757c5 -> refs/commit/233e48a36df40641a609a9476fe9009d928757c5
    Updating git repository `https://github.com/EricLBuehler/mistral.rs`
From https://github.com/EricLBuehler/mistral.rs
 * [new ref]           dd8d0c6f9dc2fe3129ff4228de667e2a0efcf5b4 -> refs/commit/dd8d0c6f9dc2fe3129ff4228de667e2a0efcf5b4
error: failed to select a version for the requirement `ndarray = "^0.16"`
candidate versions found which didn't match: 0.17.2
location searched: crates.io index
required by package `leann-core v0.1.1`
    ... which satisfies dependency `leann-core = "^0.1.1"` of package `spnl v0.20.1 (/tmp/renovate/repos/github/IBM/spnl/spnl)`
    ... which satisfies path dependency `spnl` (locked to 0.20.1) of package `spnl-cli v0.20.1 (/tmp/renovate/repos/github/IBM/spnl/cli)`

@renovate renovate Bot changed the title fix(deps): update rust crate ndarray to 0.17 fix(deps): update rust crate ndarray to 0.17 - autoclosed Feb 22, 2026
@renovate renovate Bot closed this Feb 22, 2026
@renovate renovate Bot deleted the renovate/ndarray-0.x branch February 22, 2026 15:55
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants