|
| 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