Specification changelog.
This changelog is organized by specification version and notes all changes with respect to the previous version. Within the section for a specific version (e.g., v2022.12), separate sections are used for (a) changes to existing APIs and requirements, (b) new APIs and new requirements, and (c) errata.
Updates to existing APIs and requirements.
__bool__
: add support for non-boolean data types (gh-497)__dlpack__
: raiseBufferError
when data cannot be exported as DLPack (gh-498)__float__
: add support for non-floating-point data types (gh-497)__int__
: add support for non-integer data types (gh-497)
The following APIs were updated to support arrays having complex floating-point data types:
__abs__
(gh-546)__add__
(gh-525)__eq__
(gh-528)__matmul__
(gh-557)__mul__
(gh-551)__ne__
(gh-529)__neg__
(gh-448)__pos__
(gh-447)__pow__
(gh-537)__sub__
(gh-526)__truediv__
(gh-554)abs
(gh-546)acos
(gh-517)acosh
(gh-520)add
(gh-525)asin
(gh-521)asinh
(gh-522)atan
(gh-523)atanh
(gh-524)all
(gh-442)any
(gh-442)asarray
(gh-434)astype
(gh-445)cos
(gh-454)cosh
(gh-453)divide
(gh-554)equal
(gh-528)eye
(gh-436)exp
(gh-451)expm1
(gh-452)finfo
(gh-484)full
(gh-435)full_like
(gh-435)isfinite
(gh-531)isinf
(gh-530)isnan
(gh-532)linspace
(gh-568)log
(gh-514)log1p
(gh-534)log10
(gh-536)log2
(gh-535)matmul
(gh-557)meshgrid
(gh-437)multiply
(gh-551)negative
(gh-448)nonzero
(gh-441)not_equal
(gh-529)ones
(gh-438)ones_like
(gh-438)positive
(gh-447)pow
(gh-537)prod
(gh-553)round
(gh-440)sign
(gh-556)sin
(gh-457)sinh
(gh-456)square
(gh-552)sqrt
(gh-461)subtract
(gh-526)sum
(gh-538)tan
(gh-459)tanh
(gh-458)tensordot
(gh-558)unique_all
(gh-540)unique_counts
(gh-540)unique_inverse
(gh-540)unique_values
(gh-540)vecdot
(gh-512)
Updates to APIs and requirements included as part of specification extensions.
- Mechanism by which to access extension APIs (gh-470)
linalg.cross
: add support for broadcasting (gh-417)linalg.trace
: add support for specifying output array data type (gh-502)
The following APIs were updated to support arrays having complex floating-point data types:
linalg.cholesky
(gh-443)linalg.cross
(gh-559)linalg.det
(gh-542)linalg.eigh
(gh-543)linalg.eigvalsh
(gh-543)linalg.inv
(gh-547)linalg.matrix_norm
(gh-565)linalg.matrix_power
(gh-549)linalg.matrix_rank
(gh-563)linalg.outer
(gh-560)linalg.pinv
(gh-564)linalg.qr
(gh-548)linalg.slogdet
(gh-567)linalg.solve
(gh-566)linalg.svd
(gh-561)linalg.svdvals
(gh-562)linalg.trace
(gh-541)linalg.vector_norm
(gh-550)
New APIs and requirements added to the specification.
The following data types were added to the specification:
complex64
: single-precision complex floating-point numbers (gh-418)complex128
: double-precision complex floating-point numbers (gh-418)
To support complex floating-point numbers, the following requirements were added to the specification:
- Type promotion rules: real-complex and complex-complex data type promotion guidance (gh-491)
- Guidance for mixing arrays and Python
complex
scalars (gh-513) - Guidance for data type variability across devices (gh-515)
- Guidance for complex number ordering (gh-527)
- Guidance for complex number equality (gh-528)
- Guidance for value-based promotion when results are outside of their real domain (gh-573)
note: conforming implementations must define a default complex floating-point data type.
The following APIs were added to the specification:
__array_api_version__
: string representing the version of the array API specification (gh-480)__complex__
: convert a zero-dimensional array to a Pythoncomplex
object (gh-497)conj
: return the complex conjugate of a complex number (gh-446)finfo.dtype
: floating-point data type (gh-485)iinfo.dtype
: integer data type (gh-485)imag
: return the imaginary component of a complex number (gh-496)isdtype
: test whether a provideddtype
is of a specified data type kind (gh-503)real
: return the real component of a complex number (gh-427)take
: return elements of an array along a specified axis (gh-416)
The following optional extensions were added to the specification:
-
fft
: Fast Fourier Transforms (FFT) (gh-189)fft
ifft
fftn
ifftn
rfft
rfftn
irfft
irfttn
fftfreq
rfftfreq
fftshift
ifftshift
The following is a list of fixes and points of clarification with regard to the previous version of the specification:
- Missing
self
parameter for array object properties (gh-464) __setitem__
: clarify that in-place element-wise operations must not change the shape of the in-place array as a result of broadcasting (gh-429)full
: missing type annotation forbool
fill values (gh-435)full_like
: missing type annotation forbool
fill values (gh-435)iinfo
: fix typo in description (gh-439)linalg.eigh
: fix input data type to allow non-floating-point data types for backward compat in alignment with otherlinalg
APIs (gh-572)linalg.eigvalsh
: fix input data type to allow non-floating-point data types for backward compat in alignment with otherlinalg
APIs (gh-572)linalg.matrix_rank
: fix return data type (gh-510)linalg.trace
: clarify special cases for floating-point operands and the empty sum (gh-502)linspace
: conversion ofstart
andstop
should follow type promotion rules (gh-568)nonzero
: clarify that, for arrays having a boolean data type, non-zero elements are those elements which equalTrue
(gh-441)trunc
: fix description (gh-511)vecdot
: clarify broadcasting behavior (gh-417 and gh-473)