go-mlx/cpp/TODO.md
Snider 37abc496ba test(core): add 86 tests for ops, array, nn, fast kernels
Phase 1 hardening: cover all previously-untested core operations.

- array_test.go (25): scalar/array creation, shape, clone, free, data access
- ops_test.go (44): arithmetic, math, matmul, reductions, shape ops, indexing, slicing, random
- nn_test.go (8): Linear (dense/bias/LoRA), Embedding, RMSNormModule, RepeatKV
- fast_test.go (9): RMSNorm, LayerNorm, RoPE, ScaledDotProductAttention

Found: Floats()/DataInt32() return wrong data on non-contiguous arrays
(transpose, broadcast, slice views). Documented in FINDINGS.md.

Also: cpp/ workspace docs for CLion Claude session, Go 1.26 impact
assessment, verified go generate → test round-trip (29→115 tests).

Co-Authored-By: Virgil <virgil@lethean.io>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-19 18:37:30 +00:00

1.3 KiB

TODO.md — go-mlx C++ Task Queue

Tasks for the CLion Claude session. Written by GoLand Claude or Virgil.


Orientation (First Session)

  • Map the mlx-c API surface — Read all 27 headers in build/_deps/mlx-c-src/mlx/c/. Document which functions the Go side currently binds (cross-reference with Go files) vs which are available but unused. Priority headers: ops.h, fast.h, array.h, transforms.h.
  • Understand the error modelerror.h provides mlx_set_error_handler(). The Go side registers a handler that logs to stderr. Research: can we get structured error info (error codes, categories)? Is the error string stable or does it vary?
  • Check memory management patternsmlx_*_free() functions exist for each type. Verify: is double-free safe? What happens if you free during async eval? Document for the Go finaliser integration.

Standing Tasks

  • API gap analysis — When the GoLand Claude needs a C function that isn't exposed by mlx-c, document the gap here and research if upstream mlx-c supports it or if a patch is needed.

Workflow

  1. GoLand Claude or Virgil writes tasks here
  2. Pick up in order, mark [x] when done
  3. New findings → cpp/FINDINGS.md
  4. If Go changes needed → note in FINDINGS.md for GoLand Claude