Highlights:
- Initial (and experimental) GGUF support
- Support Python buffer protocol (easy interoperability with NumPy, Jax, Tensorflow, PyTorch, etc)
- `at[]` syntax for scatter style operations: `x.at[idx].add(y)`, (`min`, `max`, `prod`, etc)
Core
- Array creation from other mx.array’s (`mx.array([x, y])`)
- Complete support for Python buffer protocol
- `mx.inner`, `mx.outer`
- mx.logical_and, mx.logical_or, and operator overloads
- Array at syntax for scatter ops
- Better support for in-place operations (`+=`, `*=`, `-=`, ...)
- VJP for scatter and scatter add
- Constants (`mx.pi`, `mx.inf`, `mx.newaxis`, …)
NN
- GLU activation
- `cosine_similarity` loss
- Cache for `RoPE` and `ALiBi`
Bugfixes / Misc
- Fix data type with `tri`
- Fix saving non-contiguous arrays
- Fix graph retention for inlace state, and remove `retain_graph`
- Multi-output primitives
- Better support for loading devices