Skip to main content

· 阅读需要 1 分钟

KCL 是一个 CNCF 基金会托管的基于约束的记录及函数语言,期望通过成熟的编程语言技术和实践来改进对大量繁杂配置比如云原生 Kubernetes 配置场景的编写,致力于构建围绕配置的更好的模块化、扩展性和稳定性,更简单的逻辑编写,以及更简单的自动化和生态工具集成。

本栏目将会双周更新 KCL 语言社区最新动态,包括功能、官网更新和最新的社区动态等,帮助大家更好地了解 KCL 社区!

KCL 官网:https://kcl-lang.io

特别鸣谢

感谢过去两周所有的社区参与者,以下排名不分先后

  • 感谢 @prakhar479 对 KCL built-api 支持 blake3 的贡献 🙌

  • 感谢 @shruti2522 对 IDE hints 功能增强的贡献 🙌

  • 感谢 @liangyuanpeng 对 kcl-openapi 工具的持续贡献 🙌

  • 感谢 @trogowski 对 KCL 文档的贡献 🙌

  • 感谢 @yonas 对 KCL 文档的贡献 🙌

  • 感谢 @NishantBansal2003 对 KCL 包管理工具 sum check 功能的持续贡献 🙌

  • 感谢 @officialasishkumar 对 KCL 包管理工具下载 Git 子包功能的贡献 🙌

  • 感谢 @cx2c, @yonas, @NishantBansal2003, @shruti2522, @nwmcsween, @trogowski, @suin, @johnallen3d, @liangyuanpeng, @riven-blade, @officialasishkumar, @gesmit74, @prakhar479, @Lukáš Kubín, @Christopher Haar, @Alexander Fuchs, @Peter Boat, @Stéphane Este-Gracias, @Yvan da Silva, @Rehan Chalana, @Zack Zhang, @Josh West, @Brandon Nason, @suin, @Anany 等在近两周使用 KCL 过程中提供的宝贵建议与反馈 🙌

内容概述

🏄 语言更新

  • 加密标准库新增参数,支持对参数传入参数进行编码。
sha512(value: str, encoding: str = "utf-8") -> str
  • 新增 built-in API crypto.blake3 支持使用 Blake 算法进行哈希加密。
import crypto
blake3 = crypto.blake3("ABCDEF")
  • 新增 built-in API isnullish 支持判断字段是否为空。
a = [100, 10, 100]
A = isnullish(a)
e = None
E = isnullish(e)
  • 新增 built-in API datetime.validate 支持验证日期内容。
import datetime
assert datetime.validate("2024-08-26", "%Y-%m-%d")
  • 修复了 built-in API datetime 中日期格式的问题。
  • KCL Plugin 支持通过 rust 开发。
  • 修复了 Schema 配置合并参数解析错误的问题。
  • KCL 发布了 0.10.0-rc.1 版本。
  • KCL Plugin 增加了部分测试。

💻 IDE 更新

  • 修复了第一行第一列代码高亮失效的问题。
  • 修复了 IDE 偶发死锁的问题。
  • IDE 增加了更多输出日志。
  • 优化了 schema index signature key 的语义高亮。
  • IDE find ref 功能优化。
  • IDE 修复了更新 kcl.mod 失效的问题。
  • IDE 修复了 find ref 错误。
  • IDE 修复了打开文件时代码高亮失败。
  • LSP 部分代码结构重构,调整了部分 API 的作用域。
  • IDE 修复了 kpm 更新依赖后,IDE 没有同步更新的问题。
  • IDE 新增了对 schema 参数的 hints。

📖 文档更新

  • 新增了 KCL 在 kubecon 2024 的回顾文章。
  • 文档中增加了新增 built-in API 相关的文档。
  • 调整了文档中包管理工具与 OCI registry 和 Git Repo 部分集成的文档。
  • 新增了文档中关于 kcl.mod include 和 exclude 字段的描述。
  • 修复了部分文档错误。

📦️ SDK 更新

  • 新增 KCL wasm lib 支持 node.js 和 浏览器集成。
  • 重构优化了 KCL python 的代码案例。

📬️ 工具更新

  • kcl-openapi 对代码结构和文档结构进行了优化和调整。
  • kcl-playground 添加了更多的测试用例,对工程结构体进行了优化和升级。
  • 包管理工具修复了编译多个 *.k 文件失败的 bug。
  • 包管理工具支持添加 Git 仓库中子包作为三方库。
  • 包管理工具新增部分测试用例。
  • krm-kcl function 修复了部分测试和文档中的错误。
  • kcl-operator 更新和修复了部分文档内容,优化了部分代码结构。
  • kcl-operator 新增部分测试用例,优化了发布流程。
  • kcl-operator 新增了初始化容器时的自动鉴权。
  • KCL fmt 工具提供了 C api。

