Native Apple Metal GPU inference via mlx-c bindings
Find a file
Snider c881813872 docs(design): backend abstraction with internal/metal reorganisation
Approved design for restructuring go-mlx:
- Root package becomes clean interface (TextModel, LoadModel, Token)
- All CGO code moves to internal/metal/
- Deterministic memory management (Close + per-step cleanup)
- Error propagation instead of silent logging
- mlxlm/ backend placeholder for Python subprocess support

Includes API breaking change communication in FINDINGS.md and
memory management research tasks in cpp/TODO.md.

See: docs/plans/2026-02-19-backend-abstraction-design.md

Co-Authored-By: Virgil <virgil@lethean.io>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-19 19:12:04 +00:00
cache test(sub-packages): add 33 tests for cache, sample, tokenizer 2026-02-19 18:40:49 +00:00
cpp docs(design): backend abstraction with internal/metal reorganisation 2026-02-19 19:12:04 +00:00
docs/plans docs(design): backend abstraction with internal/metal reorganisation 2026-02-19 19:12:04 +00:00
model feat: extract go-mlx from go-ai as standalone Metal inference package 2026-02-19 17:57:37 +00:00
sample test(sub-packages): add 33 tests for cache, sample, tokenizer 2026-02-19 18:40:49 +00:00
tokenizer test(sub-packages): add 33 tests for cache, sample, tokenizer 2026-02-19 18:40:49 +00:00
.gitignore feat: extract go-mlx from go-ai as standalone Metal inference package 2026-02-19 17:57:37 +00:00
array.go feat: extract go-mlx from go-ai as standalone Metal inference package 2026-02-19 17:57:37 +00:00
array_test.go test(core): add 86 tests for ops, array, nn, fast kernels 2026-02-19 18:37:30 +00:00
CLAUDE.md feat: extract go-mlx from go-ai as standalone Metal inference package 2026-02-19 17:57:37 +00:00
CMakeLists.txt feat: extract go-mlx from go-ai as standalone Metal inference package 2026-02-19 17:57:37 +00:00
compile.go feat: extract go-mlx from go-ai as standalone Metal inference package 2026-02-19 17:57:37 +00:00
dtype.go feat: extract go-mlx from go-ai as standalone Metal inference package 2026-02-19 17:57:37 +00:00
fast.go feat: extract go-mlx from go-ai as standalone Metal inference package 2026-02-19 17:57:37 +00:00
fast_test.go test(core): add 86 tests for ops, array, nn, fast kernels 2026-02-19 18:37:30 +00:00
FINDINGS.md docs(design): backend abstraction with internal/metal reorganisation 2026-02-19 19:12:04 +00:00
go.mod feat: extract go-mlx from go-ai as standalone Metal inference package 2026-02-19 17:57:37 +00:00
grad.go feat: extract go-mlx from go-ai as standalone Metal inference package 2026-02-19 17:57:37 +00:00
grad_test.go feat: extract go-mlx from go-ai as standalone Metal inference package 2026-02-19 17:57:37 +00:00
io.go feat: extract go-mlx from go-ai as standalone Metal inference package 2026-02-19 17:57:37 +00:00
lora.go feat: extract go-mlx from go-ai as standalone Metal inference package 2026-02-19 17:57:37 +00:00
lora_test.go feat: extract go-mlx from go-ai as standalone Metal inference package 2026-02-19 17:57:37 +00:00
mlx.go feat: extract go-mlx from go-ai as standalone Metal inference package 2026-02-19 17:57:37 +00:00
mlx_stub.go feat: extract go-mlx from go-ai as standalone Metal inference package 2026-02-19 17:57:37 +00:00
nn.go feat: extract go-mlx from go-ai as standalone Metal inference package 2026-02-19 17:57:37 +00:00
nn_test.go test(core): add 86 tests for ops, array, nn, fast kernels 2026-02-19 18:37:30 +00:00
ops.go feat: extract go-mlx from go-ai as standalone Metal inference package 2026-02-19 17:57:37 +00:00
ops_test.go test(core): add 86 tests for ops, array, nn, fast kernels 2026-02-19 18:37:30 +00:00
optim.go feat: extract go-mlx from go-ai as standalone Metal inference package 2026-02-19 17:57:37 +00:00
optim_test.go feat: extract go-mlx from go-ai as standalone Metal inference package 2026-02-19 17:57:37 +00:00
random.go feat: extract go-mlx from go-ai as standalone Metal inference package 2026-02-19 17:57:37 +00:00
slice.go feat: extract go-mlx from go-ai as standalone Metal inference package 2026-02-19 17:57:37 +00:00
stream.go feat: extract go-mlx from go-ai as standalone Metal inference package 2026-02-19 17:57:37 +00:00
TODO.md test(sub-packages): add 33 tests for cache, sample, tokenizer 2026-02-19 18:40:49 +00:00