From Kx Wiki
Jump to: navigation, search

Changes from v2.8

Below is a summary of changes from v2.8. Commercially licensed users may obtain the detailed change list / release notes from

Vectors are no longer limited to 2 billion elements as they now have a 64bit length.

The default integer is no longer 32bit, it is 64bit. i.e. in k/q 0 is short hand for 0j. 0i represents a 32bit int.

You should almost never see type i, just like we never see type h.

The return type from count, find, floor,... are now 64bit ints (q longs)

Schemas and q script files should be fine.

There will be some NUCs when performing operations like 0^int() as this now returns a vector of 64bit ints. It may be simplest to scan your code for numeric literals, and where 32bit ints are intended to be kept, specify them explicitly as such, e.g. 0i^.... this can be done prior to upgrade and such tokens are compatible with previous versions.

kdb+ 3.0 can read 2.7/2.8 kdb+ file formats without conversion. kdb+ files created by 3.0 cannot be read by previous versions.

Ipc messaging is similar to previous versions, and no single message can exceed 2 billion bytes. In general, if you choose to upgrade, to ensure full ipc interop you should first upgrade your current kdb+ version to the latest release of that version (assuming versions 2.6 thru 2.8), then update client applications to use the latest drivers and then update the kdb+ version to v3.0. If you do not upgrade the drivers, you will not be able to send timestamp/timespan types to those applications, nor use ipc compression.

Shared libraries that are loaded into kdb+ must be recompiled using the new k header ([1]k.h), and some function signatures have widened some of their types.

When compiling for v3.0

define KXVER=3
e.g. gcc -D KXVER=3 ...

At the moment there's no need to recompile standalone apps, i.e. that do not load as a shared lib into kdb+. If you choose to update to the latest k.h header file, and compile with KXVER=3, ensure that you link to the latest c library (c.o/c.dll). For legacy apps that are just being maintained, you can continue to use the new header file and compile with KXVER undefined or =2, and bind with older c.o/c.obj available from the svn repository revision 1442 [2].

kdb+v3.0 has support for websockets according to RFC 6455, and has been tested with Chrome and Firefox. It is expected that other browsers will catch up shortly.

A new type has also been added - Guid. See

Personal tools