Skip to content

First public use of latexml-oxide in ar5iv 2606

Choose a tag to compare

@github-actions github-actions released this 05 Jul 15:51
· 372 commits to main since this release

Install

Debian / Ubuntu (.deb)

curl -LO https://github.com/dginev/latexml-oxide/releases/download/0.7.2/latexml-oxide_0.7.2-1_amd64.deb
sudo apt install ./latexml-oxide_0.7.2-1_amd64.deb

Portable tarball (x86_64 Linux)

curl -LO https://github.com/dginev/latexml-oxide/releases/download/0.7.2/latexml-oxide-0.7.2-x86_64-unknown-linux-gnu.tar.gz
tar xzf latexml-oxide-0.7.2-x86_64-unknown-linux-gnu.tar.gz
sudo cp latexml-oxide-0.7.2-x86_64-unknown-linux-gnu/latexml_oxide /usr/local/bin/

The binary bundles libxml2/libxslt/kpathsea, so tarball users only need a TeX
Live installation (read from your texmf tree) plus graphics tools:

sudo apt install texlive-latex-base texlive-latex-extra texlive-science imagemagick

macOS (Apple Silicon)

curl -LO https://github.com/dginev/latexml-oxide/releases/download/0.7.2/latexml-oxide-0.7.2-aarch64-apple-darwin.tar.gz
tar xzf latexml-oxide-0.7.2-aarch64-apple-darwin.tar.gz
sudo cp latexml-oxide-0.7.2-aarch64-apple-darwin/latexml_oxide /usr/local/bin/

The binary bundles libxml2/libxslt, so macOS users only need a TeX distribution:

# TeX Live — either Homebrew's:
brew install texlive
# …or MacTeX / BasicTeX, served via the subprocess-kpsewhich fallback.

Apple Silicon (arm64) only. Intel Macs are not yet a published target.

Changelog

[0.7.2] (first public ar5iv 2606 run: upstream sync, MathML-post audit, live-run parity + stability)

The release used for the first public latexml-oxide conversion of an arXiv
monthly (ar5iv 2606). Highlights across the cycle (see the git log and
GitHub's auto-generated per-PR notes for the full detail):

  • Upstream LaTeXML sync (PRs #2767 → #2837): amsmath multline centering
    • \shoveleft/\shoveright + \if@fleqn (#2835), the "Framing" package
      set (#2829), \lxDeclare replace= and wildcard declarations, paralist,
      and more.
  • MathML post-processing faithfulness audit (docs/MATHML_POST_LINE_AUDIT.md):
    operator-dictionary + atom-pair spacing tables regenerated from the Perl
    source, faithful spacewalk / \cfrac / n-th-root argument order, and
    inherited color/style context threading.
  • Live-run parity, mined from full-arXiv conversions: natbib autoload
    loop, fvextra breaklines, tabularray colspec, runaway-guard tuning, and
    graceful degradation of former panics (graphics worker thread, XML-node
    allocation) into reported errors rather than crashes.
  • Frontmatter & figure fidelity: font-wrapped author/affiliation
    splitting, and a width-based figure-panel arrangement so subfigure grids
    follow the PDF/Perl row layout.
  • Bibliography: .bib field values interpreted through the real TeX
    engine; absolute DOI/URL links. (Field-interpretation coverage is a first
    stage toward Perl's full set — see docs/SYNC_STATUS.md.)
  • Box-sizing & verbatim (tcolorbox arc, OXIDIZED_DESIGN #42#47): TeX
    vpack \prevdepth discipline, NFSS family codes, foreignObject em basis,
    fvextra line-breaking.
  • Performance: eliminated several O(n²) XSLT hotspots (sectioning,
    head-keywords, maketitle), memoized kpsewhich lookups, arena pin! sweep.
  • Distribution hardening: guarded NULL-over-FFI SIGSEGV classes in the
    rust-libxml fork; the cortex_worker --harness fleet (one-conversion-per-
    process with layered memory guards).

Reliability & distribution:

  • Upgraded to libxml 0.3.14. Its Node::node_ptr_mut now guards mutable
    access with RefCell::try_borrow_mut instead of an Rc::strong_count
    heuristic (KWARC/rust-libxml#203). The old heuristic counted live Node
    clones — which are normal bookkeeping, not an aliasing conflict — and so
    spuriously rejected mutations on documents with heavily shared node
    structures (dcpic commutative diagrams, large arrays, id-heavy trees),
    emitting Can not mutably reference a shared Node errors. Those conversions
    now complete cleanly. The two internal set_node_rc_guard workarounds
    (latexml_core::Document::new, latexml_post::PostDocument::new) are
    removed; node-mutation safety relies solely on the upstream try_borrow_mut
    check.
  • Added the maxperf-cortex build profile (inherits maxperf but keeps
    panic = "unwind") for the long-lived cortex_worker fleet, which needs
    catch_unwind for per-paper panic isolation.

What's Changed

  • feat(bindings): runtime .rhai discovery + faithful local test fixtures by @dginev in #262
  • feat(cortex): self-supervising harness with controlled over-commit + memory governor by @dginev in #264
  • sandbox-testing-patches: Warning: severity fix, RSS-fuse correction, docs cleanup + PGO task by @dginev in #265
  • Exact TeX fixed-point unit conversion by @dginev in #263
  • chore(deps): update tikv-jemallocator requirement from 0.6 to 0.7 by @dependabot[bot] in #266
  • sandbox-testing batch: IEEEtran keywords fix, stable worker naming, mathml/logger/RSS-fuse fixes + docs by @dginev in #267
  • chore(deps): Update phf requirement from 0.13.1 to 0.14.0 by @dependabot[bot] in #268
  • Further stability & coverage (box-model hang, array p/m/b, math comma-list, post-log capture, numeric-safety, Miri) by @dginev in #269
  • Post-processing signal-fidelity: silence ~200.7k spurious Rust-only warnings (faithful to Perl) by @dginev in #270
  • Upstream sync: 11 brucemiller/LaTeXML PRs (#2783 → #2833), incl. #2798 Leavehorizontal by @dginev in #271
  • ar5iv 2606 prep: parity fixes, MathML-post audit, perf + stability for the July-5 rebuild by @dginev in #273

Full Changelog: 0.7.1...0.7.2