English

Denotational Semantics and a Fast Interpreter for jq

Logic in Computer Science 2023-02-22 v1 Programming Languages

Abstract

jq is a widely used tool that provides a programming language to manipulate JSON data. However, its semantics are currently only specified by its implementation, making it difficult to reason about its behaviour. To this end, I provide a syntax and denotational semantics for a subset of the jq language. In particular, the semantics provide a new way to interpret updates. I implement an extended version of the semantics in a novel interpreter for the jq language called jaq. Although jaq uses a significantly simpler approach to execute jq programs than jq, jaq is faster than jq on ten out of thirteen benchmarks.

Keywords

Cite

@article{arxiv.2302.10576,
  title  = {Denotational Semantics and a Fast Interpreter for jq},
  author = {Michael Färber},
  journal= {arXiv preprint arXiv:2302.10576},
  year   = {2023}
}

Comments

Submitted to OOPSLA 2023

R2 v1 2026-06-28T08:45:26.251Z