Skip to content
Ryan edited this page Oct 20, 2020 · 1 revision

Roadmap

Version 1.0 will be a 99% functional in-memory only q.

The plan is to first work, then to get faster and support disk. Finally we may support the same parse trees or we have a few ideas we would like to experiment with.

  1. Skeletal - Get very rough versions of the interpreter, some functions, the REPL, lists and IPC in place. DONE.
  2. Expand Keywords - Get an almost fully functional in-memory KDB. i.e. Expand the supported keywords. Happening
  3. Support Adverbs/Execution Control
  4. Expanded Types - datetime/timespan/anymap/timestamp.
  5. Attributes - Supporting all attributes and speedup of common operations
  6. Selects - Improved select support, including some optimizations.
  7. IPC - Ability to IPC all types. NOT supporting parse trees.
  8. Faster - Improved parsing. Probably replacing ANTLR with custom interpreter or structural changes.
  9. Faster - Replacing the interpreter backend with JIT/Graal.
  10. Disk support - Allowing basic HDBs
  11. Faster Disk - Optimizing disk queries
  12. Our own ideas.
  13. Parse/Eval support.

Current Status

The roadmap above presents an idealised scenario. In reality the areas have a lot of interdependencies. Below we will try to estimate what % of each area is functional. I don't think we will go into more detail as the time would be better spent adding that functionality than detailing the shortcomings.

% Area Status
99% Skeleton Core Barely runnable REPL and IPC
50% Keywords 100/176 Keywords
50% Operators 17/21 Have most common form half-working. Numerous buggy results.
10% Adverbs 1/7 Adverbs. Only each really works.
1% Execution 0/8 Controls.
1% selects You can write "select from" but little else works.
50% Data Types basics supported: int/long/float/symbols. Unsupported: timestamp/timespan/datetime.
10% On-Disk Can save binary blobs can't save partitioned or load a database
30% IPC Can send/receive strings from server. Can't send binary format
0% Web
30% .z .z.t/.z.d/.z.a and 1/3 work. Event handlers and most others don't

How can we help?

How do you want bugs being reported? What about tests?

There are obviously large gaps and there isn't value in raising bugs or requests in all areas. We are going to put a skeleton of a test tructure in place. The most helpful thing you could do is raise PRs for tests within that structure.

Final Goal?

K vs Q - early implementations would implement e.g. sum as "+/", but now it's a built-in, are you planning on building out functions in Java, or via K operations?

Clone this wiki locally