和过去的版本说再见 - KCL 语言 Go SDK 新功能速览!
KCL 是什么?
KCL 是一个开源的基于约束的记录及函数语言,期望通过成熟的编程语言技术和实践来改进对大量繁杂配置和策略的编写,致力于构建围绕配置的更好的模块化、扩展性和稳定性,更简单的逻辑编写,以及更快的自动化集成和良好的生态延展性。
KCL Go SDK
是什么?
kclvm 是一个 KCL 语言的运行时库,它提供了一个与 KCL 编译器交互的编程接口。它是一个客户端库,可用于对 KCL源代码执行各种操作,例如 执行、格式化等。KCL Go SDK
是 kclvm 的 Go 语言包装,提供了 Go 语言的 SDK,方便了在云原生环境下 KCL 语言的集成。
目前,KCL Go SDK
客户端构建在 kclvm json2 rpc API 之上,这意味着它使用和其他语言的 kclvm 客户端使用的相同 API 与 KCL 源代码交互,这与其他语言的 KCL SDK 工作方式类似,但提供了更加友好的 Go 语言风格的包装。
新版本 KCL Go SDK
解决了什么问题?
KCL 作为一门配置型语言,和云原生领域有着极其紧密的联系,而另一方面,Go 语言已经成为了云原生领域通用编程语言的事实标准。在这样的背景下,开发 KCL 的 Go SDK 来完成 KCL 编译器与 Go 语言的直接交互就有了必要,这也是KCL Go SDK
诞生的原因。
最初版本的 KCL 编译器及运行时使用 python 编写,由于 python 语言本身的性能问题和其动态语言的特性,初版 KCL 语言的运行速度和安全性都有很大提升空间。出于安全与效率问题的考虑,后续版本 KCL 编译器又使用了 rust 语言编写,因此新版本的KCL Go SDK
基于 Rust 实现的 KCL 核心 进行包装,去除了 python 依赖,简化了安装,优化了使用体验。
新版本KCL Go SDK
可以视为一个纯 Go 包使用,无需任何外置依赖,可以通过一键go install
即可完成安装使用。
命令行 KCL Go SDK
快速体验
KCL Go SDK
提供了一个自带的 KCL Go 命令行,支持用户通过go install
来一键安装 kclvm 的 Go 命令行工具 kcl-go
,其要求本地 Go 版本为1.18+, 同时要求本地有完整的 CGO 工具链。
只需执行
go install kusionstack.io/kclvm-go/cmds/kcl-go@latest
新建 KCL 源文件 hello.k
apiVersion = "apps/v1" kind = "Deployment" metadata = { name = "nginx" labels.app = "nginx" } spec = { replicas = 3 selector.matchLabels = metadata.labels template.metadata.labels = metadata.labels template.spec.containers = [ { name = metadata.name image = "${metadata.name}:1.14.2" ports = [{ containerPort = 80 }] } ] }
之后可以直接在命令行中执行 KCL
$ kcl-go run ./hello.k apiVersion: apps/v1 kind: Deployment metadata: name: nginx labels: app: nginx spec: replicas: 3 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: "nginx:1.14.2" ports: - containerPort: 80
Go 代码如何集成 KCL
以上一节的 hello.k 为例,构建以下的 main.go 代码:
package main import ( "fmt" "kusionstack.io/kclvm-go" ) func main() { result := kclvm.MustRun("./hello.k").GetRawYamlResult() fmt.Println(result) }
kclvm.MustRun("./hello.k").GetRawYamlResult()
运行对应的kcl源文件fmt.Println(result)
打印运行结果
本地环境要求 Go 版本为1.18+,与完整的 CGO 工具链。运行命令行添加 KCL Go SDK
依赖
go get kusionstack.io/kclvm-go@main
执行 Go 程序,结果为:
$ go run main.go name: kcl age: 1 x0: name: kcl age: 1 x1: name: kcl age: 101
总结
通过这一次的 KCL Go SDK
的版本变更,我们去除了 python 依赖并切换至性能更加优秀的 rust 运行时。文章分别简单展示了如何使用 kcl-go
命令行工具执行 KCL 源代码, 以及如何将 KCL 集成至您的 Go 程序之中。
当然除了简单的编译并运行 KCL 源码之外,KCL Go SDK
还提供了丰富的功能以方便用户更好地在 Go 中集成 KCL , 包括:
- KCL 静态错误分析(lint与格式化)
- KCL 依赖分析、
- Go 结构体和 KCL Schema 互相转换等等
其他资源
感谢所有 KCL 用户和社区小伙伴在此次版本更新过程中提出的宝贵反馈与建议。受限于文章篇幅,后续我们会撰写更多 KCL v0.4.6 新版本功能解读系列文章,敬请期待!
更多其他资源请参考:
欢迎加入我们的社区进行交流 👏👏👏:https://github.com/KusionStack/community 👏👏👏

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Apache 孵化项目被公然抄袭,开源世界真的会变得更好吗?
Apache StreamPark(incubating) 是一个流处理应用程序开发管理框架。初衷是让流处理更简单,旨在轻松构建和管理流处理应用程序,提供使用 Apache Flink 和 Apache Spark 等编写流处理应用程序的开发框架。同时,StreamPark 提供了一个流处理应用管理平台,核心能力包括但不限于流应用开发、调试、交互查询、部署、运维、实时数仓等。2021 年 4月 以 StreamX 为名进行开源,于 2022 年 8 月更名为 StreamPark,随后通过投票于 9 月 正式成为 Apache 开源软件基金会的孵化项目。 被抄袭侵权 前几天,有开发者跟我们反馈,有项目 copy StreamPark 的代码并且没有声明版权,起初我们不相信,以 Apache 项目的知名度和 Apache 开源协议的宽松程度一般不会有项目这么干,毕竟直接在代码中注明引用即可,协议对代码分发没有任何限制。带着疑惑和不解,我们在 GitHub 上找到了赤兔实时计算平台这一项目的主页以及代码,令人触目惊心的发现确实存在大量对 Apache StreamPark 代码的抄袭、并且...
- 下一篇
word GPT Plus V0.2.1 ,利用 chatGPT辅助工作的 word 加载项优化文本插入
Word GPT Plus 是一款基于Vue3开发的Word加载项,它允许你基于文档中写的内容生成文本。你可以使用它来翻译、总结、润色或者从零开始写一篇文章。 开源地址和软件官网 Github Kuingsmile/word-GPT-Plus 本次更新内容 优化了回复语言设置 修复了使用web接口时,如果回复过长报错的问题 修复了新行模式插入的bug 特色功能 使用GPT-3.5 API生成文本并支持选择模型 支持设置access token调用chatGPT web接口(使用该方法免费,建议配合chatGPT-plus) 内置用于翻译、总结、润色和学术写作的提示 支持多种语言 可以自定义提示并保存以供将来使用 允许用户设置temperature和max tokens 支持代理 使用截图 安装方法 有两种方法可以安装 Word GPT Plus:通过我的免费web服务,或者自己搭建服务。 我强烈建议使用我的web服务,因为它安装简单快捷,也不需要安装额外的依赖项。此外,你将随时可以访问到最新版本的 Word GPT Plus。 由于所有数据都是使用localStorage保存的,所以...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2整合Redis,开启缓存,提高访问速度
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- MySQL8.0.19开启GTID主从同步CentOS8
- Mario游戏-低调大师作品
- Linux系统CentOS6、CentOS7手动修改IP地址
- Docker安装Oracle12C,快速搭建Oracle学习环境
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS7安装Docker,走上虚拟化容器引擎之路
- Docker快速安装Oracle11G,搭建oracle11g学习环境