Skip to content

Feedback jjq

Sanne-ai-bot edited this page Oct 26, 2026 · 1 revision

Feedback: jjq

jjq is the Java jq port incus-spawn uses for YAML and JSON since #1263, which replaced Jackson on jjq 0.2.2. incus-spawn is on jjq 0.2.3 (#1330), the latest release as of 2026-10-26.

Known upstream issues we wait on

Gaps accepted when the port merged in #1263 on jjq 0.2.2:

  • Hyperfoil/jjq#130 Positional spans on JqValue nodes: open. 0.2.3 fixed the root-level case; spans in general are still to come. (#1330)
  • Hyperfoil/jjq#131 Invalid UTF-8 input replaced silently or failing without a position: closed, fixed in 0.2.3.
  • Hyperfoil/jjq#132 parseStrict keeps duplicate JSON object keys: closed, fixed in 0.2.3.
  • Hyperfoil/jjq#133 Mapper binds 0 for a word or boolean in integer fields and wraps out-of-range numbers: closed, fixed in 0.2.3. .inf, -.inf and .nan still read as 0, so incus-spawn keeps IntegerConverter. (#1330)
  • Hyperfoil/jjq#134 YAML: an empty value inside a sequence item swallows the following keys: closed, fixed in 0.2.3.

Waiting on a release newer than 0.2.3:

  • Hyperfoil/jjq#163 YAML emitter writes a string with a C0 control character as a plain scalar: closed upstream, not yet released. Tracked here as #1575 (open).
  • Hyperfoil/jjq#150 YAML: an indented --- line inside a block scalar is treated as a document marker: closed upstream, not yet released. Tracked here as #1492 (open), which waits on a jjq release newer than 0.2.3.

Other findings

  • An empty list item (a bare - or ~) maps to a null element, which crashed tool definitions and leaked into image definitions; filtered on the incus-spawn side. (#1468, #1474, #1476, #1479)
  • .inf, -.inf and .nan read as 0 in numeric fields, which fails open for settings like grace periods; pinned by jjqStillReadsInfinityAndNanAsZero. (#1330)
  • Tree intValue() wraps out-of-range values, so incus-spawn keeps its exact-integer checks on JSON. (#1330)
  • Moving to jjq removed about 108 ms of cold Jackson databind from CLI startup, and made several @RegisterForReflection entries redundant. (#1263, #1326)

Clone this wiki locally