vMLX 1.6.28
Added
- Support for the new Qwen3.6-27B bundle line (and the upcoming Qwen 3.8
line), whose metadata-only stamps previously killed the server at startup
or load. Theqwen3_codertool-parser name now resolves to the XML-function
parser its templates actually emit, capability-only stamps route through the
stock loader instead of the JANG codec, and the bundled multi-token
prediction head is constructed, correctly quantized per the stamp's
per-module overrides, and engaged automatically at the stamp's trained
speculative depth. Measured on the 4-bit bundle: 23.3 to 31 tokens/sec
(+33%) with no flags, greedy output byte-identical with the head on or off,
and image and video probes answering correctly through both API and app.
Fixed
-
A prefix-cache hit could change the answer on seven measured model families,
and the opt-in switch that trades cache reuse for answer stability only
reached three of them. It was reachable only from inside the family policy
chain, andminimax,muse_glimmerandstep3p7hold no branch there. The
switch now runs ahead of that chain, andnanbeige— the family with the
highest measured divergence rate — has been added to the list it was missing
from. Proven end-to-end: with the switch armed, both turns reproduce the cold
answer byte for byte. Absence from the list is not exemption; no family has
been shown exempt, and the accompanying notes now say so. -
A long-running request could be killed as unresponsive while it was
generating normally. The engine's liveness counter double-counted output
tokens, and a recovery restart reset half of the sum, so the value went
backwards mid-request; the streaming timeout only credits a counter that
increases. Both the text and multimodal schedulers had the defect. Operator
logs that report "still progressing (N tokens)" now show the true token
count rather than twice it. -
Explicitly disabling a parser was silently ignored.
--reasoning-parser none
had no effect on any streaming surface and--tool-call-parser nonewas
inert in the module entry point, while the startup banner reported both as
disabled. -
A derivation step beginning with
=rendered as literal dollar-sign text in
chat instead of as maths. -
The Hugging Face token was normalised on only two of the five paths that read
it, so a token with surrounding whitespace worked in some places and failed
in others. -
Muse Glimmer failed to load on a fresh
pip install vmlx. mlx-vlm 0.6 began
shipping its ownmuse_glimmerpackage, and vMLX handed the namespace to it
on sight — but upstream names its preprocessing module differently, so the
server exited with a missing-module error before it could start, and had it
started it would have used a forward pass without this port's corrections.
vMLX now keeps its own validated runtime unless an upstream package genuinely
provides the same interface. The macOS app was never affected: it pins the
older mlx-vlm that has no upstream package, which is why the app tested clean
while the published wheel did not. -
Muse Glimmer failed to load on a fresh
pip install vmlx. mlx-vlm 0.6 began
shipping its ownmuse_glimmerpackage, and vMLX handed the namespace to it
on sight — but upstream names its preprocessing module differently, so the
server exited with a missing-module error before it could start, and had it
started it would have used a forward pass without this port's corrections.
vMLX now keeps its own validated runtime unless an upstream package genuinely
provides the same interface. The macOS app was never affected: it pins the
older mlx-vlm that has no upstream package, which is why the app tested clean
while the published wheel did not.