Send Feedback
Skip to content

KDB-X Release Notes

This page details the latest features and improvements released to KDB-X.

KDB-X 5.0.20260410

Release date: 2026-04-10

NUC (Not Upwardly Compatible)

Not backward compatible. Changes existing behavior.

  • .Q.lim now returns a dictionary with the current and limit values, with memory in MiB, for example:

    q).Q.lim[]
           | cur lim
    -----  | ---------
    cores  | 8   0W
    threads| 0   4
    mem    | 64  16384
    conns  | 0   8
    

Fixes and improvements

  • kxline:
    • Now restores terminal state after SIGCONT (for example, ^Z followed by fg).
    • Fixed a seg-fault when output included terminal escape sequences (for example, -1@).
    • Now handles UTF-8 correctly.
  • match: fixed a seg-fault on anymap and pre-3.6 mapped nested data, for example:

    q)(a;b):get`:foo set (1;0x0000)
    

KDB-X 5.0.20260401

Release date: 2026-04-01

NUC (Not Upwardly Compatible)

Not backward compatible. Changes existing behavior.

  • The QINIT file is no longer loaded in protected eval.

  • The empty path `: is now consistently treated as an invalid path. Previously its interpretation varied by operation and platform.

  • Error messages when loading a file in the wrong format now include 'parse, for example:

    q)get`:foo 1:0x000000
    'parse `:foo
      [0]  get`:foo 1:0x000000
           ^
    

New

  • \l .:path/to/file.q and .Q.rp`:.:path/to/file.txt now resolve paths relative to file currently being loaded
  • Additional optional env variables for TLS connections (requires OpenSSL 1.1.0 or above):
    • KX_SSL_MINPROTOCOL: sets the minimum supported protocol. Valid values are SSLv3, TLSv1, TLSv1.1, TLSv1.2, TLSv1.3, and None (no limit). Default is TLSv1.
    • KX_SSL_MAXPROTOCOL: sets the maximum supported protocol. Valid values are SSLv3, TLSv1, TLSv1.1, TLSv1.2, TLSv1.3, and None (no limit).
    • KX_SSL_CIPHERSUITES: sets the available ciphersuites for TLSv1.3. Accepts a colon-separated list of ciphersuite names in order of preference. This list is combined with any configured TLSv1.2 ciphers (KX_SSL_CIPHER_LIST). To list available ciphers on your system, run openssl ciphers -s -tls1_3.
  • ss now works with byte or boolean lists, which disables wildcards, for example:

    q)0x01020304 ss 0x0203
    ,1
    q)"aasa?s" ss "x"$"a?s"
    ,3
    q)00110011b ss 1001b
    ,3
    

Fixes and improvements

  • anymap: fixed 'type being thrown for like enlist"*" even when all elements were strings, for example:
    q)get[`:v set ("abc";"def")]like enlist"*"
    11b
    
  • Fixed a seg-fault when using "\n"$, for example:
    q)"\n"$("123";"456")
    'type
    
  • Partitioned functional select was stripping the sorted attribute from step dictionaries, for example:
    q)`:HDB/2026.02.10/test/ set([]time:0 2 4);
    q)system"l HDB";
    q)?[test;();0b;`time`bucket!(`time;(`s#1 3!`closed`open;`time))]
    time bucket
    -----------
    0
    2    closed
    4    open
    
  • Fixed a hang on IPC connections where the user/password was not authorized (for example, .z.pw configured to return 0b) when using inetd or systemd. Since 2025.11.13.

  • raze now elides copies for both leading and trailing empty lists.

  • .Q.bv: fixed increased runtime when run on a segmented table with a table missing from the same partition across segments. Since 2025.11.25.

  • On Windows, fixed 'OS reports: Access is denied.' occurring when running with multiple threads and memory-mapping multiple compressed files of different sizes, for example, when querying data across a partition.

  • x*/y: fixed incorrect result when x is a byte or short value. Since kdb+ 3.3, for example:

    q)0x01*/0x01020304 /Previously returned 0Ni
    24i
    q)1h*/1 2 3 4h /Previously returned 0Ni
    24i
    

