From Kx Wiki
Below is a summary of changes from v3.2. Commercially licensed users may obtain the detailed change list / release notes from http://downloads.kx.com
- reval is now a reserved word.
- sse enabled builds (v64,l64,m64) now require SSE4.2
- websocket open/close callbacks are now via .z.wo/.z.wc instead of .z.po/.z.pc.
- Many operations are now 10 times faster - performance of 'avg .. by', avg for types G H, sum G, grouping by G H. Also distinct/find for G H.
- +/ &/ |/ = < are 10-20x faster for GH, avg is a lot faster for GHIJ.
- +/I will give 0Ni on overflow.
- Faster and stricter json parser. It is approx 50-100x faster and can process unicode.
- `g attr can (again) be created in threads other than main thread. In v3.2, we removed the limit on number of concurrent vectors which can have `g attr, and a side-effect was that `g attr could be created on the main thread only. That restriction has now been removed.
- Read-only eval of parse tree. The new keyword reval, backed by -24!, behaves similarly to eval (-6!), but evaluates the parse tree in read-only mode, as if the cmd line option -b were active for the duration of the reval call. This should prove useful for access control.
- Improve performance of on-disk sort for un-cached splayed tables.
- Allow processing of http://host:port/.json?query requests.
- Columns of nested enumerated syms with key `sym now report as S in meta.
- Splayed table count is now taken from first column in table (previously it was taken from the last column).
- Distributed each will revert to local each if .z.pd is not defined.
- Added .z.X which provides the raw, unfiltered cmd line.
- Added .Q.Xf to write empty nested files.
- .Q.id now handles columns that start with a numeric character.