KDB-X Release Notes
This page details the latest features and improvements released to KDB-X.
Note
KDB-X Public Preview Community Edition is a test version and is NOT intended, NOR supported, for production usage. Features are subject to change.
Releases
Most recent release is first:
KDB-X Public Preview release - 2025.10.22
The following are the highlights of this release:
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: The latest release adds support for advanced AI libraries, enabling high-performance semantic search on unstructured data and Time Series Similarity Search (TSS).
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 users to explore, analyze, and present data through real-time visualizations. See the Dashboards overview page for more details.
KDB-X Public Preview release - 2025.06.25
The following are the highlights of this release:
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, for example:
q
q).Q.lim[]
cores | 24
threads| 4
mem | 17179869184
conns | 8
3. Limit improvements
We have added several limit changes to the KDB-X experience, including:
1. The core limit is now checked on startup versus CPU affinity.
2. The thread limit restricts the number of secondary threads a process can enable, for example:
bash
$ q -s 9
'max number of secondary threads 8
A non-zero thread limit also disables multi-threaded input (negative port) mode:
bash
$ q -p -4321
'-port disabled
3. The memory limit (in bytes) is triggered if operations cause the process heap to breach the limit and cause a 'stop error:
q
q)b:til 100000000
q)do[20;a,:b]
'stop
Once the heap memory limit is breached, individual operations are limited to a stack of 64MB, or fail with a 'stop error:
q
q)til 10000000
'stop
Additionally, if the heap memory limit is breached, variable assignment/modification is also blocked:
q
q)c:1
'noupdate: `. `c
An exception is made for delete operations, allowing you to reduce memory usage. For memory reduction to be reflected on the heap, it may be necessary to explicitly garbage collect:
q
q)delete a from`.;
q)c:1 / assignment re-enabled
q)til 10000000 / 64MiB stack limit removed
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30..
4. The conns limit restricts the number of simultaneous IPC connections (inbound and outbound) a process can have.
q
q)hopen each 8#1234;
q)hopen 1234
'conn
Note
This limit also applies to one-shot IPC and HTTP connections, and connections registered on the main loop via sd1().
4. Versioning and startup
The version (major.minor.patch) and startup environment are available using .z.v with the following environment defaults:
-
Default
QCFGset to$HOME/.kx/config(or%USERPROFILE%\.kx\config) -
Default
QHOMEset dynamically one level up (..) from the executable path -
Default
QLICis""(empty) indicating that it checksQHOMEfor a license -
Default
QINITis "q.q"
$ ~/.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 a config file (default: ~/.kx/config) to modify environment variables:
$ cat ~/.kx/config # default config location
QLIC =/tmp/kdbx/lic
QINIT=kdbx.q
$ q
q)`QLIC`QINIT#.z.v
QLIC | "/tmp/kdbx/lic"
QINIT| "kdbx.q"
To set an alternative path for the config file, use the QCFG environment variable:
Bash
$ QCFG=~/.kx/config2 q
q).z.v`QCFG
"/home/homer/.kx/config2"
Alternatively, set QCFG through the -v command-line flag, which takes priority over the envvar:
Bash
$ q -v ~/.kx/config3
q).z.v`QCFG
"/home/homer/.kx/config3"
Inspect loaded config values (including user-defined key=value pairs) using .Q.cfg:
Bash
$ cat ~/.kx/config
QINIT=simpson.q
name=Homer
address=742 Evergreen Terrace
$ q
q).Q.cfg
| ""
QINIT | "simpson.q"
name | "Homer"
address| "742 Evergreen Terrace"
You can also use the config file to set command-line options, using single-character keys:
Bash
$ cat ~/q/.config
e=1
p=1234
c=25 100
$ q
q)\e
1i
q)\p
1234i
q)\c
25 100i
Explicit command-line options override config file values:
Bash
$ q -p 4321
q)\e
1i
q)\p
4321i
6. Embedded components: q.k and kxsql
q.k is now embedded in the executable, with loaded functions visible and the full text available as .Q.qk:
q
q).Q.qk
"\\d .q"
"/each: +-*%&|^<>=$ <= >= <> @ ? in within bin div abs log exp sqrt sin cos t..
"neg:-:;not:~:;null:^:;string:$:;reciprocal:%:;floor:_:;ceiling:-_-:;signum:{..
"mod:{x-y*x div y};xbar:{$[9h=t:abs[@x];x*r+y=x*1+r:(y:9h$y)div x;x*y div x:$..
The SQL engine kxsql (formerly s.k) is embedded in the executable and can be initialized with .s.init[]:
q
q)t:([]a:1 2 3;b:4 5 6)
q).s.init[]
s)select * from t
..
Use .s.e to execute SQL and save the results, for example:
q
q)t:([]a:1 2 3;b:4 5 6)
q)t~.s.e"select * from t"
Access the kxsql release date is accessible with .s.rel:
q
q).s.rel
2025.01.16
7. Telemetry
Check telemetry status with .Q.tel[]. Returns 1b if telemetry is enabled, 0b if not. Status depends on license type and specifics.
q
q).Q.tel[]
1b
8. Console enhancements
You can now auto-size rows and columns independently using \c.
q
q)\c
25 80i
q)\c 50 0N
q)\c
50 100i
q)\c 0N 50
q)\c
30 50i
q)\c 0N 0N
q)\c
30 100i
Previously, you could only set both together with 0N 0N and worked with invalid row/column values. Now it requires explicit 0N for row/column size:
q
q)/ before
q)\c aa bb
q)\c
30 100i
q)/ after
q)\c aa bb
'domain
9. Model Context Protocol (MCP) Server
Adds support for the KDB-X MCP Server integration. The MCP Server integration connects KDB-X to any client that supports the Model Context Protocol (MCP) protocol. This setup allows both users and AI models to interact with KDB-X using natural language through AI-powered applications like Claude, GPT, or Gemini. See the MCP Server overview page for more details.
NUC (Not Upwardly Compatible)
Note
We aim to avoid introducing compatibility issues. Most of the changes below result from unifying behavior or tightening previously undefined or inconsistent cases.
-
Licenses: search path for licenses no longer includes the current working directory (
cwd). -
Scripts: search path for scripts now includes
$QHOME/q/, searched aftercwdand before$QHOME/. -
Libraries: search path for libraries now includes
$QHOME/lib/, searched aftercwdand before$QHOME/[.z.o]. -
Standardized license errors: KDB-X now returns consistent license error messages, for example:
q
'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!