Skip to content

Commit 9b908fe

Browse files
committed
Add post announcing the v2025 Array API Standard release
1 parent ed24b34 commit 9b908fe

1 file changed

Lines changed: 152 additions & 0 deletions

File tree

Lines changed: 152 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,152 @@
1+
+++
2+
date = "2025-03-19T08:00:00+00:00"
3+
author = "Athan Reines"
4+
title = "2025 release of the Array API Standard"
5+
tags = ["APIs", "standard", "consortium", "arrays", "community"]
6+
categories = ["Consortium", "Standardization"]
7+
description = "The 2025 revision of the array API standard has been finalized and is ready for adoption by conforming array libraries."
8+
draft = false
9+
weight = 30
10+
+++
11+
12+
We're pleased to announce the 2025 revision of the Array API standard.
13+
14+
Since its initial release in 2021, the Array API standard has aimed to reduce
15+
fragmentation across array libraries by defining a common, minimal interface
16+
for multidimensional array operations. Over the past several years, the
17+
standard has matured alongside its ecosystem, with increasing adoption across
18+
libraries such as NumPy, CuPy, PyTorch, JAX, and others.
19+
20+
The 2025 revision marks another step forward in that evolution. This release
21+
focuses on improving usability, clarifying semantics, and addressing feedback
22+
from downstream libraries and users who are building on top of the standard.
23+
24+
## What's new in 2025
25+
26+
This year's revision is less about expanding surface area and more about
27+
refinement. As adoption has grown, so too has the need to ensure that the
28+
specification is both practical and predictable in real-world usage.
29+
30+
### Smoother edges for downstream libraries
31+
32+
One of the primary goals of this revision is to make the standard easier to
33+
implement and depend on.
34+
35+
Over the past year, we've worked closely with maintainers of downstream
36+
libraries, such as SciPy, scikit-learn, and others, to identify friction points
37+
when targeting the Array API. In response, the 2025 revision includes:
38+
39+
- Clarifications to ambiguous or under-specified behaviors.
40+
- Improved consistency across related APIs.
41+
- Better alignment between specification language and existing implementations.
42+
43+
These changes reduce the amount of special-casing required in downstream code
44+
and make it easier to write libraries that are backend-agnostic.
45+
46+
### Continued investment in consistency
47+
48+
Consistency remains a core design principle of the Array API standard. In this
49+
revision, we've continued to refine naming, argument conventions, and behavior
50+
to ensure that APIs feel coherent and predictable. Where inconsistencies or
51+
surprising behaviors were identified in earlier versions, we've taken steps to
52+
resolve them while carefully balancing backward compatibility concerns.
53+
54+
### Expanded and clarified semantics
55+
56+
As more libraries adopt the standard, subtle semantic mismatches become more
57+
visible. The 2025 revision addresses these by:
58+
59+
- Tightening definitions for edge cases.
60+
- Clarifying broadcasting and type promotion behavior.
61+
- Providing more precise guarantees around function outputs and error
62+
conditions.
63+
64+
These improvements are especially important for authors of numerical libraries,
65+
where small inconsistencies can propagate into larger correctness issues.
66+
67+
### New API Additions
68+
69+
Several new APIs have been introduced in this release to expand functionality
70+
and improve usability:
71+
72+
- `broadcast_shapes`: broadcasts one or more shapes against one another.
73+
- `isin`: tests for each element in an array whether the element is in
74+
another array.
75+
- `linalg.eig`: returns the eigenvalues and eigenvectors of a real or complex
76+
matrix.
77+
- `linalg.eigvals`: returns the eigenvalues of a real or complex matrix.
78+
79+
These additions further close the gap between the Array API standard and
80+
established numerical computing libraries.
81+
82+
### Breaking Changes
83+
84+
With progress comes necessary refinements. This year's update includes one
85+
significant breaking change:
86+
87+
- **Consistently return tuples rather than lists**: Previously, for
88+
`broadcast_arrays`, `meshgrid`, and `__array_namespace_info__().devices`, the
89+
functions returned lists. Guidance has now been updated to require always
90+
returning tuples. Prior guidance originated from early specification
91+
discussions, and, since that time, array libraries have moved away from
92+
returning lists to always returning tuples. This change ensures that the
93+
specification matches ecosystem conventions and further ensures consistency
94+
throughout the specification.
95+
96+
### Changelog
97+
98+
For a complete list of changes, please see the full changelog:
99+
100+
[https://data-apis.org/array-api/latest/changelog.html](https://data-apis.org/array-api/latest/changelog.html)
101+
102+
## Growing ecosystem adoption
103+
104+
The Array API standard continues to see strong adoption across the scientific
105+
Python ecosystem. Major array libraries have either implemented or are actively
106+
working toward compliance, and an increasing number of downstream libraries are
107+
using the standard as a portability layer. This enables users to write code once
108+
and run it across multiple array backends, including CPU and GPU implementations.
109+
110+
In parallel, the [`array-api-extra`](https://github.com/data-apis/array-api-extra)
111+
project continues to expand, providing higher-level utilities that build
112+
on top of the core specification and address common needs in downstream
113+
libraries and user applications.
114+
115+
## Looking ahead
116+
117+
As the Array API standard matures, our focus is shifting from defining the core
118+
interface to ensuring long-term stability, usability, and ecosystem
119+
integration. Future work will continue to prioritize:
120+
121+
- Improving the developer experience for downstream libraries.
122+
- Ensuring consistency across implementations.
123+
- Expanding supporting tools and libraries around the standard.
124+
125+
We remain committed to working closely with the community to ensure that the
126+
standard evolves in a way that reflects real-world usage and needs.
127+
128+
## Get involved
129+
130+
The Array API standard is developed in the open, and we welcome feedback and
131+
contributions from the community.
132+
133+
- Specification: [https://data-apis.org/array-api/](https://data-apis.org/array-api/)
134+
- GitHub: [https://github.com/data-apis/array-api](https://github.com/data-apis/array-api)
135+
- Public calendar: [https://calendar.google.com/calendar/embed?src=8fe9013a2cb5d3409bb236d04eca73fa5227eac01c02ea8f6bc4a6a3cf982fa3%40group.calendar.google.com](https://calendar.google.com/calendar/embed?src=8fe9013a2cb5d3409bb236d04eca73fa5227eac01c02ea8f6bc4a6a3cf982fa3%40group.calendar.google.com)
136+
137+
If you're building a library, experimenting with backend-agnostic code, or
138+
encountering challenges with the standard, we'd love to hear from you.
139+
140+
## Acknowledgments
141+
142+
This release would not have been possible without the continued efforts of
143+
contributors across the scientific Python ecosystem. We're grateful to everyone
144+
who has provided feedback, implemented the standard, and helped move the
145+
project forward.
146+
147+
### Funding Acknowledgment
148+
149+
This project has been made possible in part by grant number EOSS6-0000000621
150+
from the Chan Zuckerberg Initiative DAF, an advised fund of Silicon Valley
151+
Community Foundation. Athan Reines is the grant's principal investigator and
152+
Quansight, PBC is the entity receiving and executing on the grant.

0 commit comments

Comments
 (0)