KDB-X 5.0.20260122

Release date: 2026-01-22

New

  • Windows license check includes an additional check of comparing with hostname.domainname where domainname is retrieved from the DNS associated with the local computer. Linux/macOS already perform this check. This is in addition to the windows lookup of the host/domain via IP. For more details, refer to ComputerNameDnsDomain.

  • License error due to host mismatch now contains extra information (domain and DNS). For example:

    license error: host testbox
    
    license error: host testbox.domain host.docker.internal
    
  • .z.e dictionary has an additional entry with key LOCAL_CERT when a local certificate is in use. This is in addition to the peer certificate info already presented in CERT. It contains info on the local certificate which was selected during the connection handshake (`SUBJECT`ISSUER`SERIALNUMBER`NOTVALIDBEFORE`NOTVALIDAFTER).

Fixes and improvements

  • Pressing Ctrl+C on Windows stopped the console from responding. Since Windows 8.
  • Old-style kdb+ on demand licences would signal timeout reporting -- exiting. Since 5.0.20251113.
  • With kxline, exiting could:
    • Cause last output not to be printed.
    • Seg-fault when attempting to write history.

KDB-X 5.0.20251218

Release date: 2025-12-18

New

  • kxline doesn't add empty lines to history.

Fixes and improvements

  • setenv could corrupt memory if length of envvar name plus value is one less than a power of two.
  • In very rare cases, sorting could hang. Since 3.5.
  • Upserting a sorted column without `s# attribute to a sorted splayed column is now append when applicable.

  • .q_ and .k_ files are now also loaded from db root when loading a database.

  • When running .Q.bv against a multi-segmented table, with a table missing from the same partition across segments, could result duplicate entries in .Q.vt. Now checks for duplicates for reduction in memory.

  • kxline always restores the terminal state, for example, after a seg-fault.

KDB-X General Availability

Release date: 2025-11-17

This release marks the general availability (GA) of KDB-X, along with the new Community Edition license.

This is a major milestone as KDB-X is now fully supported for production use, and we’re thrilled to introduce the Community Edition, which is free for both personal and commercial use, making it easier than ever to get started.

This release includes all the features released during Public Preview and more! Some of the highlights:

  1. Parquet Support
  2. Modules
  3. Alternative to rlwrap
  4. Visualization
  5. MCP Server
  6. VS Code

1. Parquet Support

A new Parquet module pq is now available, introducing native support for executing queries on Parquet files, leveraging partition and row-group pruning to minimize processed data. See Parquet for more details.

2. Modules

KDB-X now includes native module support which introduces primitives to modernize library handling and safety through import aliasing. This gives users a standardized way of organizing, managing, and distributing code within their organization and the wider KDB-X community. See the Module Management overview page for more details.

This release also includes our first set of KDB-X and open-source modules:

3. Alternative to rlwrap

KDB-X now includes an embedded line editor: kxline. Linux/macOS users no longer need to separately install rlwrap to enhance their terminal productivity.

4. Visualization

KDB-X now integrates with KX Dashboards, enabling real-time data visualization. See the Dashboards overview for more details.

5. MCP Server

This release includes the KDB-X MCP Server integration, enabling natural language interaction through AI tools (for example, Claude, GPT, Gemini). See the MCP Server overview for more details.

6. VS Code Support

This release adds VSCode IDE support for KDB-X including first time installation with the KDB-X Community Edition.

Head to the KDB-X Tutorials page to begin experimenting with the new features, and be sure to review the KDB-X Roadmap to see what's coming next!

KDB-X Public Preview release

Release date: 2025-10-22

The following are the highlights of this release:

  1. Modules
  2. Dashboards

1. Modules

The following enhancements have been made for modules:

  • Modules framework: Added a new framework for creating and administering modules. This gives users a standardized way of organizing, managing, and distributing code within their organization and the wider KDB-X community.
    See the Module Management overview page for more details.

  • New modules available: The following modules are now available for Public Preview:

  • AI Library enhancements: Added support for advanced AI libraries, enabling:

KX will continue to roll out new modules designed to power and simplify your KDB-X development journey.

2. Dashboards

KDB-X now integrates with KX Dashboards, enabling real-time data visualization.
See the Dashboards overview for more details.

KDB-X Public Preview release

Release date: 2025-06-25

The following are the highlights of this release:

  1. Community license support
  2. .Q.lim resource limits
  3. Limit improvements
  4. Versioning and startup
  5. Configuration file support
  6. Embedded components: q.k and kxsql
  7. Telemetry
  8. Console enhancements
  9. Model Context Protocol (MCP) Server

1. Community license support

Support has been added for the new community kc.lic license with embedded resource limits: cores, threads, memory, and connections.

2. .Q.lim resource limits

.Q.lim[] returns resource limits and current usage:

q).Q.lim[]
       | cur lim
