Skip to content

v2.1.27

Choose a tag to compare

@github-actions github-actions released this 15 Aug 16:05
· 36 commits to main since this release

The daemon no longer eats memory while you type; \resizebox-wrapped tables render natively.

Memory

  • Typing bursts no longer ratchet the daemon's memory. Every keystroke
    pushes the whole buffer, and every push used to render the whole document
    — concurrently. On a long paper each render outlasts the typing debounce,
    so a burst of keystrokes meant tens of full renders in flight at once
    (each holding a parsed document plus its HTML), and the allocator kept
    that peak: measured 122 → 467–510 MiB per burst on the release binary,
    and on Linux it never came back. Over days of editing that is an
    out-of-memory kill — as reported by a user whose editor session was
    OOM-killed at 3.3 GB after nine hours. Renders are now strictly
    one-at-a-time and pushes coalesce onto the newest keystroke: a push
    superseded before it renders stores its buffer (a push for an \input
    child is never dropped by a concurrent push for the root, or by a save)
    but skips the render — the newest push renders everything. Peak memory
    during a burst is bounded by one render, and it settles back down between
    bursts instead of ratcheting; a sustained burst finishes in a fraction of
    the time.
  • The editor plugin keeps at most one buffer upload in flight. A new
    push used to spawn a fresh curl alongside any still-uploading one; on a
    slow render that piled up 100+ concurrent curl processes, each holding
    the whole buffer in its pipe, inside the editor's own process tree — the
    memory a systemd unit charges to the editor. A newer push now cancels the
    in-flight upload before starting.

Rendering

  • \resizebox-wrapped tables render natively. A tabular inside
    \resizebox{\textwidth}{!}{…} (or \scalebox / \rotatebox, starred
    forms included) outside a float was left in prose, where it degraded into
    unsupported-environment chips with raw &-separated cells — the common
    \begin{center}\resizebox…{\begin{tabular}… pattern. The box transforms
    now unwrap: sizing arguments are dropped (a reflowing HTML preview can't
    honor them; comment-split and undelimited arguments scan correctly) and
    the content parses normally, so the table renders as a real table at
    natural size.

If you were hit by the memory issue: upgrade the daemon binary AND the
plugin (both changed), then :MathPreviewRestart so the running daemon is
the new one — a reused long-lived daemon keeps the old behavior.


Downloads. Prebuilt mathpreview-cli daemon tarballs for macOS (arm64,
x86_64) and Linux (x86_64, arm64), each paired with a SHA-256 checksum.