Skip to content

Developer release notes



  • Fixed zlib stream errors when trying to clone from some git repositories
  • Tab names for files now only show the filename instead of the full path
  • Security improvements


  • qcumber: Improved support for Junit XML output format
  • qcumber: The expected and actual values from are now shown in the results for failing tests
  • qcumber: Passing tests are hidden in the stdout results by default unless the -showAll flag is set
  • coverage: Fixed cases where changing the context in instrumented code wasn't working
  • coverage: Improved handling of 'projection null'
  • coverage: Coverage results are now reported to 3 decimal places
  • coverage: Fixed bugs related to assignments inside loops or conditionals



  • Fix table flex behaviour in latest Firefox
  • Renamed right-click "Open" to "Go to Definition", now works with q files
  • Minor fixes to Find/Replace toolbar behaviour


  • qcumber: -coverage CLI option added to run code coverage
  • qcumber: -out CLI option can now output to multiple files
  • qlint: added -quiet, -color CLI flags
  • qlint: CLI now prints a summary of results if not given -quiet
  • coverage: HTML output added



  • KX branding and UI update
  • Attach a remote kdb+ process to multiple editors at once from File > Connection Manager
  • Editor find/replace dialog usability update
  • Profiler UI usability update
  • Symlinks added as a first-class object within the IDE tree (read-only)
  • Deletion of shared repositories now supported
  • Added ability to re-map hotkeys
  • Added ability to customize startup message via a plugin


  • qcumber -breakOnFail CLI option added to open the kdb+ debugger on a failing test
  • Benchmark blocks no longer require a baseline for historical tracking in qcumber
  • .qu.stub can now stub any data type rather than only functions in qcumber
  • qlint custom reporter added with -reporter file.q which defines write[file; results]
  • @overview can be used by default in place of @fileOverview in qdoc
  • @type added to qdoc for annotating the type of non-function data



  • Added Default Username to connection handle by default for IPC connections



  • Fixed bug preventing remote scratchpad authentication plugins from loading



  • Fixed bug in Chrome when is set post launch causing unnecessary login prompts


  • Ubuntu 20.04 support added


  • UI change: The Remotes tab has been moved to a Git context menu entry
  • For authentication on Windows installs, username and password are now requested using Windows native authentication dialog
  • Option to display pop-up message when uploading a file (env var DEVELOPER_UPLOAD_WARNING_MSG)
  • Added scroll-lock option to console
  • File browser access restricted by the -u flag and the AXFS_ALLOW_LIST and AXFS_DENY_LIST env vars
  • Workspace sidebar collapse/expand now behaves recursively
  • Performance improvements related to large repositories
  • General UI and library performance improvements and bug fixes

Development tooling:

  • Can now customize the Git default branch used by setting env var DEVELOPER_DEFAULT_REF
  • Test and Lint buttons added to Git Push dialog
  • Can now Git > Reset multiple selected items at once
  • Setting to trim trailing whitespace in editors on save from File > Settings
  • Option to map Ctrl+E (Execute) to also display results (env var DEVELOPER_EDITOR_DISPLAY_ON_EXECUTE)
  • Backspace in editors will erase soft tabs
  • Option to customize Remote Scratchpad Max Rows for captured results (env var DEVELOPER_REMOTE_MAX_RECORDS)
  • Improved parse support for multiple temporal types
  • Disabling linting (File > Settings) disables all editor syntax checking
  • Developer API data structures available in Function Reference Typdefs page
  • Statements in q files will now execute in the context of the closest \d .ns or system "d .ns" above the selection. This can be disabled to always execute in . in File > User Settings.

Data Analysis:

  • Nested columns are now exported in Table Exporter


  • Compression options added to .table library
  • qcumber now allows custom report writer with -reporter <file.q> which defines write[file; results]
  • qcumber added new -breakOnError flag for debugging test errors
  • qdoc now supports private typedefs with // @typedef:private tag
  • qdoc @desc tag now works with typedefs
  • qdoc optional dictionary key support added
  • qdoc error flag -errFile will export all errors during documentation
  • qdoc added support for foreign and code types
  • qdoc executed example blocks with new // @doctest tag
  • qlint reported line and column errors are now 1-indexed (start at line/column 1 rather than 0)
  • axrepo mode added to run on kxscm folder structure on disk


  • q linter results start at line 1, previously 0-indexed
  • Symlinks resolved when detecting start directory
  • Add Ctrl+E hotkey and option to display result to Python editors


  • A default username can now be provided when creating connections to pre-fill the Authentication dialog
  • Error messages longer than the status bar would previously be truncated, can now print the error to the Console
  • Pre-set environment variables not overwritten during install
  • Optional Ctrl+E/Ctrl+Enter keybindings to display results to the Developer console
  • Optional environment variables for configuring default hostname and authentication for new connections
  • Running the q linter on the current directory with . would previously error, now resolved
  • Running the q linter with an empty lint.config file would previously error, now resolved
  • .qdate.resolve fix for parsing months with leap years using %b or %B


  • kdb+ 4.0 support added


  • Remote Editor connection search, favorite, and filter
  • Ability to toggle the Sidebar within the IDE (Windows > Toggle Sidebar)
  • Accessibility improvements throughout
  • General fixes and performance improvements