-----  | ---------
cores  | 8   0W
threads| 0   4
mem    | 64  16384
conns  | 0   8

3. Limit improvements

Several limit improvements were added:

  1. Core limit checked on startup versus CPU affinity.
  2. Thread limit restricts secondary threads:
$ q -s 9
'max number of secondary threads 8

Multi-threaded input on negative ports is disabled:

$ q -p -4321
'-port disabled
  1. Memory limit enforces heap safety:
q)b:til 100000000
q)do[20;a,:b]
'stop

Once breached, individual operations are limited to a 64MB stack:

q)til 10000000
'stop

Variable assignment is blocked:

q)c:1
'noupdate: `. `c

Delete operations are allowed for recovery:

q)delete a from `.
q)c:1
q)til 10000000
0 1 2 3 4 ..
  1. The conns limit restricts simultaneous IPC connections:
q)hopen each 8#1234;
q)hopen 1234
'conn

Note

Applies to IPC, HTTP, and sd1() main-loop connections.

4. Versioning and startup

.z.v exposes environment defaults:

  • QCFG$HOME/.kx/config
  • QHOME → one level above executable
  • QLIC → empty string → checks QHOME
  • QINITq.q

Example:

$ ~/.kx/bin/q
q).z.v
version|"0.1.0t"
QCFG   |"/home/homer/.kx/config"
QHOME  |"/home/homer/.kx"
QLIC   |""
QINIT  |"q.q"

5. Configuration file support

Define key=value pairs in ~/.kx/config:

QLIC=/tmp/kdbx/lic
QINIT=kdbx.q

Inspect values:

q).Q.cfg

Override config path via environment:

QCFG=~/.kx/config2 q

Or via -v flag (highest precedence):

q -v ~/.kx/config3

Single-character keys represent command-line options:

e=1
p=1234
c=25 100

Explicit flags override config:

q -p 4321

6. Embedded components: q.k and kxsql

q.k is now embedded:

q).Q.qk

kxsql can be initialized with:

q).s.init[]

Use SQL inline:

q)t:([]a:1 2 3;b:4 5 6)
q)t~.s.e"select * from t"

Release date:

q).s.rel
2025.01.16

Related content: KX SQL Interface

7. Telemetry

Check status:

q).Q.tel[]
1b

8. Console enhancements

Auto-size rows and columns:

q)\c
25 80i
q)\c 50 0N
q)\c

Explicit 0N required for row/column separation.

Invalid values now produce domain errors:

q)\c aa bb
'domain

9. Model Context Protocol (MCP) Server

Adds support for KDB-X MCP Server integration, enabling natural language interaction through AI tools (Claude, GPT, Gemini).
See the MCP Server overview for more details.


NUC (Not Upwardly Compatible)

Not backward compatible. Changes existing behavior.

  1. Licenses: search path no longer includes current working directory.
  2. Scripts: search path includes $QHOME/q/.
  3. Libraries: search path includes $QHOME/lib/.
  4. Standardized license errors:
'license error: no license loaded
'license error: daemon connection failed
'license error: daemon timeout
'license error: daemon returned error

Come back soon and try out more features and improvements as we add them to KDB-X!