A Hitchhiker’s Guide to the Array API Standard Ecosystem

EuroSciPy 2025

2025-08-20

WARNING — DRAFT

Scan to view the slides

About Me

  • Maintainer: SciPy, Pixi, array-api-extra
  • Consortium for Python Data API Standards Member
  • Computer Science & Philosophy Undergraduate, University of Oxford
  • Mentee @ prefix.dev
    (European Summer of Code)

Arrays

  • what is an array?
  • used everywhere

Ecosystem

  • Diagrams from SciPy talk
  • fractured to unified

Motivation

Why? — End Users

  • want to be able to switch array libraries without reinventing their entire stack
  • try out new hardware
  • try out functionality specific to an array library

Why? — Array consuming libraries

  • provide users with hardware acceleration and interoperability
  • without maintenance burden increasing massively

Why? — Array providing libraries

  • given a concrete API to aim to implement
  • rewarded with automatic compatibility with consuming libraries

Why? — Ecosystem

  • reduce duplication
  • functionality maintained in one place
  • diagrams from last year

Solution

How?

  • array-agnostic code
  • the implementation approach: expanding circle diagram

Tour of the ecosystem

  • diagram — the libraries making this implementation possible

Tour — array-api

  • developed by a cross-ecosystem consortium
  • what is it?
  • who is it for? providers/consumers/end-users?

The Array API Standard

  • link to Aaron’s SciPy talk
  • past work, design principles, methodology

Tour — array-api-tests

  • what is it?
  • who is it for? providers/consumers/end-users?

Tour — array-api-compat

  • what is it?
  • who is it for? providers/consumers/end-users?
  • what does real usage look like?

Tour — array-api-strict

  • what is it?
  • who is it for? providers/consumers/end-users?
  • what does real usage look like?

Tour — array-api-extra

  • what is it?
  • who is it for? providers/consumers/end-users?
  • what does real usage look like?

Tour — array-api-typing

  • what is it?
  • who is it for? providers/consumers/end-users?

Status

Status — Ecosystem Overview

  • summarise support across providers and consumers

Status — Array Libraries

Status — scipy

  • enable with experimental env var
  • coverage docs

Status — scikit-learn

Bonus Projects

  • marray
  • quantity-array (prototype)

What’s next?

  • wider ecosystem adoption
  • upstream testing utilities from scipy/scikit-learn to array-api-extra

What else?

  • SciPy compiled code: delegation, translation, dispatching

Thanks!