Skip to main content

· 阅读需要 1 分钟

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

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

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

内容概述

感谢所有贡献者过去一段时间 (2024.05.01 - 2024.05.15) 的杰出工作,以下是重点内容概述

📦️ 三方库更新

  • argo-cd-order 更新到 0.2.0 版本,新增资源过滤功能
  • crossplane 模块 KCL 代码更新,与 crossplane 1.15 版本 CRD Webhook 校验规则匹配
  • json-merge-patch 模块更新到 0.1.1 版本,支持 Schema 类型过滤

🏄 语言更新

  • 修复 yaml.decode_all 函数返回值的类型错误
  • 修复 as 关键字在某些三方库存在会断言失败的情况
  • file 模块函数列表更新,详见文档
  • typeof 函数新增 Schema 类型的支持用于区分 schema 类型和实例
schema Foo:
bar?: str

foo = Foo {}
type_schema = typeof(foo) # schema
type_type = typeof(Foo) # type

💻 IDE 更新

  • 修复 IDE 在 Windows 操作系统上路径错误以及偶发崩溃的问题
  • Intellij KCL 插件根据功能不同拆分为带/不带 kcl-language-server 两种版本

📬️ 工具链更新

  • 修复 kcl run 编译相对路径模块时找不到三方库的问题
  • 修复 kcl vet 验证工具不能导入外部库的问题
  • 修复 kcl fmt 格式化工具在插入外部 import 语句时的格式化错误问题
  • 修复 kcl completion bash 命令补全非预期的错误

⛵️ API 更新

  • OverrideFile API 优化变量自动修改时的格式输出
  • ListVariables API 支持变量属性运算符类型和 Schema 类型返回
  • GetSchemaType API 支持 Schema 父类返回

🔥 SDK 更新

  • KCL Rust SDK 发布 v0.9.0-alpha.1 预览版本
  • KCL Python SDK 发布 v0.9.0-alpha.1 预览版本
  • KCL Node.js SDK 发布 v0.9.0-alpha.1 预览版本
  • KCL Java SDK 发布 v0.9.0-SNAPSHOT 版本

🚪 集成更新

  • 修复 ArgoCD KCL Plugin 并发同步资源报错的问题
  • 新增 KCL arm64 docker 镜像 kcllang/kcl-arm64
  • KRM KCL 规范新增权限访问字段、Kubernetes 资源过滤字段和编译配置字段,支持私有 OCI Registry 访问以及灵活的编译配置,详见文档
  • Crossplane KCL 函数发布 v0.8.0 版本并更新更多使用样例,详见文档

特别鸣谢

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

  • 感谢 @Blarc 和 @prahaladramji 对 KCL Intellij IDE 插件支持最新 Intellij 版本的贡献 🙌
  • 感谢 @jgascon-nx 对 KCL Crossplane 模块的贡献 🙌
  • 感谢 @Gmin2 对 KCL VS Code IDE 重启 KCL Language Server 命令的贡献 🙌
  • 感谢 @Gmin2 对 KCL GetSchemaType API 支持返回父类字段的贡献 🙌
  • 感谢 @metacoma 对 KCL argo-cd-order 模块的贡献 🙌
  • 感谢 @shruti2522 对 KCL file 模块的贡献 🙌
  • 感谢 @shruti2522 对 KCL Import 和 Doc 工具的贡献 🙌
  • 感谢 @shruti2522 对 KRM KCL 规范 Kubernetes 资源过滤功能的贡献 🙌
  • 感谢 @JeevaRamanathan 对 KCL file 模块的贡献 🙌
  • 感谢 @AkashKumar7902 对 KCL 包管理工具 MVS 最小版本选择算法的贡献 🙌
  • 感谢 @bozaro 对 KCL Go SDK Native API 的贡献 🙌
  • 感谢 @officialasishkumar 对 KCL 包管理工具配置支持 exclude 参数和 include 参数的贡献 🙌
  • 感谢 @beholdenkey 对 KCL 文档的贡献 🙌
  • 感谢 @d4v1d03 对 KCL IDE 悬停功能的贡献 🙌
  • 感谢 @ibishal 对 KCL IDE Preview 功能的贡献 🙌
  • 感谢 @bradkwadsworth-mw 对 KRM KCL 规范中访问权限字段以及的贡献 🙌
  • 感谢 @jgascon-nx 和 @metacoma 对使用 KCL 和 Crossplane KCL 函数的经验和案例分享, 查看代码仓库 🙌
  • 感谢 @mintu, @Sergei Iakovlev, @HAkash Kumar, @HStéphane Este-Gracias, @Korada Vishal, @Bishal, @metacoma, @NAVRockClimber, @nkabir, @dennybaa, @dopesickjam, @vfarcic, @sestegra, @jgascon-nx, @zargor, @markphillips100, @evensolberg, @borgius, @bradkwadsworth-mw, @reedjosh, @patrycju, @PrettySolution, @selfuryon, @steeling, @empath-nirvana, @CC007, @M Slane, @MOHAMED FAWAS 和 @Even Solberg 等在近段时间使用 KCL 过程中提供的宝贵建议与反馈 🙌

