Bundled .mlxfn examples now include both pre-metadata and current MLX serialization formats, preserving import tests across MLX 0.31.1–0.32.1.
scale() now preserves MLX-supplied center and scale vectors as MLX attributes, avoiding a round trip through base R.
mlx objects can now have row, column and dimnames, and vectors can have names. These work much like base R. Names for any dimension may be NULL. Subsetting with a non-existent name is an error. Many functions, e.g. solve(), %*%, etc. preserve dimnames like their R analogues.
Rmlx 0.3.0
We now allow float64 arrays. (Note that mlx doesn’t yet do operations on the gpu for these, however.)
Breaking change: arrays no longer have an associated device. Instead, use mlx_device(), with_device() or local_device() to choose a device to work on. This also makes irrelevant a bug in which many/most operations were silently ignoring their operands’ device.
Operations which are currently cpu-only used to switch silently to cpu. They now take a device argument which must be explicitly set to "cpu". This is a teaching tool to help the user understand what operations can take place on which device.