Development tooling:

  • Linter configuration improvements from within Developer (Right click > Code > Lint > Config)
  • Repository changes printed to the console on Pull
  • (beta, Linux, kdb+ 4.0) Visual flamegraph profiling (Tools > Profiler)


  • Conditional feature skip with skip if block in qcumber
  • qcumber.q_ unit testing library reporting and usability improvements
  • qlint.q_ linting library now checks for lint.config files on disk
  • qlint.q_ exits with code 1 if there are error class issues


  • Error Bar geometry added to Grammar of Graphics (.qp.errorbar, .qp.herrorbar)

Upgrade considerations

  • The qcumber.q_ script now always prints a summary of test results to stdout, even if writing results to a file. To recreate the old behaviour where no results were printed in this case, use the new -quiet flag.
  • The qcumber.q_ script now prints only the failing tests to stdout by default. To recreate the old behavior where it printed all test results, use the new -showAll flag.
  • The operating systems within the ws/lib/<os> directory have the architecture appended. For example, ws/lib/rhel7/ has been renamed ws/lib/rhel7_x64.


  • Added installer option on osx for Developer to use OpenSSL 1.0 or 1.1


  • Connect any editor to a remote q process without loading Developer in the remote process (Tools > Remote Scratchpad)
  • Git tag support in Developer workspace
  • Drag-and-drop files and other artifacts between modules, folders, and repositories
  • Improved Workspace Browser, showing last accessed time for each workspace
  • 3D point geometry added to Grammar of Graphics (.qp.point3D)
  • Shared/linked scaled in Grammar of Graphics (.qp.s.share)
  • Added RHEL 8 Linux support

Upgrade considerations

  • A new installer option has been added to optionally set the process directory to the workspace, only if Developer is started in a new process. The directory of existing processes will not be changed.
  • With the introduction of Remote Editors, a new .z.pc handler was added to Developer to track ports being closed. This calls out to any already defined .z.pc in the process. See the for more information.


  • Fix for failing csv encoding when linting when results contain CANNOT_PARSE errors
  • Remove dependency on libpng from qlint and qcumber
  • Importing q file as a module could fail if file did not have context switches
  • Add example of loading .dat output to command line script -help output



  • All internal namespaces prefixed with .ax to mitigate namespace collisions
  • Load Google Maps key from env var in Inspector
  • Increased performance and efficiency of Grammar of Graphics library and Inspector charts
  • Improved workspace load and clone performance
  • Improved Coverage performance
  • Support for new OpenSSH key format when cloning over SSH (macOS and Linux only)

UI improvements:

  • Repositories are now collapsible
  • Support for collapsible folders added
  • Rename workspaces within the workspace selection dialog
  • Improved rendered Markdown windows:
    • Improved styling
    • q/Python code highlighting
    • Code block execution
  • Sample data panel in Inspector charts

Development tooling:

  • "Script-like" evaluation using "display" - no semi-colons required
  • Load/run q scripts by right clicking editor or sidebar
  • Disable lint warnings from UI by clicking lint gutter icon
  • Added in-tab Inspector for quick interactive grids and visuals
  • Git Configuration Defaults added to File > User Settings
  • Added a grid view option within the Console tab
  • Added option in Console to display the expression generating each result
  • Improved public function reference style and usability
  • Default user git configuration settings can be set in File > Settings

Python (requires embedPy):

  • Run Python scripts by right clicking editor or sidebar
  • In a file ending in .py or .p, highlight and display/execute Python commands printing results in the Console tab
  • Enable the following Python integration from File > Settings > Python Integration
    • Move data between kdb+ and Python through UI (editor context-menu and Process View)


  • Added top-level scripts for qcumber, qlint, qdoc, and axrepo
    • i.e., q qcumber.q_ -src s.q -test ./tests -out results.csv
  • Added JUnit output format for qcumber results for Jenkins integrations
  • Added axrepo.q_ library to convert kxscm repositories on disk to q scripts
  • qdoc mkdocs mode - generate mkdocs-compatible documentation from q
    • i.e., q qdoc.q_ -src ./src -out ./doc -render
  • Many qdoc improvements and additional tags

Upgrade considerations

  • Loading previous workspaces will prompt to upgrade the workspace for folder support
  • qdoc
    • API defaults changed to match command-line options
    • pandoc mode support deprecated in favour of new mkdocs mode
  • All internal namespaces prefixed with .ax to avoid clashes
  • Google Maps API key moved to environment variable rather than HTML key
  • When evaluating code, new expressions start in column 0 (semi-colons no longer required to separate expressions)


  • Support for older q versions of 3.4, 3.5, and 3.6
  • Support for versions of osx back to 10.10
  • More tolerant to q startup time due to q.k changes
  • Added optional DEVELOPER_LOCALREPO_PORT env var which can be used if issues due to changes in q.k persist


  • Added Ubuntu 18 support
  • Q Reference now points to
  • Fix possible buffer overflow when cloning repositories