Skip to content

Commit ed24b34

Browse files
authored
Add post announcing the v2024 Array API Standard release
PR-URL: #28 Reviewed-by: Evgeni Burovski
2 parents e42906d + 8552c3d commit ed24b34

File tree

1 file changed

+103
-0
lines changed

1 file changed

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

0 commit comments

Comments
 (0)