From a533afbecc9a5fe10ddef2f3e8162035d4f71c26 Mon Sep 17 00:00:00 2001 From: Adam Kern Date: Sun, 2 Nov 2025 17:15:32 -0500 Subject: [PATCH] Add a changelog for 0.17.1 --- RELEASES.md | 30 +++++++++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/RELEASES.md b/RELEASES.md index 1f78a4ce7..cd335fb86 100644 --- a/RELEASES.md +++ b/RELEASES.md @@ -1,4 +1,32 @@ -Version 0.17.0 (2025-10-14) +Version 0.17.1 (2025-11-02) +=========================== +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` +> LayoutRef lets functions view or modify shape/stride information without touching data. +> This replaces verbose signatures like: +> ```rust +> fn alter_view(a: &mut ArrayBase) +> where S: Data; +> ``` +> Use AsRef / AsMut for best compatibility: +> ```rust +> fn alter_shape(a: &mut T) +> where T: AsMut>; +> ``` +However, these functions now need an additional bound to allow for callers to pass in `&ArrayRef` types: +```rust +fn alter_shape(a: &mut T) +where T: AsMut> + ?Sized; // Added bound here +``` + +A huge thank you to Sarah Quiñones ([@sarah-quinones](https://github.com/sarah-quinones)) for catching the original unsound bug and helping to fix it. +She does truly excellent work with [`faer-rs`](https://codeberg.org/sarah-quinones/faer); check it out! + +Version 0.17.0 (2025-10-14) [YANKED] =========================== 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.