Grackle (KCL to EP compiler) (#1270)
* Start Grackle (KCL-to-EP compiler) This begins work on a second, different executor. The old executor is a tree-walk interpreter, this executor compiles the KCL programs into the Execution Plan virtual machine defined in its [own crate](https://github.com/KittyCAD/modeling-api/tree/main/execution-plan). This executor is called "Grackle", after an Austin bird, and it's got its own module in wasm-lib so that I can keep merging small PRs and developing incrementally, rather than building a complete executor which replaces the old executor in one PR. Grackle's "Planner" walks the AST, like the tree-walk executor. But it doesn't actually execute code. Instead, as it walks each AST node, it outputs a sequence of Execution Plan instructions which, when run, can compute that node's value. It also notes which Execution Plan virtual machine address will eventually contain each KCL variable. Done: - Storing KCL variables - Computing primitives, literals, binary expressions - Calling native (i.e. Rust) functions from KCL - Storing arrays Todo: - KCL functions (i.e. user-defined functions) - Member expressions - Port over existing executor's native funtions (e.g. `lineTo`, `extrude` and `startSketchAt`)
This commit is contained in:
@ -1,3 +1,3 @@
|
||||
[codespell]
|
||||
ignore-words-list: crate,everytime
|
||||
skip: **/target,node_modules,build
|
||||
skip: **/target,node_modules,build,**/Cargo.lock
|
||||
|
||||
Reference in New Issue
Block a user