其他资源

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

更多其他资源请参考:

· 阅读需要 1 分钟

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

对云原生、平台工程、语言编译器、语言包管理工具和语言 IDE 感兴趣的小伙伴,我们邀请你申请 KCL 的 2024 夏季 Linux 基金会 LFX Mentorship 项目,完成项目有最低 3000 美金的奖励哦!快来申请吧!

LFX Mentorship 项目

我们有三个 Mentorship 项目,内容涵盖包管理工具,语言编译器和语言 IDE 三个方面。

1. 为 KCL 包管理工具增加稀疏检出功能

KCL 包管理工具(kpm)目前支持上传,下载等分发 KCL 包的功能,但是随着 KCL 项目规模越来越大,KCL 项目依赖的三方库越来越多。kpm 每次在编译或者更新等需要下载三方库的过程中,都需要重新下载大量的 KCL 三方库,这导致工具的性能下降,因此,kpm 需要支持稀疏检出(Sparse-Checkout)功能,使 kpm 能够按需获取到需要的 KCL 程序,来提升 kpm 各个方面的性能。

2. 优化 KCL IDE 的提示信息

优化 KCL IDE 的提示信息,包括 type inlayhint 的实现和 hover 内容渲染的优化。目前,KCL 的悬停内容是纯文本格式,需要渲染成更美观的样式。

3. 为 KCL 编译器增加 tree-sitter 编译前端的支持

Tree-sitter 是一个支持增量编译的解析器生成器。为了支持 IDE 的更多特性,我们需要一个更完整的语法树,并且为了便于与社区集成,我们打算使用 tree-sitter 为 KCL 构建一个更完整的解析器系统。

4. 如何申请

在 LFX mentorship 平台上申请你钟意的项目,你可以通过以下链接访问 LFX mentorship 平台。申请从 2024 年 5 月 14 日开始,到 5 月 29 日结束。

有任何的问题,欢迎直接到对应的 issue 中获取更多内容或者与我们讨论:

5. 时间节点

事件开始日期结束日期
学员申请开放5 月 14 日(星期二)上午 9:005 月 29 日(星期三)上午 9:00
申请审查/录取决定/人力资源文书工作5 月 30 日(星期四)上午 9:006 月 12 日(星期三)上午 9:00
导师计划开始并分配初始工作6 月 17 日(星期一)(第一周)
中期学员评估 / 第一笔津贴支付7 月 24 日(星期三)(第六周)
最终学员评估到期 / 学员反馈提交到期 / 批准第二笔和最后一笔津贴支付8 月 29 日(星期四)上午 9:00 第十二周
学期最后一天8 月 30 日