Skip to content

fix #364 -- x[.ellipsis] returns self instead of a "copy"#367

Merged
davidkoski merged 1 commit intomainfrom
array-copy
Mar 9, 2026
Merged

fix #364 -- x[.ellipsis] returns self instead of a "copy"#367
davidkoski merged 1 commit intomainfrom
array-copy

Conversation

@davidkoski
Copy link
Copy Markdown
Collaborator

Proposed changes

Remove special case for x[...] that just returns self. Test added.

Note: CI will fail until #366 is merged and this is rebased.

Checklist

Put an x in the boxes that apply.

  • I have read the CONTRIBUTING document
  • I have run pre-commit run --all-files to format my code / installed pre-commit prior to committing changes
  • I have added tests that prove my fix is effective or that my feature works
  • I have updated the necessary documentation (if needed)

@davidkoski davidkoski requested a review from angeloskath March 4, 2026 19:22
Copy link
Copy Markdown
Member

@angeloskath angeloskath left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👍

@davidkoski davidkoski merged commit 70346ae into main Mar 9, 2026
13 of 14 checks passed
@davidkoski davidkoski deleted the array-copy branch March 9, 2026 15:17
alankessler added a commit to alankessler/mlx-swift-lm that referenced this pull request Mar 26, 2026
Picks up the fix for array[.ellipsis] returning self instead of a
copy (ml-explore/mlx-swift#367), plus mlx 0.31.1 C++ updates.
alankessler added a commit to alankessler/mlx-swift-lm that referenced this pull request Mar 26, 2026
Picks up the fix for array[.ellipsis] returning self instead of a
copy (ml-explore/mlx-swift#367), plus mlx 0.31.1 C++ updates.
davidkoski pushed a commit to ml-explore/mlx-swift-lm that referenced this pull request Mar 27, 2026
* Add copy() to KVCache protocol and all implementations

Add an independent deep-copy method to enable reusing a prefix cache
across multiple ChatSession instances without reloading from disk.

- Add copy() requirement to KVCache protocol
- Implement on KVCacheSimple, RotatingKVCache, QuantizedKVCache,
  ChunkedKVCache, ArraysCache, MambaCache, and CacheList
- Guard against empty state in all copy() methods to avoid fatalError
  from state setters that reject empty arrays
- Preserve leftPadding in ArraysCache/MambaCache copies
- Add CacheList array-based initializer to support copy()
- Change ArraysCache.leftPadding from private to internal for
  subclass access in MambaCache.copy()

Tests:
- testCacheCopyIsIndependent: parameterized across 6 cache types,
  verifies copy has same state and mutation of copy leaves original
  unchanged
- testCacheCopyOnEmptyCache: verifies copy of unpopulated cache
  does not crash
- testCacheListCopyIsIndependent: verifies CacheList with
  heterogeneous sub-caches copies independently

* Bump mlx-swift dependency to 0.31.1

Picks up the fix for array[.ellipsis] returning self instead of a
copy (ml-explore/mlx-swift#367), plus mlx 0.31.1 C++ updates.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants