Skip to content

Commit b186a1c

Browse files
authored
Add a changelog for tracking specification changes across versions (#574)
1 parent bb0cc71 commit b186a1c

File tree

1 file changed

+199
-0
lines changed

1 file changed

+199
-0
lines changed

CHANGELOG.md

+199
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,199 @@
1+
# Changelog
2+
3+
> Specification changelog.
4+
5+
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.
6+
7+
## v2022.12
8+
9+
### Updates
10+
11+
> Updates to existing APIs and requirements.
12+
13+
#### APIs
14+
15+
- `__bool__`: add support for non-boolean data types ([gh-497](https://github.com/data-apis/array-api/pull/497))
16+
- `__dlpack__`: raise `BufferError` when data cannot be exported as DLPack ([gh-498](https://github.com/data-apis/array-api/pull/498))
17+
- `__float__`: add support for non-floating-point data types ([gh-497](https://github.com/data-apis/array-api/pull/497))
18+
- `__int__`: add support for non-integer data types ([gh-497](https://github.com/data-apis/array-api/pull/497))
19+
20+
##### Complex Number Support
21+
22+
The following APIs were updated to support arrays having complex floating-point data types:
23+
24+
- `__abs__`([gh-546](https://github.com/data-apis/array-api/pull/546))
25+
- `__add__`([gh-525](https://github.com/data-apis/array-api/pull/525))
26+
- `__eq__`([gh-528](https://github.com/data-apis/array-api/pull/528))
27+
- `__matmul__`([gh-557](https://github.com/data-apis/array-api/pull/557))
28+
- `__mul__`([gh-551](https://github.com/data-apis/array-api/pull/551))
29+
- `__ne__`([gh-529](https://github.com/data-apis/array-api/pull/529))
30+
- `__neg__`([gh-448](https://github.com/data-apis/array-api/pull/448))
31+
- `__pos__`([gh-447](https://github.com/data-apis/array-api/pull/447))
32+
- `__pow__`([gh-537](https://github.com/data-apis/array-api/pull/537))
33+
- `__sub__`([gh-526](https://github.com/data-apis/array-api/pull/526))
34+
- `__truediv__`([gh-554](https://github.com/data-apis/array-api/pull/554))
35+
- `abs`([gh-546](https://github.com/data-apis/array-api/pull/546))
36+
- `acos`([gh-517](https://github.com/data-apis/array-api/pull/517))
37+
- `acosh`([gh-520](https://github.com/data-apis/array-api/pull/520))
38+
- `add`([gh-525](https://github.com/data-apis/array-api/pull/525))
39+
- `asin`([gh-521](https://github.com/data-apis/array-api/pull/521))
40+
- `asinh`([gh-522](https://github.com/data-apis/array-api/pull/522))
41+
- `atan`([gh-523](https://github.com/data-apis/array-api/pull/523))
42+
- `atanh`([gh-524](https://github.com/data-apis/array-api/pull/524))
43+
- `all`([gh-442](https://github.com/data-apis/array-api/pull/442))
44+
- `any`([gh-442](https://github.com/data-apis/array-api/pull/442))
45+
- `asarray`([gh-434](https://github.com/data-apis/array-api/pull/434))
46+
- `astype`([gh-445](https://github.com/data-apis/array-api/pull/445))
47+
- `cos`([gh-454](https://github.com/data-apis/array-api/pull/454))
48+
- `cosh`([gh-453](https://github.com/data-apis/array-api/pull/453))
49+
- `divide`([gh-554](https://github.com/data-apis/array-api/pull/554))
50+
- `equal`([gh-528](https://github.com/data-apis/array-api/pull/528))
51+
- `eye`([gh-436](https://github.com/data-apis/array-api/pull/436))
52+
- `exp`([gh-451](https://github.com/data-apis/array-api/pull/451))
53+
- `expm1`([gh-452](https://github.com/data-apis/array-api/pull/452))
54+
- `finfo`([gh-484](https://github.com/data-apis/array-api/pull/484))
55+
- `full`([gh-435](https://github.com/data-apis/array-api/pull/435))
56+
- `full_like`([gh-435](https://github.com/data-apis/array-api/pull/435))
57+
- `isfinite`([gh-531](https://github.com/data-apis/array-api/pull/531))
58+
- `isinf`([gh-530](https://github.com/data-apis/array-api/pull/530))
59+
- `isnan`([gh-532](https://github.com/data-apis/array-api/pull/532))
60+
- `linspace`([gh-568](https://github.com/data-apis/array-api/pull/568))
61+
- `log`([gh-514](https://github.com/data-apis/array-api/pull/514))
62+
- `log1p`([gh-534](https://github.com/data-apis/array-api/pull/534))
63+
- `log10`([gh-536](https://github.com/data-apis/array-api/pull/536))
64+
- `log2`([gh-535](https://github.com/data-apis/array-api/pull/535))
65+
- `matmul`([gh-557](https://github.com/data-apis/array-api/pull/557))
66+
- `meshgrid`([gh-437](https://github.com/data-apis/array-api/pull/437))
67+
- `multiply`([gh-551](https://github.com/data-apis/array-api/pull/551))
68+
- `negative`([gh-448](https://github.com/data-apis/array-api/pull/448))
69+
- `nonzero`([gh-441](https://github.com/data-apis/array-api/pull/441))
70+
- `not_equal`([gh-529](https://github.com/data-apis/array-api/pull/529))
71+
- `ones`([gh-438](https://github.com/data-apis/array-api/pull/438))
72+
- `ones_like`([gh-438](https://github.com/data-apis/array-api/pull/438))
73+
- `positive`([gh-447](https://github.com/data-apis/array-api/pull/447))
74+
- `pow`([gh-537](https://github.com/data-apis/array-api/pull/537))
75+
- `prod`([gh-553](https://github.com/data-apis/array-api/pull/553))
76+
- `round`([gh-440](https://github.com/data-apis/array-api/pull/440))
77+
- `sign`([gh-556](https://github.com/data-apis/array-api/pull/556))
78+
- `sin`([gh-457](https://github.com/data-apis/array-api/pull/457))
79+
- `sinh`([gh-456](https://github.com/data-apis/array-api/pull/456))
80+
- `square`([gh-552](https://github.com/data-apis/array-api/pull/552))
81+
- `sqrt`([gh-461](https://github.com/data-apis/array-api/pull/461))
82+
- `subtract`([gh-526](https://github.com/data-apis/array-api/pull/526))
83+
- `sum`([gh-538](https://github.com/data-apis/array-api/pull/538))
84+
- `tan`([gh-459](https://github.com/data-apis/array-api/pull/459))
85+
- `tanh`([gh-458](https://github.com/data-apis/array-api/pull/458))
86+
- `tensordot`([gh-558](https://github.com/data-apis/array-api/pull/558))
87+
- `unique_all`([gh-540](https://github.com/data-apis/array-api/pull/540))
88+
- `unique_counts`([gh-540](https://github.com/data-apis/array-api/pull/540))
89+
- `unique_inverse`([gh-540](https://github.com/data-apis/array-api/pull/540))
90+
- `unique_values`([gh-540](https://github.com/data-apis/array-api/pull/540))
91+
- `vecdot`([gh-512](https://github.com/data-apis/array-api/pull/512))
92+
93+
#### Extensions
94+
95+
> Updates to APIs and requirements included as part of specification extensions.
96+
97+
- Mechanism by which to access extension APIs ([gh-470](https://github.com/data-apis/array-api/pull/470))
98+
- `linalg.cross`: add support for broadcasting ([gh-417](https://github.com/data-apis/array-api/pull/417))
99+
- `linalg.trace`: add support for specifying output array data type ([gh-502](https://github.com/data-apis/array-api/pull/502))
100+
101+
##### Complex Number Support
102+
103+
The following APIs were updated to support arrays having complex floating-point data types:
104+
105+
- `linalg.cholesky`([gh-443](https://github.com/data-apis/array-api/pull/443))
106+
- `linalg.cross`([gh-559](https://github.com/data-apis/array-api/pull/559))
107+
- `linalg.det`([gh-542](https://github.com/data-apis/array-api/pull/542))
108+
- `linalg.eigh`([gh-543](https://github.com/data-apis/array-api/pull/543))
109+
- `linalg.eigvalsh`([gh-543](https://github.com/data-apis/array-api/pull/543))
110+
- `linalg.inv`([gh-547](https://github.com/data-apis/array-api/pull/547))
111+
- `linalg.matrix_norm`([gh-565](https://github.com/data-apis/array-api/pull/565))
112+
- `linalg.matrix_power`([gh-549](https://github.com/data-apis/array-api/pull/549))
113+
- `linalg.matrix_rank`([gh-563](https://github.com/data-apis/array-api/pull/563))
114+
- `linalg.outer`([gh-560](https://github.com/data-apis/array-api/pull/560))
115+
- `linalg.pinv`([gh-564](https://github.com/data-apis/array-api/pull/564))
116+
- `linalg.qr`([gh-548](https://github.com/data-apis/array-api/pull/548))
117+
- `linalg.slogdet`([gh-567](https://github.com/data-apis/array-api/pull/567))
118+
- `linalg.solve`([gh-566](https://github.com/data-apis/array-api/pull/566))
119+
- `linalg.svd`([gh-561](https://github.com/data-apis/array-api/pull/561))
120+
- `linalg.svdvals`([gh-562](https://github.com/data-apis/array-api/pull/562))
121+
- `linalg.trace`([gh-541](https://github.com/data-apis/array-api/pull/541))
122+
- `linalg.vector_norm`([gh-550](https://github.com/data-apis/array-api/pull/550))
123+
124+
* * *
125+
126+
### Additions
127+
128+
> New APIs and requirements added to the specification.
129+
130+
#### Data Types
131+
132+
The following data types were added to the specification:
133+
134+
- `complex64`: single-precision complex floating-point numbers ([gh-418](https://github.com/data-apis/array-api/pull/418))
135+
- `complex128`: double-precision complex floating-point numbers ([gh-418](https://github.com/data-apis/array-api/pull/418))
136+
137+
To support complex floating-point numbers, the following requirements were added to the specification:
138+
139+
- Type promotion rules: real-complex and complex-complex data type promotion guidance ([gh-491](https://github.com/data-apis/array-api/pull/491))
140+
- Guidance for mixing arrays and Python `complex` scalars ([gh-513](https://github.com/data-apis/array-api/pull/513))
141+
- Guidance for data type variability across devices ([gh-515](https://github.com/data-apis/array-api/pull/515))
142+
- Guidance for complex number ordering ([gh-527](https://github.com/data-apis/array-api/pull/527))
143+
- Guidance for complex number equality ([gh-528](https://github.com/data-apis/array-api/pull/528))
144+
- Guidance for value-based promotion when results are outside of their real domain ([gh-573](https://github.com/data-apis/array-api/pull/573))
145+
146+
**note**: conforming implementations must define a default complex floating-point data type.
147+
148+
#### APIs
149+
150+
The following APIs were added to the specification:
151+
152+
- `__array_api_version__`: string representing the version of the array API specification ([gh-480](https://github.com/data-apis/array-api/pull/480))
153+
- `__complex__`: convert a zero-dimensional array to a Python `complex` object ([gh-497](https://github.com/data-apis/array-api/pull/497))
154+
- `conj`: return the complex conjugate of a complex number ([gh-446](https://github.com/data-apis/array-api/pull/446))
155+
- `finfo.dtype`: floating-point data type ([gh-485](https://github.com/data-apis/array-api/pull/485))
156+
- `iinfo.dtype`: integer data type ([gh-485](https://github.com/data-apis/array-api/pull/485))
157+
- `imag`: return the imaginary component of a complex number ([gh-496](https://github.com/data-apis/array-api/pull/496))
158+
- `isdtype`: test whether a provided `dtype` is of a specified data type kind ([gh-503](https://github.com/data-apis/array-api/pull/503))
159+
- `real`: return the real component of a complex number ([gh-427](https://github.com/data-apis/array-api/pull/427))
160+
- `take`: return elements of an array along a specified axis ([gh-416](https://github.com/data-apis/array-api/pull/416))
161+
162+
#### Extensions
163+
164+
The following optional extensions were added to the specification:
165+
166+
- `fft`: Fast Fourier Transforms (FFT) ([gh-189](https://github.com/data-apis/array-api/pull/189))
167+
168+
- `fft`
169+
- `ifft`
170+
- `fftn`
171+
- `ifftn`
172+
- `rfft`
173+
- `rfftn`
174+
- `irfft`
175+
- `irfttn`
176+
- `fftfreq`
177+
- `rfftfreq`
178+
- `fftshift`
179+
- `ifftshift`
180+
181+
* * *
182+
183+
### Errata
184+
185+
The following is a list of fixes and points of clarification with regard to the previous version of the specification:
186+
187+
- Missing `self` parameter for array object properties ([gh-464](https://github.com/data-apis/array-api/pull/464))
188+
- `__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](https://github.com/data-apis/array-api/pull/429))
189+
- `full`: missing type annotation for `bool` fill values ([gh-435](https://github.com/data-apis/array-api/pull/435))
190+
- `full_like`: missing type annotation for `bool` fill values ([gh-435](https://github.com/data-apis/array-api/pull/435))
191+
- `iinfo`: fix typo in description ([gh-439](https://github.com/data-apis/array-api/pull/439))
192+
- `linalg.eigh`: fix input data type to allow non-floating-point data types for backward compat in alignment with other `linalg` APIs ([gh-572](https://github.com/data-apis/array-api/pull/572))
193+
- `linalg.eigvalsh`: fix input data type to allow non-floating-point data types for backward compat in alignment with other `linalg` APIs ([gh-572](https://github.com/data-apis/array-api/pull/572))
194+
- `linalg.matrix_rank`: fix return data type ([gh-510](https://github.com/data-apis/array-api/pull/510))
195+
- `linalg.trace`: clarify special cases for floating-point operands and the empty sum ([gh-502](https://github.com/data-apis/array-api/pull/502))
196+
- `linspace`: conversion of `start` and `stop` should follow type promotion rules ([gh-568](https://github.com/data-apis/array-api/pull/568))
197+
- `nonzero`: clarify that, for arrays having a boolean data type, non-zero elements are those elements which equal `True` ([gh-441](https://github.com/data-apis/array-api/pull/441))
198+
- `trunc`: fix description ([gh-511](https://github.com/data-apis/array-api/pull/511))
199+
- `vecdot`: clarify broadcasting behavior ([gh-417](https://github.com/data-apis/array-api/pull/417) and [gh-473](https://github.com/data-apis/array-api/pull/473))

0 commit comments

Comments
 (0)