man advect/compatibility/array-api
ARRAY-API(7)MiscellaneaARRAY-API(7)
────────────────────────────────────────────────────────────────────────────────────────

Array API

Any array whose namespace implements the Array API standard reaches Advect through value.__array_namespace__(); provider-neutral functions are written against that namespace rather than a specific package. Advect qualifies the standard revisions 2022.12 through 2024.12; staging can target any listed revision, and NumPy selects the newest revision implemented by its installed minor release.

Providers

Provider Status
NumPy Qualified through its first-class frontend; see NumPy for the minor-to-revision mapping
array-api-strict Qualified through __array_namespace__() for all three revisions below
CuPy Built-in single-device compatibility path; see CuPy

The fallback handles raw provider arrays at Advect's input boundary; it does not make an array traceable when its namespace does not implement the standard.

Qualified revisions

Revision Official callables Complete Advect contracts
2022.12 152 151
2023.12 164 162
2024.12 170 168

The 2022.12 revision is the baseline; later revisions extend it. Its callable set appears below, followed by additions, changes, and the few official functions with a remaining boundary.

Every listed function works in dynamic transforms. Stage/save says whether the same call can appear in a staged and serialized program. Differentiate reports user-visible derivative support. No means no derivative rule is available; n/a marks a structural or mathematically nondifferentiable operation.

Array API 2022.12 baseline

Function Stage/save Differentiate
abs yes yes
acos yes yes
acosh yes yes
add yes yes
all yes n/a
any yes n/a
arange yes no
argmax yes n/a
argmin yes n/a
argsort yes n/a
asarray yes yes
asin yes yes
asinh yes yes
astype yes yes
atan yes yes
atan2 yes yes
atanh yes yes
bitwise_and yes n/a
bitwise_invert yes n/a
bitwise_left_shift yes no
bitwise_or yes n/a
bitwise_right_shift yes no
bitwise_xor yes n/a
broadcast_arrays yes yes
broadcast_to yes yes
can_cast yes n/a
ceil yes yes
concat yes yes
conj yes yes
cos yes yes
cosh yes yes
divide yes yes
empty yes no
empty_like yes yes
equal yes n/a
exp yes yes
expand_dims yes yes
expm1 yes yes
eye yes no
fft.fft yes yes
fft.fftfreq yes no
fft.fftn yes yes
fft.fftshift yes yes
fft.hfft yes yes
fft.ifft yes yes
fft.ifftn yes yes
fft.ifftshift yes yes
fft.ihfft yes yes
fft.irfft yes yes
fft.irfftn yes yes
fft.rfft yes yes
fft.rfftfreq yes no
fft.rfftn yes yes
finfo yes n/a
flip yes yes
floor yes yes
floor_divide yes yes
full yes yes
full_like yes yes
greater yes n/a
greater_equal yes n/a
iinfo yes n/a
imag yes yes
isdtype yes n/a
isfinite yes n/a
isinf yes n/a
isnan yes n/a
less yes n/a
less_equal yes n/a
linalg.cholesky yes yes
linalg.cross yes yes
linalg.det yes yes
linalg.diagonal yes yes
linalg.eigh yes yes
linalg.eigvalsh yes yes
linalg.inv yes yes
linalg.matmul yes yes
linalg.matrix_norm yes yes
linalg.matrix_power yes yes
linalg.matrix_rank yes n/a
linalg.matrix_transpose yes yes
linalg.outer yes yes
linalg.pinv yes yes
linalg.qr yes yes
linalg.slogdet yes yes
linalg.solve yes yes
linalg.svd yes yes
linalg.svdvals yes yes
linalg.tensordot yes yes
linalg.trace yes yes
linalg.vecdot yes yes
linalg.vector_norm yes yes
linspace yes yes
log yes yes
log10 yes yes
log1p yes yes
log2 yes yes
logaddexp yes yes
logical_and yes n/a
logical_not yes n/a
logical_or yes n/a
logical_xor yes n/a
matmul yes yes
matrix_transpose yes yes
max yes yes
mean yes yes
meshgrid yes yes
min yes yes
multiply yes yes
negative yes yes
nonzero no n/a
not_equal yes n/a
ones yes no
ones_like yes yes
permute_dims yes yes
positive yes yes
pow yes yes
prod yes yes
real yes yes
remainder yes yes
reshape yes yes
result_type yes n/a
roll yes yes
round yes yes
sign yes yes
sin yes yes
sinh yes yes
sort yes yes
sqrt yes yes
square yes yes
squeeze yes yes
stack yes yes
std yes yes
subtract yes yes
sum yes yes
take yes yes
tan yes yes
tanh yes yes
tensordot yes yes
tril yes yes
triu yes yes
trunc yes yes
unique_all no yes
unique_counts no yes
unique_inverse no yes
unique_values no yes
var yes yes
vecdot yes yes
where yes yes
zeros yes no
zeros_like yes yes

Added in 2023.12

Function Stage/save Differentiate
clip yes yes
copysign yes yes
cumulative_sum yes yes
hypot yes yes
maximum yes yes
minimum yes yes
moveaxis yes yes
repeat yes yes
searchsorted yes n/a
signbit yes n/a
tile yes yes
unstack yes yes

Changed in 2023.12

Callable Change
astype signature: (x, dtype, /, *, copy=True)(x, dtype, /, *, copy=True, device=None)
from_dlpack signature: (x, /)(x, /, *, device=None, copy=None)

Added in 2024.12

Function Stage/save Differentiate
count_nonzero yes n/a
cumulative_prod yes yes
diff yes yes
nextafter yes yes
reciprocal yes yes
take_along_axis yes yes

Changed in 2024.12

Callable Change
fft.fftfreq signature: (n, /, *, d=1.0, device=None)(n, /, *, d=1.0, dtype=None, device=None)
fft.rfftfreq signature: (n, /, *, d=1.0, device=None)(n, /, *, d=1.0, dtype=None, device=None)

Limits

These official functions are either unsupported or supported with the boundary shown. Unlisted provider behavior is not a public claim.

Callable Since Boundary
from_dlpack 2022.12 unsupported — no qualification case exercises it
repeat 2023.12 array-valued repeats are not traceable

$

[1:docs] [2:playground] $ man advect/compatibility/array-api