Denotational Semantics and a Fast Interpreter for jq

02/21/2023
by   Michael Färber, et al.
0

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.

READ FULL TEXT

Please sign up or login with your details

Forgot password? Click here to reset