Skip to content

Capability Matrix

Mike Wright edited this page Sep 2, 2026 · 39 revisions

Capability Matrix

“Yes” means the current architecture and source contain a usable path. “Limited” calls out an important constraint. Exact availability can depend on the build feature and the connected server.

Capability Browser-only Native CPU Apple MLX NVIDIA CUDA
Core language and arrays Yes Yes Yes Yes
Infix comparisons (<, >, <=, >=, ==, !=) Yes Yes Yes Yes
Direct vector indexing (at) + length-one array broadcasting Yes Yes Yes Yes
Namespace-qualified first-class references + partial application Yes Yes Yes Yes
Named axes and structured shape errors Yes Yes Yes Yes
Model DSL Yes Yes Yes Yes
CPU autograd and optimizers Yes Yes Fallback Fallback
General arbitrary-model GPU training No N/A Yes No
Supported LoRA GPU training fast path No N/A Yes Yes
Supported two-linear MLP GPU training path No N/A Yes Yes
Tiny/tutorial training Yes, size-limited Yes Mixed by model path Mixed by model path
Inline visualization Yes No, artifact path Via client/artifact Via client/artifact
Filesystem load No Yes, sandboxed Yes, native host Yes, native host
Static include (script mode) No, precise error Yes, sandboxed under --source-dir Yes, native host Yes, native host
@word annotations + @test registry + reflection (tests, test_info, annotations) Yes Yes Yes Yes
bracket(setup, use, teardown) guaranteed-finally Yes Yes Yes Yes
transpose_axes dyadic transpose + blocked rank-3/4 disp Yes Yes Yes Yes
Typed test events (test_event_sink/emit_test_event) + host transport Yes, response array Yes, --test-events JSONL Yes Yes
expunge / :erase name removal Yes Yes Yes Yes
Header staleness badge (current / update-reload / unknown-offline) Yes n/a n/a n/a
global_set explicit workspace writes Yes Yes Yes Yes
Sandboxed fs API (fs_walk/read_text/write_text/remove_path) No, err value Yes, --source-dir sandbox Yes Yes
run_script fresh-env execution + exit interception No, err value Yes Yes Yes
Higher-order quartet (each/table/atop/over) Yes Yes Yes Yes
parse_json + multi-line argument lists Yes Yes Yes Yes
clock_ms monotonic benchmark clock No, not a browser builtin Yes Yes Yes
Structural SVG dataflow renderer Yes, inline Yes, artifact Yes, artifact/client Yes, artifact/client
Fixed-width bit ops (band/bor/bxor/bnot/popcount/shl/shr/bmask/bits/from_bits) Yes Yes Yes Yes
KV-cache generation (gen_state/gen_logits/gen_append/gen_clone/gen_reset/gen_stats) Yes Yes Yes Yes
Exception-free record access (has_field / record_get) Yes Yes Yes Yes
JSON codec (parse_json / to_json, deterministic round trip) Yes Yes Yes Yes
Root value-kind detection (type_of) Yes Yes Yes Yes
Raw-byte file I/O (read_bytes / write_bytes, sandboxed) Yes No (no sandbox) Yes Yes
Crash-safe write (write_atomic, temp + rename) Yes No (no sandbox) Yes Yes
TOML codec (parse_toml / to_toml, config subset, round trip) Yes Yes Yes Yes
Decode limits (parse_json / parse_toml max_depth + max_bytes) Yes Yes Yes Yes
Result round trip (to_json/to_toml + parse {results:1}) Yes Yes Yes Yes
Bounded file I/O (read_bytes offset/length, file_size) Yes No (no sandbox) Yes Yes
File metadata (file_metadata: kind/size/modified_unix_ms, exact UTC Unix-ms mtime, sandboxed) Yes No (no sandbox) Yes Yes
Incremental byte sink (append_bytes, bounded output) Yes No (no sandbox) Yes Yes
Bounded incremental stdin (read_stdin_chunk) No Yes Yes Yes
Non-seekable byte sink (write_stdout, pipes/stdout) Yes No (no stdout) Yes (server stdout) n/a
Native extension registry (static provider, namespaced invoke/help) No Yes Yes Yes
Native extension C-ABI adapter (scalars/arrays/records/handles) No Yes Yes Yes
Dynamic extension loading (load_extension, MLPL_EXTENSION_PATH, cdylib dlopen) No Yes Yes Yes
Ports, bounded event delivery, and host-driven applet loop No Yes Yes Yes
Typed-native binary codec (to_native / parse_native, lossless round trip; MLPB v2 CRC32 integrity, reads v1) Yes Yes Yes Yes
Decode element cap (parse_json / parse_toml max_elements) Yes Yes Yes Yes
Record key enumeration (record_keys) + JSON duplicate-key rejection Yes Yes Yes Yes
Tagged $mlpl envelope: lossless rank>=2 / Result JSON round trip Yes Yes Yes Yes
Provenance badge v2 (running vs served vs repo; deploy-pending state) Yes n/a n/a n/a
Partial application + applicative call (the combinator birds) Yes Yes Yes Yes
Fixed-point combinator via partials (Y / recursion without a name) Yes Yes Yes Yes
load_preloaded Yes Yes Yes Yes
Trace export to disk No Yes Yes Yes
BPE and byte tokenization Yes Yes Yes Yes
Experiment tracking Memory Disk Disk Disk
Device feasibility estimation Yes Yes Yes Yes
Trustworthy calibration Limited Yes Yes Yes
Direct llm_call or local Ollama No Yes Yes Yes
Server sessions and inspection Client only Server build Server build Server build
SSE training telemetry and cancel Connected client Yes Yes Yes
Session persistence and reattach Connected client Yes Yes Yes
Compilation to Rust/native Build elsewhere Yes, subset CPU target subset CPU target subset
Engram conditional memory Yes, CPU Yes, CPU CPU execution CPU execution

Reading GPU claims correctly

flowchart TD
    Scope[Enter device scope] --> Backend{Backend built and available?}
    Backend -->|No| CPUFallback[Run CPU fallback and warn]
    Backend -->|Yes| Operation{Operation or model shape supported?}
    Operation -->|General forward op| GPUOp[Dispatch GPU operation]
    Operation -->|Recognized training fast path| GPUTrain[Train on GPU]
    Operation -->|Unsupported training graph| Tape[Use CPU autograd tape]
    Tape --> Notice[Do not interpret scope alone as GPU training]
Loading

MLX uses persistent device tensors and a device-aware autograd tape for general training. CUDA accelerates recognized LoRA and two-linear MLP training shapes; other CUDA-scoped training uses the CPU tape. Confirm device telemetry rather than inferring residency from the device scope alone.

See Execution Surfaces for deployment choices and the individual backend pages for build and limitation details.

Clone this wiki locally