-
Notifications
You must be signed in to change notification settings - Fork 53
Add a changelog for tracking specification changes across versions #574
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from all commits
Commits
Show all changes
5 commits
Select commit
Hold shift + click to select a range
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,199 @@ | ||
# Changelog | ||
|
||
> 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. | ||
|
||
## v2022.12 | ||
|
||
### Updates | ||
|
||
> Updates to existing APIs and requirements. | ||
|
||
#### APIs | ||
|
||
kgryte marked this conversation as resolved.
Show resolved
Hide resolved
|
||
- `__bool__`: add support for non-boolean data types ([gh-497](https://github.com/data-apis/array-api/pull/497)) | ||
- `__dlpack__`: raise `BufferError` when data cannot be exported as DLPack ([gh-498](https://github.com/data-apis/array-api/pull/498)) | ||
- `__float__`: add support for non-floating-point data types ([gh-497](https://github.com/data-apis/array-api/pull/497)) | ||
- `__int__`: add support for non-integer data types ([gh-497](https://github.com/data-apis/array-api/pull/497)) | ||
|
||
##### Complex Number Support | ||
|
||
The following APIs were updated to support arrays having complex floating-point data types: | ||
|
||
- `__abs__`([gh-546](https://github.com/data-apis/array-api/pull/546)) | ||
- `__add__`([gh-525](https://github.com/data-apis/array-api/pull/525)) | ||
- `__eq__`([gh-528](https://github.com/data-apis/array-api/pull/528)) | ||
- `__matmul__`([gh-557](https://github.com/data-apis/array-api/pull/557)) | ||
- `__mul__`([gh-551](https://github.com/data-apis/array-api/pull/551)) | ||
- `__ne__`([gh-529](https://github.com/data-apis/array-api/pull/529)) | ||
- `__neg__`([gh-448](https://github.com/data-apis/array-api/pull/448)) | ||
- `__pos__`([gh-447](https://github.com/data-apis/array-api/pull/447)) | ||
- `__pow__`([gh-537](https://github.com/data-apis/array-api/pull/537)) | ||
- `__sub__`([gh-526](https://github.com/data-apis/array-api/pull/526)) | ||
- `__truediv__`([gh-554](https://github.com/data-apis/array-api/pull/554)) | ||
- `abs`([gh-546](https://github.com/data-apis/array-api/pull/546)) | ||
- `acos`([gh-517](https://github.com/data-apis/array-api/pull/517)) | ||
- `acosh`([gh-520](https://github.com/data-apis/array-api/pull/520)) | ||
- `add`([gh-525](https://github.com/data-apis/array-api/pull/525)) | ||
- `asin`([gh-521](https://github.com/data-apis/array-api/pull/521)) | ||
- `asinh`([gh-522](https://github.com/data-apis/array-api/pull/522)) | ||
- `atan`([gh-523](https://github.com/data-apis/array-api/pull/523)) | ||
- `atanh`([gh-524](https://github.com/data-apis/array-api/pull/524)) | ||
- `all`([gh-442](https://github.com/data-apis/array-api/pull/442)) | ||
- `any`([gh-442](https://github.com/data-apis/array-api/pull/442)) | ||
- `asarray`([gh-434](https://github.com/data-apis/array-api/pull/434)) | ||
- `astype`([gh-445](https://github.com/data-apis/array-api/pull/445)) | ||
- `cos`([gh-454](https://github.com/data-apis/array-api/pull/454)) | ||
- `cosh`([gh-453](https://github.com/data-apis/array-api/pull/453)) | ||
- `divide`([gh-554](https://github.com/data-apis/array-api/pull/554)) | ||
- `equal`([gh-528](https://github.com/data-apis/array-api/pull/528)) | ||
- `eye`([gh-436](https://github.com/data-apis/array-api/pull/436)) | ||
- `exp`([gh-451](https://github.com/data-apis/array-api/pull/451)) | ||
- `expm1`([gh-452](https://github.com/data-apis/array-api/pull/452)) | ||
- `finfo`([gh-484](https://github.com/data-apis/array-api/pull/484)) | ||
- `full`([gh-435](https://github.com/data-apis/array-api/pull/435)) | ||
- `full_like`([gh-435](https://github.com/data-apis/array-api/pull/435)) | ||
- `isfinite`([gh-531](https://github.com/data-apis/array-api/pull/531)) | ||
- `isinf`([gh-530](https://github.com/data-apis/array-api/pull/530)) | ||
- `isnan`([gh-532](https://github.com/data-apis/array-api/pull/532)) | ||
- `linspace`([gh-568](https://github.com/data-apis/array-api/pull/568)) | ||
- `log`([gh-514](https://github.com/data-apis/array-api/pull/514)) | ||
- `log1p`([gh-534](https://github.com/data-apis/array-api/pull/534)) | ||
- `log10`([gh-536](https://github.com/data-apis/array-api/pull/536)) | ||
- `log2`([gh-535](https://github.com/data-apis/array-api/pull/535)) | ||
- `matmul`([gh-557](https://github.com/data-apis/array-api/pull/557)) | ||
- `meshgrid`([gh-437](https://github.com/data-apis/array-api/pull/437)) | ||
- `multiply`([gh-551](https://github.com/data-apis/array-api/pull/551)) | ||
- `negative`([gh-448](https://github.com/data-apis/array-api/pull/448)) | ||
- `nonzero`([gh-441](https://github.com/data-apis/array-api/pull/441)) | ||
- `not_equal`([gh-529](https://github.com/data-apis/array-api/pull/529)) | ||
- `ones`([gh-438](https://github.com/data-apis/array-api/pull/438)) | ||
- `ones_like`([gh-438](https://github.com/data-apis/array-api/pull/438)) | ||
- `positive`([gh-447](https://github.com/data-apis/array-api/pull/447)) | ||
- `pow`([gh-537](https://github.com/data-apis/array-api/pull/537)) | ||
- `prod`([gh-553](https://github.com/data-apis/array-api/pull/553)) | ||
- `round`([gh-440](https://github.com/data-apis/array-api/pull/440)) | ||
- `sign`([gh-556](https://github.com/data-apis/array-api/pull/556)) | ||
- `sin`([gh-457](https://github.com/data-apis/array-api/pull/457)) | ||
- `sinh`([gh-456](https://github.com/data-apis/array-api/pull/456)) | ||
- `square`([gh-552](https://github.com/data-apis/array-api/pull/552)) | ||
- `sqrt`([gh-461](https://github.com/data-apis/array-api/pull/461)) | ||
- `subtract`([gh-526](https://github.com/data-apis/array-api/pull/526)) | ||
- `sum`([gh-538](https://github.com/data-apis/array-api/pull/538)) | ||
- `tan`([gh-459](https://github.com/data-apis/array-api/pull/459)) | ||
- `tanh`([gh-458](https://github.com/data-apis/array-api/pull/458)) | ||
- `tensordot`([gh-558](https://github.com/data-apis/array-api/pull/558)) | ||
- `unique_all`([gh-540](https://github.com/data-apis/array-api/pull/540)) | ||
- `unique_counts`([gh-540](https://github.com/data-apis/array-api/pull/540)) | ||
- `unique_inverse`([gh-540](https://github.com/data-apis/array-api/pull/540)) | ||
- `unique_values`([gh-540](https://github.com/data-apis/array-api/pull/540)) | ||
- `vecdot`([gh-512](https://github.com/data-apis/array-api/pull/512)) | ||
|
||
#### Extensions | ||
|
||
> Updates to APIs and requirements included as part of specification extensions. | ||
|
||
- Mechanism by which to access extension APIs ([gh-470](https://github.com/data-apis/array-api/pull/470)) | ||
- `linalg.cross`: add support for broadcasting ([gh-417](https://github.com/data-apis/array-api/pull/417)) | ||
- `linalg.trace`: add support for specifying output array data type ([gh-502](https://github.com/data-apis/array-api/pull/502)) | ||
|
||
##### Complex Number Support | ||
|
||
The following APIs were updated to support arrays having complex floating-point data types: | ||
|
||
- `linalg.cholesky`([gh-443](https://github.com/data-apis/array-api/pull/443)) | ||
- `linalg.cross`([gh-559](https://github.com/data-apis/array-api/pull/559)) | ||
- `linalg.det`([gh-542](https://github.com/data-apis/array-api/pull/542)) | ||
- `linalg.eigh`([gh-543](https://github.com/data-apis/array-api/pull/543)) | ||
- `linalg.eigvalsh`([gh-543](https://github.com/data-apis/array-api/pull/543)) | ||
- `linalg.inv`([gh-547](https://github.com/data-apis/array-api/pull/547)) | ||
- `linalg.matrix_norm`([gh-565](https://github.com/data-apis/array-api/pull/565)) | ||
- `linalg.matrix_power`([gh-549](https://github.com/data-apis/array-api/pull/549)) | ||
- `linalg.matrix_rank`([gh-563](https://github.com/data-apis/array-api/pull/563)) | ||
- `linalg.outer`([gh-560](https://github.com/data-apis/array-api/pull/560)) | ||
- `linalg.pinv`([gh-564](https://github.com/data-apis/array-api/pull/564)) | ||
- `linalg.qr`([gh-548](https://github.com/data-apis/array-api/pull/548)) | ||
- `linalg.slogdet`([gh-567](https://github.com/data-apis/array-api/pull/567)) | ||
- `linalg.solve`([gh-566](https://github.com/data-apis/array-api/pull/566)) | ||
- `linalg.svd`([gh-561](https://github.com/data-apis/array-api/pull/561)) | ||
- `linalg.svdvals`([gh-562](https://github.com/data-apis/array-api/pull/562)) | ||
- `linalg.trace`([gh-541](https://github.com/data-apis/array-api/pull/541)) | ||
- `linalg.vector_norm`([gh-550](https://github.com/data-apis/array-api/pull/550)) | ||
|
||
* * * | ||
|
||
### Additions | ||
kgryte marked this conversation as resolved.
Show resolved
Hide resolved
|
||
|
||
> New APIs and requirements added to the specification. | ||
|
||
#### Data Types | ||
|
||
The following data types were added to the specification: | ||
|
||
- `complex64`: single-precision complex floating-point numbers ([gh-418](https://github.com/data-apis/array-api/pull/418)) | ||
- `complex128`: double-precision complex floating-point numbers ([gh-418](https://github.com/data-apis/array-api/pull/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](https://github.com/data-apis/array-api/pull/491)) | ||
- Guidance for mixing arrays and Python `complex` scalars ([gh-513](https://github.com/data-apis/array-api/pull/513)) | ||
- Guidance for data type variability across devices ([gh-515](https://github.com/data-apis/array-api/pull/515)) | ||
- Guidance for complex number ordering ([gh-527](https://github.com/data-apis/array-api/pull/527)) | ||
- Guidance for complex number equality ([gh-528](https://github.com/data-apis/array-api/pull/528)) | ||
- Guidance for value-based promotion when results are outside of their real domain ([gh-573](https://github.com/data-apis/array-api/pull/573)) | ||
|
||
**note**: conforming implementations must define a default complex floating-point data type. | ||
|
||
#### APIs | ||
|
||
The following APIs were added to the specification: | ||
|
||
- `__array_api_version__`: string representing the version of the array API specification ([gh-480](https://github.com/data-apis/array-api/pull/480)) | ||
- `__complex__`: convert a zero-dimensional array to a Python `complex` object ([gh-497](https://github.com/data-apis/array-api/pull/497)) | ||
- `conj`: return the complex conjugate of a complex number ([gh-446](https://github.com/data-apis/array-api/pull/446)) | ||
- `finfo.dtype`: floating-point data type ([gh-485](https://github.com/data-apis/array-api/pull/485)) | ||
- `iinfo.dtype`: integer data type ([gh-485](https://github.com/data-apis/array-api/pull/485)) | ||
- `imag`: return the imaginary component of a complex number ([gh-496](https://github.com/data-apis/array-api/pull/496)) | ||
- `isdtype`: test whether a provided `dtype` is of a specified data type kind ([gh-503](https://github.com/data-apis/array-api/pull/503)) | ||
- `real`: return the real component of a complex number ([gh-427](https://github.com/data-apis/array-api/pull/427)) | ||
- `take`: return elements of an array along a specified axis ([gh-416](https://github.com/data-apis/array-api/pull/416)) | ||
|
||
#### Extensions | ||
|
||
The following optional extensions were added to the specification: | ||
|
||
- `fft`: Fast Fourier Transforms (FFT) ([gh-189](https://github.com/data-apis/array-api/pull/189)) | ||
kgryte marked this conversation as resolved.
Show resolved
Hide resolved
|
||
|
||
- `fft` | ||
- `ifft` | ||
- `fftn` | ||
- `ifftn` | ||
- `rfft` | ||
- `rfftn` | ||
- `irfft` | ||
- `irfttn` | ||
- `fftfreq` | ||
- `rfftfreq` | ||
- `fftshift` | ||
- `ifftshift` | ||
|
||
* * * | ||
|
||
### Errata | ||
|
||
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](https://github.com/data-apis/array-api/pull/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](https://github.com/data-apis/array-api/pull/429)) | ||
- `full`: missing type annotation for `bool` fill values ([gh-435](https://github.com/data-apis/array-api/pull/435)) | ||
- `full_like`: missing type annotation for `bool` fill values ([gh-435](https://github.com/data-apis/array-api/pull/435)) | ||
- `iinfo`: fix typo in description ([gh-439](https://github.com/data-apis/array-api/pull/439)) | ||
- `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)) | ||
- `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)) | ||
- `linalg.matrix_rank`: fix return data type ([gh-510](https://github.com/data-apis/array-api/pull/510)) | ||
- `linalg.trace`: clarify special cases for floating-point operands and the empty sum ([gh-502](https://github.com/data-apis/array-api/pull/502)) | ||
- `linspace`: conversion of `start` and `stop` should follow type promotion rules ([gh-568](https://github.com/data-apis/array-api/pull/568)) | ||
- `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)) | ||
- `trunc`: fix description ([gh-511](https://github.com/data-apis/array-api/pull/511)) | ||
- `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)) |
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.