Skip to content

Commit 9b257f1

Browse files
committed
Add post announcing the v2024 Array API Standard release
1 parent e42906d commit 9b257f1

File tree

1 file changed

+57
-0
lines changed

1 file changed

+57
-0
lines changed
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
+++
2+
date = "2025-02-27T08:00:00+00:00"
3+
author = "Athan Reines"
4+
title = "2024 release of the Array API Standard"
5+
tags = ["APIs", "standard", "consortium", "arrays", "community"]
6+
categories = ["Consortium", "Standardization"]
7+
description = "The 2024 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+
Another year, another milestone! We're excited to announce the release of the 2024 revision of the Array API Standard, the latest iteration of our ongoing efforts to unify and standardize array programming across the PyData ecosystem. Since the standard's inception, our goal has been to facilitate interoperability between array libraries and enable a more consistent and predictable developer experience. This year's update continues that mission with key enhancements, new features, and clarifications that reflect the needs of the community.
13+
14+
## Key Enhancements in 2024.12
15+
16+
### Scalar Argument Support
17+
18+
Previously, binary element-wise functions, such as `add`, `mul`, and others, required both input arguments to be arrays. This constraint has now been relaxed: scalars are now allowed as arguments, as long as at least one argument is an array. This change aligns with common practices in numerical computing and makes it easier to write concise, readable code.
19+
20+
### Integer Array Indexing
21+
22+
Portable indexing semantics just got more powerful! The 2024 revision of the standard introduces support for indexing an array using tuples consisting solely of integers and integer arrays. This feature—a subset of NumPy's vectorized fancy indexing—was a highly requested addition from downstream users. It enables efficient random sampling and more flexible multi-dimensional indexing, making it easier to work with large datasets and tensors.
23+
24+
For more details, see [_Integer Array Indexing_](https://data-apis.org/array-api/latest/API_specification/indexing.html#integer-array-indexing) in the specification.
25+
26+
### New API Additions
27+
28+
Several new APIs have been introduced in this release to expand functionality and improve usability:
29+
30+
- `count_nonzero`: counts the number of nonzero elements in an array.
31+
- `cumulative_prod`: computes the cumulative product along a specified axis.
32+
- `take_along_axis`: selects elements from an array using indices along a given axis.
33+
- `diff`: computes the discrete difference between consecutive elements.
34+
- `nextafter`: returns the next representable floating-point value in the direction of another floating-point value.
35+
36+
These additions further close the gap between the Array API Standard and established numerical computing libraries.
37+
38+
### Breaking Changes
39+
40+
With progress comes necessary refinements. This year's update includes two significant breaking changes:
41+
42+
- **Device-aware type promotion**: The guidance for `result_type` and `can_cast` has been updated to require that type promotion rules account for device contexts when at least one operand is an array. This ensures that type promotion can be correctly handled across different hardware environments and accurately reflect device capabilities.
43+
- **Refined handling of Python complex scalars**: Previously, for binary operations involving an array and a Python scalar, the standard required that all scalar values be automatically converted to zero-dimensional arrays of the same type as the array operand. Now, if a Python `complex` scalar is used in an operation (e.g., `x * 1j`), the real-valued array operand should be promoted to a complex floating-point type of the same precision as the original array operand. This change better aligns with practical use cases involving complex numbers and helps improve developer ergonomics.
44+
45+
### Specification Clarifications
46+
47+
Standards evolve not just through feature additions but also through refinements. Over the past year, we've worked closely with implementers and downstream users to resolve ambiguities in the specification. These clarifications ensure that adopting the standard is as seamless as possible and that behavior is well-defined across implementations.
48+
49+
## Looking Ahead
50+
51+
The 2024 revision of the Array API Standard represents another step forward in making array interoperability a reality across the Python ecosystem. Every iteration of the standard reflects deep collaboration across the PyData community, with contributions from library maintainers, researchers, and practitioners.
52+
53+
We encourage all implementers to adopt the latest version and welcome feedback from the community. If you're interested in contributing to future discussions, check out the [specification repository](https://github.com/data-apis/array-api) and get involved!
54+
55+
For full details on this release, see the [changelog](https://data-apis.org/array-api/latest/changelog.html#v2024-12).
56+
57+
Here's to another year of advancing the frontier of array and tensor computing in Python!

0 commit comments

Comments
 (0)