emelex 1.1.1

Apple Silicon local inference toolkit powered by MLX
# Runtime context

Invariant: no engine load or generation may occur before
`runtime::initialize`.

Storage layout:

```text
<home>/cache/runtime/mlx/<sha256>/mlx.metallib
```

`recommended_max_working_set_size` calls a small mlx-c shim that creates a
temporary Metal device and reads `recommendedMaxWorkingSetSize`. It does not
construct MLX's singleton Metal device and therefore does not freeze the
metallib path.

The C++ layer also latches the first non-empty path, rejects later differences,
and loads an explicitly configured metallib before any colocated fallback.

The engine array-construction and default-stream guards are the lowest Rust
MLX-object boundaries. They initialize runtime before direct array or operation
tests can create MLX's singleton Metal device.

The completion-callback subprocess may skip only when no Metal device exists.
`EMELEX_REQUIRE_PHYSICAL_GPU=1` converts that skip into failure and is mandatory
on the release Apple-Silicon GPU lane.