Skip to content

v1.10.1

Choose a tag to compare

@github-actions github-actions released this 20 Jul 15:14

A follow-up patch to 1.10.0's security review. A second, fix-completeness pass
found that several 1.10.0 fixes had landed at the exact site the first review
named but not at their structurally identical siblings — reintroducing the
classes they were meant to close — plus one genuine regression the 1.10.0
dependency bump carried in silently.

Pin this over 1.10.0. All fixes; no API change (Hard tier unchanged).

Highlights

  • 🩹 Restored a runaway-parse guard that 1.10.0 silently broke. The
    gotreesitter 0.20→0.40 bump changed the parse-timeout contract — 0.20
    returned an error on timeout, 0.40 returns a truncated tree with a nil
    error
    (tree.ParseStoppedEarly() == true). The chunker only checked the
    error, so on a pathological/slow file it stopped falling back to the line
    chunker and instead chunked a partial AST — with the degradation invisible
    (the parseErr stat never incremented). Now detects the early stop and falls
    back, restoring the pre-bump behavior. Regression-tested.
  • 🔒 Finished the 1.10.0 crash-class fixes at their missed sites. Two matmul
    entries (MatmulBTW8A8Batch, MatmulBTAcc64) still panicked uncatchably
    inside worker goroutines on a bad shape — the M2 hazard 1.10.0 closed
    everywhere else; a grep-checklist now confirms all nine fan-out matmuls are
    guarded. And the id = 100 OOB-token fallback (which panics on any vocab ≤
    100, e.g. the repo's own vocab_size:4 fixtures) was still live in the primary
    EncodeBatch path and two others — all five gathers now share one
    clampTokenID helper.
  • 🖼️ Qwen2.5-VL loader brought to the vision H7/H8 bar. Shape-checked
    patch-embed, plus validate() now rejects a head_dim not divisible by 4
    (rotary ÷0), an unsupported hidden_act, and a zero temporal_patch_size.
  • 🧷 Closed the last mmap use-after-free. The bare per-Tensor safetensors
    accessors (Float32s/…/BFloat16sToF32) could be munmap'd mid-read; a new
    Tensor.owner back-pointer + runtime.KeepAlive fixes the whole class. And a
    crafted HNSW blob with mL = +Inf no longer panics on Add-after-load (Load
    recomputes mL from m).

Upgrade notes

  • Patch release — no API change, straight drop-in from 1.10.0.
  • No behavior change on well-formed input; the fixes affect only mismatched /
    crafted / small-vocab / pathological inputs, plus the treesitter fallback which
    now (correctly) triggers on a timed-out parse instead of silently chunking a
    partial tree.

The full categorized changelog is in
CHANGELOG.md → 1.10.1.