⛵️ API 更新

  • kcl-go API 支持 jsonschema 的导入。

🔥 社区集成更新

  • kcl-flux-controller 传入参数优化, 新增更多的测试用例,更加完整的 release 和测试流程。

其他资源

❤️ 查看 KCL 社区 加入我们。

更多其他资源请参考:

· 阅读需要 1 分钟

2024 年 8 月 21 日至 23 日,为期 3 日的 KubeCon + CloudNativeCon + Open Source Summit + AI_dev China 2024 大会在香港圆满落幕。期间,众多国内外社区领袖和技术专家,共同带来了超过 140 场精彩的演讲,分享了他们在各自领域的深刻洞察和宝贵经验。KCL 社区也在这次活动中与来自各个社区的小伙伴们进行了交流与分享。

Lighting Talk: KCL: Simplifying Kubernetes Manifests Management

Lighting Talk PPT: 下载 PDF

pptcover

在这次活动中,KCL 通过一场 Lighting Talk 为大家介绍了 KCL 在简化 kubernetes 项目配置管理,提升配置管理效率和稳定性方面作出的努力。

kcllightingtalk

KCL 作为一种 IaC 领域的领域特定语言(DSL),主要解决 IaC 领域中常见的配置规模爆炸,认知成本过高,缺乏有效的动态配置管理,配置可靠性保证等问题,并且能够轻松的与社区生态进行集成。

为了有效的降低配置规模,KCL 提供了 Schema 用来抽象通用的配置结构借助包管理机制支持可重用结构的分发和复用。并且,KCL 通过多文件的同名配置合并能够将一份配置中的内容分隔在不同文件中编写,对不同的配置开发人员屏蔽不必要的陌生概念,降低开发人员的认知负担。同时,作为一个语言项目,丰富的工具链和功能强大 IDE 也极大程度上提高了开发人员开发体验。

ppt1

KCL 支持动态配置管理,提供了声明式命令式两种方式。开发者既可以通过 if/for/lambda 等表达式 在代码中编写命令式的代码生成配置。

ppt2

也可以通过 声明式的配置合并/覆盖运算符 对不同的配置块和配置字段进行合并与覆盖。

ppt3

KCL 通过类型系统测试规则校验三板斧来提高配置的可靠性。KCL 作为一种类型安全的配置语言,能够在编译阶段提前暴露大量类型错误,开发者在 IDE 中就能够得到错误提示。

ppt4 ppt5

同时,最简单也最有效的软件可靠性保证的方法“测试”,在 KCL 中也得到了支持,你可以通过 lambda 编写为配置内容编写单元测试。

ppt6 ppt7

最后,编写验证规则对配置内容进行检查一直是 IaC 领域一个常见的议题,KCL 支持通过Assert/Check/Rule等特性编写对应的配置校验规则对配置内容进行检查。

ppt8

KCL 提供了 12 种语言的 SDK,支持与大多数项目进行集成;并且支持通过插件机制扩展 KCL 语言的能力。KCL 还提供了 KCL-Operator 支持通过 KCL 语言校验,更新和生成 kubernetes 集群中的资源。借助上述能力,KCL 能够轻松的与 Crossplane,ArgoCD 等社区工具完成集成。

KCL & Crossplane 一次令人开心的线下交流

在这次 kubecon 活动中,KCL 也与 Crossplane 社区的伙伴进行了交流,来自 Crossplane 社区伙伴也为我们带来了精彩的分享。

Crossplane 是一个开源项目,旨在为云原生应用程序提供基础设施即代码的能力。它允许开发者和运维团队以与 Kubernetes 相似的方式管理各种云资源,支持多云环境和混合云架构。

crossplaneppt1

在这次分享中,Crossplane 在演讲中提到了关于在软件开发的生命周期中尽早暴露问题的重要性。

crossplaneppt2

Crossplane 在介绍他们保证配置可靠性的过程中也提到了如何使用 KCL 来提升配置的可靠性。

crossplaneppt3

通过 KCL 来为配置编写对应的测试用例,以尽早暴露配置中出现的问题。

crossplaneppt4

KCL 和 kusionstack 社区也同 crossplane 社区的同时进行了令人开心的线下沟通,也期待后续能够展开更加深入的合作。

photo

其他资源

感谢所有 KCL 用户在此次版本更新过程中提出的宝贵的反馈与建议。更多其他资源请参考:

欢迎加入我们的社区进行交流 👏👏👏:https://github.com/kcl-lang/community