-
Notifications
You must be signed in to change notification settings - Fork 13
Home
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.
- Skeletal - Get very rough versions of the interpreter, some functions, the REPL, lists and IPC in place. DONE.
- Expand Keywords - Get an almost fully functional in-memory KDB. i.e. Expand the supported keywords. Happening
- Support Adverbs/Execution Control
- Expanded Types - datetime/timespan/anymap/timestamp.
- Attributes - Supporting all attributes and speedup of common operations
- Selects - Improved select support, including some optimizations.
- IPC - Ability to IPC all types. NOT supporting parse trees.
- Faster - Improved parsing. Probably replacing ANTLR with custom interpreter or structural changes.
- Faster - Replacing the interpreter backend with JIT/Graal.
- Disk support - Allowing basic HDBs
- Faster Disk - Optimizing disk queries
- Our own ideas.
- Parse/Eval support.
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 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.
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?