Skip to content

peachq v0.66

peachq v0.43 shipped eleven days ago. Three releases later we're at v0.66 — and since the version number tracks our q conformance headline, that's the short version of the changelog: 43% → 66%.

Here's the long version.

One evaluator

The biggest change is invisible from the prompt. peachq used to route q through a lowering pass onto the underlying array engine. That's gone. q now parses to true q trees and walks its own evaluator, with a single apply module owning all dispatch — valence, projections, adverbs, and the container lift laws. Every feature below is downstream of that rebuild.

Iterators are real

The whole iterator family went native: ' \: /: ': and peach, Scan and Over on one accumulator engine, plus the last two ' overloads (Compose and Case). They work over dictionaries, tables and keyed tables, and they're first-class values — type (+/) answers 103h. +/ still monomorphizes onto the vectorized sum kernel rather than folding element by element.

Functional qSQL

? and ! now cover the ungrouped select/exec ladder, by grouping, update and delete — all riding one group core rather than a special case per form.

Reading kdb+ data

get and set handle kdb+ files directly: flat and splayed, enum columns resolved to symbols, nested columns, and kx-compressed containers (with -21! stats). IPC gained wire compression (-18!/-9!) and the .z.bm validator.

Web and network surface

An RFC 6455 WebSocket server and client, an HTTP server and client sharing the single port, gzip in both directions, and the .z.ac/.z.pm/.z.pp hooks.

Everything else

like/ss/ssr got a real q pattern matcher. The search family landed — within, bin/binr, row-wise find, keyed-table lookup by key rather than position. Amend (@/., ternary and quaternary) writes to tables and keyed tables. Strings became honest char vectors. The .h tier is 32 members deep, save writes csv/txt/xml/json, and .Q.fs/fsn/fps/fpn stream files. Console display, error classes and cast semantics all moved closer to kdb.

Downloads are on the releases page. Bug reports welcome — the gaps that get reported are the gaps that get closed.