Repository navigation
Tracking issue for the 2023 revision of the array API specification #643
Description
This is a tracking issue for tasks related to the 2023 revision of the array API specification. The issue is comprised of 3 parts: general todos, new APIs, and issues needing triage.
TODO
-
Add page discussing delayed evaluation
-
Clarify out-of-bounds behavior in
take -
Clarify minimum rank upper bound
-
Clarify sum description when
dtype=None -
Resolve choice of conjugation in complex inner product
-
Clarify broadcasting in linalg functions that accept an axis
-
Fix descriptions for constants in rendered specification
-
Clarify index array in
unique_all -
[ ] Add note clarifying__imatmul__broadcast behavior- ref: Should implementing
__imatmul__really be enforced? #509 - Update: moved to 2024
- ref: Should implementing
-
[ ] Add section indicating it's okay to duck type objects (finfo, constants)- ref: finfo should not require float type for the result fields #405 (comment)
- Update: moved to 2024
-
DLPack related
- Anything more to discuss regarding DLPack and readonly/immutable arrays? (priority: high)
- Anything more to say for forcing back to host? (priority: high; include as part of DLPack discussion?)
New APIs
-
copysign
- task size: XS
- IEEE 754
- risk: TensorFlow does not implement
- priority: low
- ref: Add
copysignfunction to the standard #593 - PR: Add support for
copysignto the specification #693
- task size: XS
-
[ ] cbrt- task size: XS
- IEEE 754
- risk: need PyTorch to implement
- priority: low
- ref: RFC: add
cbrt#590 - Update: PyTorch still does not have a dedicated
cbrtAPI. We can revisit in 2024.
- task size: XS
-
[ ] exp2- task size: XS
- IEEE 754
- risk: MXNet does not implement
- priority: low
- ref: RFC: add
exp2function to the standard #591 - Update: this is low priority and should be revisited in 2024.
- task size: XS
-
hypot
- task size: XS
- IEEE 754
- risk: none (implemented across all major libraries)
- priority: medium
- ref: Add support for computing the hypotenuse via
hypot#544 - PR: Add
hypotspecification for computing the square root of the sum of squares #703
- task size: XS
-
[ ] copy (for copying data)- task size: S
- risk: could become M depending on community feedback; need to ensure library alignment
- priority: ???
- ref: RFC: add
copy#495 - decisions:
- name: copy vs clone
- Update: this is low priority and not clear whether it's needed.
- task size: S
-
moveaxis
- task size: S
- priority: medium
- no simple equivalent
- ref: Adding
moveaxis&swapaxes#483 - PR: Add specification for moving array axes to new positions #656
-
searchsorted
- task size: S
- priority: medium
- ref: RFC: add
searchsortedto the specification #688 - PR: Add
searchsortedto the specification #699
-
[ ] angle- task size: S
- complex number dtypes
- risk: MXNet does not implement
- priority: low
- ref: RFC: add
anglefor computing the argument of a complex number #595 - Update: this is low priority and should be revisited in 2024.
- task size: S
-
[ ] Hermitian transpose- task size: S
- priority: low
- convenience function
- ref: RFC: add Hermitian transpose function #555
- Update: this is low enough priority that this can be bumped to the 2024 revision.
-
Inspection API namespace
- task size: M
- priority: high
- ref: RFC: add a unified inspection API namespace #640
- PR: Add Array API inspection utilities #689
-
clip
- task size: M
- bikeshed
- priority: medium
- ref: Add
clip#482 - decisions:
- type promotion
- kwarg names
- kwarg value types
- PR: Add
clipto the specification #715
- task size: M
-
cumulative sum
- task size: M
- bikeshed and alignment
- priority: medium
- ref: Add support for computing the cumulative sum to the standard #597
- decisions:
- name
- optional argument for initial value
- PR: Add specification for computing the cumulative sum #653
- task size: M
-
[ ] cumulative prod- task size: M
- bikeshed and alignment
- priority: low
- ref: RFC: add support for computing the cumulative product to the standard #598
- decisions:
- name
- optional argument for initial value
- Update: this is low enough priority that it can wait until the 2024 specification revision.
- task size: M
-
[ ] topk- task size: M
- priority: medium
- ref: RFC: add topk and / or argpartition #629
- decisions:
- name
- PR: feat: add API specification for returning the
klargest elements #722 - Update: moved to 2024 to allow for further R&D.
-
repeat/tile
- task size: M
- risk: potential to become L; need to ensure community alignment
- priority: medium
- xarray adoption
- ref: Common APIs across array libraries (1 year later) #187 (comment)
- ref: RFC: add support for repeating each element of an array #654
- ref: RFC: add support for creating a new array by tiling a provided array #655
- PR: Add
repeatto the specification #690 - PR: Add support for tiling an array to the specification #692
- task size: M
-
[ ] nan-reductions- task size: L
- risk: requires NumPy buy-in
- priority: high
- ref: RFC: add support for
nan*reductions #621 - decisions:
- API design
- engagement with NumPy community
- Update: this requires additional discussion and consensus and should be moved to the 2024 revision.
- task size: L
-
[ ] logsumexp- task size: L
- risk: requires NumPy buy-in (would duplicate behavior present in SciPy)
- priority: medium
- ref: RFC: add
logsumexp#596 - requires addition to NumPy
- Update:
- this API was also mentioned as a candidate for inclusion in the special functions extension: RFC: special function extension #725
- task size: L
Triage
-
Specification maintenance tasks
-
LU factorization
-
Anything more to say regarding libraries negotiating that they understand NumPy arrays?
-
Anything more to discuss for run-time version of API (static typing)?
-
Make dtypes obey Python hashing rules?
- ref: RFC: require that dtypes obey Python hashing rules #582
- requires changes to NumPy
-
Specify that
__getitem__and__setitem__acceptsSupportsIndex -
Special cases for +/-0 around branch cuts
-
Add batch support to
linalg.outer- ref: RFC:
linalg.outersupport batches of vectors #242 - awaiting PyTorch and updates to NumPy
- ref: RFC:
-
Support for closeness comparison
-
Enforcing shape to accommodate data-dependent (unknown) dimensionality
-
Adding spec guidance regarding exceptions to positional-only arguments
Activity
leofang commentedon Jan 12, 2024
Should we include #589 or push to 2024 (and perhaps backport it)?
kgryte commentedon Jan 25, 2024
@leofang My inclination is that #589 should be pushed to 2024 with the possibility of backporting. I think it is lower priority compared to some of the other items we need to get over the finish line before cutting the 2023 release.
leofang commentedon Feb 7, 2024
I raised #741 to address this.
rgommers commentedon Feb 22, 2024
Everything in this tracking issue is now done (or moved to 2024, or descoped), so let's close it. On to the changelog and tagging a release. Thanks all!