v1.8.1
Supersedes 1.8.0, which is retracted — it was tagged before the release gate
passed (a missing CHANGELOG compare link) and before the GGUF parser hardening
below. 1.8.1 carries the same Qwen2.5-VL vision tower + arm64 W4A8 work as 1.8.0
plus the fix; pin this instead of 1.8.0.
Fixed
- GGUF metadata parser: nested-array allocation blowup (
embed). A hostile
array-of-arrays where every level claims a count near the remaining input drove
make([]any, 0, n)at each nesting level; since the nesting depth is itself
~input/12, total preallocation was O(input²) — a ~1 MB file parsed in ~700 ms,
surfacing as aFuzzParseGGUF"context deadline exceeded" slow path. The eager
array capacity is now bounded by a small constant (appendstill grows to the
true element count), making allocation linear in the input (same ~1 MB file:
~700 ms → ~100 ms). Gated byTestParseGGUF_nestedArrayBomb(asserts bounded
allocation). Parse output unchanged for valid files.