Spokes.wiki Search About
Computer Language source ↗ source url updated Thu Aug 06 2026 00:00:00 GMT+0000 (Coordinated Universal Time)

jq

Stephen Dolan released jq in October 2012: a command-line tool and a “very high-level, functional, domain-specific programming language” for JSON. A program is a filter, filters compose into pipelines, and the style is purely functional and tacit — point-free, with data flowing through transformations that never name it. Modes cover stream editing, line-oriented text, gathering into arrays, and a streaming parser for inputs too big to hold. MIT licence, maintained by the jqlang organization; 1.8.2, released 20 June 2026 (verified 2026-08-06 against the jqlang releases — a patch carrying CVE fixes since 1.8.1, so the current release exists because of security work, not features). The original implementation was written in Haskell and later ported to C, with reimplementations in Go (gojq), Rust (jaq), and jq itself (jqjq).

T2 — third-party encyclopaedic.

The same idea as AWK, one data model later

The article’s own comparison is “sed for JSON”, and against awk the parallel is exact. Both are languages whose design is a commitment to a data model — records and fields for AWK, JSON values for jq — and in both the interpreter supplies the control flow while the program supplies only the transformation. The generational difference is what the world was assumed to be made of: columns of text in the 1970s, nested documents now.

Where jq goes further is style. AWK’s actions are ordinary imperative statements; jq’s filters are composed without naming their input at all, which makes it the corpus’s only tacit language and its purest small functional one. Being Turing-complete despite that is the standard surprise for languages of this shape.

Three implementations, no standard

c, scheme and awk show competing implementations under a document. jq has the competing implementations — gojq, jaq, jqjq — with no specification between them, so compatibility is whatever the reference build does (language-governance). bash is in the same position and got there the same way: a useful tool became a de-facto definition without anyone writing the definition down.

The self-hosting implementation is worth noting next to lisp, where a compiler written in the language it compiles was a 1962 milestone. In a DSL for reshaping JSON it is a curiosity, which is roughly the point: the trick stopped being remarkable.

awk · bash · haskell · language-governance · programming-language · lisp · synthesis