|
4 | 4 |
|
5 | 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 | 6 |
|
| 7 | +## v2024.12 |
| 8 | + |
| 9 | +### Updates |
| 10 | + |
| 11 | +> Updates to existing APIs and requirements. |
| 12 | +
|
| 13 | +#### Normative |
| 14 | + |
| 15 | +- Clarify that conforming implementations may support additional arguments beyond those described in the Array API specification ([gh-870](https://github.com/data-apis/array-api/pull/870)) |
| 16 | +- Clarify accuracy requirements for operations involving complex numbers ([gh-882](https://github.com/data-apis/array-api/pull/882)) |
| 17 | +- Clarify expected results for in-place operations in conforming array libraries which do not support array mutation ([gh-895](https://github.com/data-apis/array-api/pull/895)) |
| 18 | + |
| 19 | +#### APIs |
| 20 | + |
| 21 | +- `__dlpack__`: clarify the expected behavior of the `copy` keyword argument when `copy=True` ([gh-906](https://github.com/data-apis/array-api/pull/906)) |
| 22 | +- `__eq__`: clarify that cross-kind comparisons are unspecified ([gh-822](https://github.com/data-apis/array-api/pull/822)) |
| 23 | +- `__ge__`: clarify that cross-kind comparisons are unspecified ([gh-822](https://github.com/data-apis/array-api/pull/822)) |
| 24 | +- `__getitem__`: clarify that iteration is defined for one-dimensional arrays ([gh-821](https://github.com/data-apis/array-api/pull/821)) |
| 25 | +- `__gt__`: clarify that cross-kind comparisons are unspecified ([gh-822](https://github.com/data-apis/array-api/pull/822)) |
| 26 | +- `__le__`: clarify that cross-kind comparisons are unspecified ([gh-822](https://github.com/data-apis/array-api/pull/822)) |
| 27 | +- `__lt__`: clarify that cross-kind comparisons are unspecified ([gh-822](https://github.com/data-apis/array-api/pull/822)) |
| 28 | +- `__ne__`: clarify that cross-kind comparisons are unspecified ([gh-822](https://github.com/data-apis/array-api/pull/822)) |
| 29 | +- `asarray`: clarify the expected behavior of the `copy` keyword argument when `copy=True` ([gh-906](https://github.com/data-apis/array-api/pull/906)) |
| 30 | +- `astype`: clarify the expected behavior of the `copy` keyword argument when `copy=True` ([gh-906](https://github.com/data-apis/array-api/pull/906)) |
| 31 | +- `clip`: specify behavior when one of the operands is `NaN` ([gh-813](https://github.com/data-apis/array-api/pull/813); backported to v2023.12 revision of the Array API specification) |
| 32 | +- `clip`: clarify behavior when arguments have different data types ([gh-896](https://github.com/data-apis/array-api/pull/896)) |
| 33 | +- `conj`: add support for real-valued arrays ([gh-884](https://github.com/data-apis/array-api/pull/884)) |
| 34 | +- `cumulative_sum`: clarify that behavior when providing a zero-dimensional array is unspecified ([gh-851](https://github.com/data-apis/array-api/pull/851)) |
| 35 | +- `equal`: clarify that cross-kind comparisons are unspecified ([gh-822](https://github.com/data-apis/array-api/pull/822)) |
| 36 | +- `greater`: clarify that cross-kind comparisons are unspecified ([gh-822](https://github.com/data-apis/array-api/pull/822)) |
| 37 | +- `greater_equal`: clarify that cross-kind comparisons are unspecified ([gh-822](https://github.com/data-apis/array-api/pull/822)) |
| 38 | +- `less`: clarify that cross-kind comparisons are unspecified ([gh-822](https://github.com/data-apis/array-api/pull/822)) |
| 39 | +- `less_equal`: clarify that cross-kind comparisons are unspecified ([gh-822](https://github.com/data-apis/array-api/pull/822)) |
| 40 | +- `mean`: add support for complex floating-point data types ([gh-850](https://github.com/data-apis/array-api/pull/850)) |
| 41 | +- `not_equal`: clarify that cross-kind comparisons are unspecified ([gh-822](https://github.com/data-apis/array-api/pull/822)) |
| 42 | +- `real`: add support for real-valued arrays ([gh-884](https://github.com/data-apis/array-api/pull/884)) |
| 43 | +- `reshape`: clarify the expected behavior of the `copy` keyword argument when `copy=True` ([gh-906](https://github.com/data-apis/array-api/pull/906)) |
| 44 | +- `sqrt`: clarify that results must be correctly rounded according to IEEE 754 ([gh-882](https://github.com/data-apis/array-api/pull/882)) |
| 45 | +- `take`: clarify that behavior when provided a zero-dimensional input array is unspecified ([gh-876](https://github.com/data-apis/array-api/pull/876)) |
| 46 | +- `take`: clarify support for negative indices ([gh-894](https://github.com/data-apis/array-api/pull/894)) |
| 47 | + |
| 48 | +##### Scalar Argument Support |
| 49 | + |
| 50 | +The following APIs were updated to support both scalar and array arguments for one or more arguments: |
| 51 | + |
| 52 | +- `add` ([gh-862](https://github.com/data-apis/array-api/pull/862)) |
| 53 | +- `atan2` ([gh-862](https://github.com/data-apis/array-api/pull/862)) |
| 54 | +- `bitwise_and` ([gh-862](https://github.com/data-apis/array-api/pull/862)) |
| 55 | +- `bitwise_left_shift` ([gh-862](https://github.com/data-apis/array-api/pull/862)) |
| 56 | +- `bitwise_or` ([gh-862](https://github.com/data-apis/array-api/pull/862)) |
| 57 | +- `bitwise_right_shift` ([gh-862](https://github.com/data-apis/array-api/pull/862)) |
| 58 | +- `bitwise_xor` ([gh-862](https://github.com/data-apis/array-api/pull/862)) |
| 59 | +- `copysign` ([gh-862](https://github.com/data-apis/array-api/pull/862)) |
| 60 | +- `divide` ([gh-862](https://github.com/data-apis/array-api/pull/862)) |
| 61 | +- `equal` ([gh-862](https://github.com/data-apis/array-api/pull/862)) |
| 62 | +- `floor_divide` ([gh-862](https://github.com/data-apis/array-api/pull/862)) |
| 63 | +- `greater` ([gh-862](https://github.com/data-apis/array-api/pull/862)) |
| 64 | +- `greater_equal` ([gh-862](https://github.com/data-apis/array-api/pull/862)) |
| 65 | +- `hypot` ([gh-862](https://github.com/data-apis/array-api/pull/862)) |
| 66 | +- `less` ([gh-862](https://github.com/data-apis/array-api/pull/862)) |
| 67 | +- `less_equal` ([gh-862](https://github.com/data-apis/array-api/pull/862)) |
| 68 | +- `logaddexp` ([gh-862](https://github.com/data-apis/array-api/pull/862)) |
| 69 | +- `logical_and` ([gh-862](https://github.com/data-apis/array-api/pull/862)) |
| 70 | +- `logical_or` ([gh-862](https://github.com/data-apis/array-api/pull/862)) |
| 71 | +- `logical_xor` ([gh-862](https://github.com/data-apis/array-api/pull/862)) |
| 72 | +- `maximum` ([gh-862](https://github.com/data-apis/array-api/pull/862)) |
| 73 | +- `minimum` ([gh-862](https://github.com/data-apis/array-api/pull/862)) |
| 74 | +- `multiply` ([gh-862](https://github.com/data-apis/array-api/pull/862)) |
| 75 | +- `nextafter` ([gh-862](https://github.com/data-apis/array-api/pull/862)) |
| 76 | +- `not_equal` ([gh-862](https://github.com/data-apis/array-api/pull/862)) |
| 77 | +- `pow` ([gh-862](https://github.com/data-apis/array-api/pull/862)) |
| 78 | +- `remainder` ([gh-862](https://github.com/data-apis/array-api/pull/862)) |
| 79 | +- `result_type` ([gh-873](https://github.com/data-apis/array-api/pull/873)) |
| 80 | +- `subtract` ([gh-862](https://github.com/data-apis/array-api/pull/862)) |
| 81 | +- `where` ([gh-860](https://github.com/data-apis/array-api/pull/860)) |
| 82 | + |
| 83 | +#### Extensions |
| 84 | + |
| 85 | +> Updates to APIs and requirements included as part of specification extensions. |
| 86 | +
|
| 87 | +- `fft.fftfreq`: add `dtype` keyword argument ([gh-885](https://github.com/data-apis/array-api/pull/885)) |
| 88 | +- `fft.rfftfreq`: add `dtype` keyword argument ([gh-885](https://github.com/data-apis/array-api/pull/885)) |
| 89 | + |
| 90 | +* * * |
| 91 | + |
| 92 | +### Additions |
| 93 | + |
| 94 | +> New APIs and requirements added to the specification. |
| 95 | +
|
| 96 | +#### Normative |
| 97 | + |
| 98 | +- Add support for integer array indexing ([gh-900](https://github.com/data-apis/array-api/pull/900)) |
| 99 | + |
| 100 | +#### APIs |
| 101 | + |
| 102 | +The following APIs were added to the specification: |
| 103 | + |
| 104 | +- `count_nonzero`: count the number of array elements which are non-zero ([gh-803](https://github.com/data-apis/array-api/pull/803)) |
| 105 | +- `cumulative_prod`: calculate the cumulative product ([gh-793](https://github.com/data-apis/array-api/pull/793)) |
| 106 | +- `diff`: calculate the n-th discrete forward difference along a specified axis ([gh-791](https://github.com/data-apis/array-api/pull/791), [gh-881](https://github.com/data-apis/array-api/pull/881)) |
| 107 | +- `nextafter`: return the next representable floating-point value for each element in an array ([gh-792](https://github.com/data-apis/array-api/pull/792)) |
| 108 | +- `reciprocal`: return the reciprocal for each element in an array ([gh-802](https://github.com/data-apis/array-api/pull/802)) |
| 109 | +- `take_along_axis`: return elements from an array at locations specified by one-dimensional indices along an axis ([gh-816](https://github.com/data-apis/array-api/pull/816)) |
| 110 | + |
| 111 | +#### Inspection APIs |
| 112 | + |
| 113 | +The following inspection APIs were added to the specification: |
| 114 | + |
| 115 | +- `max dimensions`: return the maximum number of supported dimensions ([gh-763](https://github.com/data-apis/array-api/pull/763) and [gh-809](https://github.com/data-apis/array-api/pull/809)) |
| 116 | + |
| 117 | +* * * |
| 118 | + |
| 119 | +### Breaking Changes |
| 120 | + |
| 121 | +The following is a list of breaking changes relative to the previous version of the specification: |
| 122 | + |
| 123 | +#### Normative |
| 124 | + |
| 125 | +- An operation involving a Python `complex` scalar and a real-valued floating-point arrays must be equivalent to an operation involving a zero-dimensional array having a complex floating-point data type and a real-valued floating-point array ([gh-871](https://github.com/data-apis/array-api/pull/871)) |
| 126 | + |
| 127 | +#### APIs |
| 128 | + |
| 129 | +- `can_cast`: application of type promotion rules must account for device context ([gh-889](https://github.com/data-apis/array-api/pull/889)) |
| 130 | +- `result_type`: application of type promotion rules must account for device context ([gh-889](https://github.com/data-apis/array-api/pull/889)) |
| 131 | + |
| 132 | +* * * |
| 133 | + |
| 134 | +### Errata |
| 135 | + |
| 136 | +The following is a list of fixes and points of clarification with regard to the previous version of the specification: |
| 137 | + |
| 138 | +- `__add__`: fix typing for `other` argument ([gh-https://github.com/data-apis/array-api/pull/905](https://github.com/data-apis/array-api/pull/905)) |
| 139 | +- `__bool__`: fix typo in special case notes ([gh-785](https://github.com/data-apis/array-api/pull/785)) |
| 140 | +- `__dlpack__`: resolve conflicting exception guidance ([gh-887](https://github.com/data-apis/array-api/pull/887)) |
| 141 | +- `__eq__`: fix typing for `other` argument ([gh-https://github.com/data-apis/array-api/pull/905](https://github.com/data-apis/array-api/pull/905)) |
| 142 | +- `__getitem__`: clarify required indexing semantics ([gh-821](https://github.com/data-apis/array-api/pull/821)) |
| 143 | +- `__mul__`: fix typing for `other` argument ([gh-https://github.com/data-apis/array-api/pull/905](https://github.com/data-apis/array-api/pull/905)) |
| 144 | +- `__ne__`: fix typing for `other` argument ([gh-https://github.com/data-apis/array-api/pull/905](https://github.com/data-apis/array-api/pull/905)) |
| 145 | +- `__pow__`: fix typing for `other` argument ([gh-https://github.com/data-apis/array-api/pull/905](https://github.com/data-apis/array-api/pull/905)) |
| 146 | +- `__setitem__`: clarify required indexing semantics ([gh-821](https://github.com/data-apis/array-api/pull/821)) |
| 147 | +- `__setitem__`: fix typing for `value` argument ([gh-https://github.com/data-apis/array-api/pull/905](https://github.com/data-apis/array-api/pull/905)) |
| 148 | +- `__sub__`: fix typing for `other` argument ([gh-https://github.com/data-apis/array-api/pull/905](https://github.com/data-apis/array-api/pull/905)) |
| 149 | +- `__truediv__`: fix typing for `other` argument ([gh-https://github.com/data-apis/array-api/pull/905](https://github.com/data-apis/array-api/pull/905)) |
| 150 | +- `broadcast_to`: clarify broadcast behavior ([gh-888](https://github.com/data-apis/array-api/pull/888)) |
| 151 | +- `broadcast_to`: clarify required exception behavior ([gh-897](https://github.com/data-apis/array-api/pull/897)) |
| 152 | +- `clip`: clarify that the operation is only defined when elements in `min` and `max` are inside the bounds of the input array data type ([gh-814](https://github.com/data-apis/array-api/pull/814)) |
| 153 | +- `clip`: fix typo in parameter description ([gh-896](https://github.com/data-apis/array-api/pull/896)) |
| 154 | +- `copysign`: fix formatting of special cases ([gh-806](https://github.com/data-apis/array-api/pull/806)) |
| 155 | +- `fft.fft`: fix typo in function description ([gh-806](https://github.com/data-apis/array-api/pull/806)) |
| 156 | +- `fft.ifft`: fix typo in function description ([gh-806](https://github.com/data-apis/array-api/pull/806)) |
| 157 | +- `fft.fftn`: fix typo in function description ([gh-806](https://github.com/data-apis/array-api/pull/806)) |
| 158 | +- `fft.ifftn`: fix typo in function description ([gh-806](https://github.com/data-apis/array-api/pull/806)) |
| 159 | +- `fft.irfft`: fix typo in function description ([gh-806](https://github.com/data-apis/array-api/pull/806)) |
| 160 | +- `fft.irfftn`: fix typo in function description ([gh-806](https://github.com/data-apis/array-api/pull/806)) |
| 161 | +- `fft.hfft`: fix typo in function description ([gh-806](https://github.com/data-apis/array-api/pull/806)) |
| 162 | +- `linalg.solve`: clarify broadcasting semantics and output shape ([gh-810](https://github.com/data-apis/array-api/pull/810)) |
| 163 | +- `nonzero`: fix return type ([gh-803](https://github.com/data-apis/array-api/pull/803) and [gh-https://github.com/data-apis/array-api/pull/904](https://github.com/data-apis/array-api/pull/904)) |
| 164 | +- `searchsorted`: fix incorrect boundary conditions ([gh-898](https://github.com/data-apis/array-api/pull/898)) |
| 165 | +- `sign`: fix equation in function description ([gh-844](https://github.com/data-apis/array-api/pull/844)) |
| 166 | +- `tile`: fix missing return type ([gh-798](https://github.com/data-apis/array-api/pull/798)) |
| 167 | +- `unstack`: fix typo in function description ([gh-810](https://github.com/data-apis/array-api/pull/810)) |
| 168 | +- `vecdot`: fix regression in default value for `axis` keyword argument ([gh-880](https://github.com/data-apis/array-api/pull/880)) |
| 169 | +- `where`: clarify that the `condition` argument should have a boolean data type ([gh-868](https://github.com/data-apis/array-api/pull/868)) |
| 170 | + |
| 171 | +* * * |
| 172 | + |
7 | 173 | ## v2023.12
|
8 | 174 |
|
9 | 175 | ### Updates
|
|
0 commit comments