Skip to content

Yqr

v0.4.0 Security

This release includes 1 security fix for security teams reviewing exposed deployments.

Published 15d CLI & Terminal
✓ No known CVEs patched
Read the diff → Tool health → What is this tool? →
This release patches 1 known CVE

Topics

cli jq parser rust yaml yq

ReleasePort's take

Moderate signal
editorial:auto 11d

Version v0.4.0 adds several new flags and behaviors while removing the `--preserve`/`-p` flag; byte‑preserving becomes default for reads and writes.

Why it matters: The removal of `--preserve` (severity 70) changes existing workflows, and bumping `crossbeam-epoch` to 0.9.20 clears RUSTSEC‑2026‑0204 (severity 90), directly affecting security posture.

Summary

AI summary

Updates Breaking, a.b, and spec.template across a mixed release.

Changes in this release

Security Critical

Bumps transitive `crossbeam-epoch` from 0.9.18 to 0.9.20 to clear RUSTSEC-2026‑0204.

Bumps transitive `crossbeam-epoch` from 0.9.18 to 0.9.20 to clear RUSTSEC-2026‑0204.

Source: llm_adapter@2026-07-15

Confidence: high

Breaking High

Removes `--preserve` / `-p` flag; byte preservation is now default.

Removes `--preserve` / `-p` flag; byte preservation is now default.

Source: llm_adapter@2026-07-15

Confidence: high

Feature Medium

Adds surgical write tier for byte‑preserving edits.

Adds surgical write tier for byte‑preserving edits.

Source: llm_adapter@2026-07-15

Confidence: high

Feature Medium

Introduces `-i` / `--in-place` flag for atomic in‑place mutation.

Introduces `-i` / `--in-place` flag for atomic in‑place mutation.

Source: llm_adapter@2026-07-15

Confidence: high

Feature Medium

Supports structural delete of multi‑line and nested block entries (e.g., `del(.spec.template)`).

Supports structural delete of multi‑line and nested block entries (e.g., `del(.spec.template)`).

Source: llm_adapter@2026-07-15

Confidence: high

Feature Medium

Adds `--normalize` / `-N` flag to drop comments and canonicalize scalars.

Adds `--normalize` / `-N` flag to drop comments and canonicalize scalars.

Source: llm_adapter@2026-07-15

Confidence: high

Feature Medium

Makes byte‑preserving reads the default behavior without flags.

Makes byte‑preserving reads the default behavior without flags.

Source: llm_adapter@2026-07-15

Confidence: high

Feature Medium

Changes `--engine` to select backend only for default byte‑preserving read.

Changes `--engine` to select backend only for default byte‑preserving read.

Source: llm_adapter@2026-07-15

Confidence: high

Full changelog

The fidelity write tier arrives: surgical, byte-preserving edits that change only the bytes a filter targets and leave every other byte -- comments, indentation, quoting, key order -- untouched, or refuse. In the same release, byte-preserving reads become the default and the re-serializing pipeline moves behind --normalize.

Added

  • Write tier: surgical value edits. yqr can now mutate a document through the fidelity engine, changing only the targeted bytes: assignment .a.b = <rhs> (scalar literal or a .-rooted path), append .xs += <item>, new-key assign .a.new = <rhs>, and del(.a.b). Each edit passes through the engine's re-parse guard -- an edit that would restructure the document is refused (exit 5) rather than emitted, and scalar writes are quoted to match the neighbouring style. A filter is either a read-only query or a single mutation; mixing them is a parse error.
  • -i / --in-place flag writes the mutated document back to the input file atomically (temp file + rename, fsync before rename, symlinks followed, owner-only temp permissions). Using -i with stdin or with a read-only filter is an error, diagnosed before any input is read. Without -i, the mutated document is printed to stdout (byte-exact except the edit).
  • Structural delete of multi-line and nested block entries (e.g. del(.spec.template)), which the single-line delete path rejects. Flow-style and sole-entry deletes remain refused with a clear message.
  • --normalize / -N flag for the re-serializing pipeline: it drops comments and canonicalizes scalars (e.g. 007 becomes 7).

Changed

  • Byte-preserving reads are now the default. yqr '.' file.yaml reproduces the input byte-for-byte -- comments, quoting, indentation, scalar spellings, and line endings survive -- with no flag. Untouched nodes are emitted as their original source bytes; computed, absent, and unaddressable nodes fall back to typed rendering per node.
  • --engine now selects the backend for the default (byte-preserving) read. Under --normalize the re-serializing pipeline runs and the engine choice has no observable effect beyond the up-front name validation.

Breaking

  • --preserve / -p removed. Byte preservation is now the default, so the flag is gone. Replace yqr -p '.' f with yqr '.' f; use yqr --normalize '.' f for the re-serializing behaviour.

Security

  • Bumped the transitive crossbeam-epoch pin 0.9.18 -> 0.9.20 to clear RUSTSEC-2026-0204. It reaches the build only through the criterion dev-dependency (benchmarks), so released binaries were never affected; the change is lockfile-only.

Full changelog: https://github.com/zoosky/yqr/blob/v0.4.0/CHANGELOG.md

Breaking Changes

  • --preserve / -p removed. Byte preservation is now default; replace `yqr -p '.' f` with `yqr '.' f`.

Security Fixes

  • dep: crossbeam-epoch bumped from 0.9.18 to 0.9.20 to clear RUSTSEC-2026-0204 (dev‑dependency only).

Weekly OSS security release digest.

The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.

No spam, unsubscribe anytime.

Share this release

Track Yqr

Get notified when new releases ship.

Sign up free

Related context

Earlier breaking changes

  • v0.3.0 Changes --engine to select backend parser only; no longer implies preservation

Beta — feedback welcome: [email protected]