-
Notifications
You must be signed in to change notification settings - Fork 109
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[Enhancement] KCL needs a lighter backend end for easy installation and use. #291
Comments
We can combine the first and second solutions. |
We need to study these pre-dependencies:
|
Or we can take a different approach and allow KCL to run as a standalone server,client communicate via HTTP or gRPC. |
Thank you! @reckless-huang ❤️ This is a great suggestion. Actually, we have already built a KCL server for interacting with external systems, and you can see here https://kcl-lang.io/docs/reference/xlang-api/rest-api and view a list of all HTTP/gRPC functions, including the |
Problems
python3 -m pip install kclvm
. The kclvm trust also needs to be compiledcargo install kclvm
, installed and run through cargo install (convenient for integration by other two party and three party applications).Design
Design 1
Migrate KCLVM python's stack virtual machine to Rust.
Pros.
Cons.
Design 2
Just like rego (https://github.com/open-policy-agent/opa), cadence (https://github.com/onflow/cadence), and wa (https://github.com/wa-lang/wa), write a WASM codegen adaptation layer, and the executive layer uses the industry's mature WASM virtual machine, such as wasmtime (https://github.com/bytecodealliance/wasmtime).
Pros
Cons
Transition Plan
Just like
libtaichi.dylib
in the taichi repo (https://github.com/taichi-dev/taichi), package the KCLVM rust core library into the pip packagepython3 -m pip install kclvm
or go package for installationgo get kclvm-go
.The text was updated successfully, but these errors were encountered: