Skip to main content

· 阅读需要 1 分钟

简介

KCL 团队很高兴地宣布 KCL v0.11.0 新版本现在已经可用!本次发布为大家带来了两方面的重点更新

  • 使用功能更完善和错误更少的 KCL 语言、工具链和 IDE 提升代码编写体验和效率
  • 更加全面丰富的标准库、三方库以及社区生态集成,涵盖不同应用场景和需求

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

❤️ 特别鸣谢

感谢 KCL 在 v0.10 - v0.11 版本迭代所有社区参与者,以下排名不分先后

@adamwg, @steeling, @dennybaa, @liangyuanpeng, @NishantBansal2003, @mayrf, @eminaktas, @Gmin2, @tvandinther, @diefans, @nkabir, @suin, @Chewie, @lwz23, @eminaktas,@steeling, @bozaro, @cakemanny, @Yufeireal, @andrzejgorski, @yonas, @dansrogers, @SkySingh04, @jellllly420, @slashexx, @xnull, @diefans, @zflat, @vfarcic, @spastorclovr, @patpicos, @mproffitt, @fraenkel, @irizzant, @vfarcic, @patpicos, @mproffitt, @fraenkel, @Clint, @Christopher Haar, @ron18219, @Zack Zhang, @Alexander Fuchs, @Smaine Kahlouch, @Yvan da Silva, @Jakob Maležič, @Ryan Rueth, @Christopher Haar, @kesser, @Justin B, @Evgeny Shepelyuk, @Smaine Kahlouch, @KennyZ, @Mark Altmann (Wompi), @Peter Boat, @Hai Wu, @Evgeny Shepelyuk, @anshuman singh, @Carl-Fredrik, @Larry Gadallah, @Kevin Sztern, @Nick Atzert, @Tobias Kässer, @Mike, @john thompson, @Sky Singh, @suin, @Tom van Dinther, @Stefano Borrelli, @Valer Orlovsky, @Jacob Colvin, @Sjuul Janssen, @Vyacheslav Terdunov, @Yury Tsarev

📚 重点更新内容

🔧 核心功能

语言

  • KCL 新增对 Alpine Linux(musl) 平台的支持。
  • KCL 重构了 Parser 部分的实现,重新组织了 import 依赖的 parse 流程。
  • KCL 优化了 schema attribute 中对 ** 表达式的类型解析。
  • KCL 修复了 lambda 表达式嵌套调用时不生效的问题。
  • KCL 修复了 schema mixin parse 内存泄露的问题。
  • KCL 修复了在有类型声明的赋值语句中函数调用表达式中的类型提升。
  • KCL 修复了 mixin 中调用 attr 的 lambda 函数的错误

工具链

  • 包管理工具版本选择算法上线。在 v0.11.0 版本中, KCL 包管理工具支持对依赖图中出现的同一个三方库的不同版本号进行选择,KCL 包管理工具参考了 go mod 的 mvs 算法, 为了尽可能保证兼容性,包管理工具目前倾向于选择依赖图中出现的最新的版本而不是已经 release 的最新版本。 在 v0.11.0 版本中,版本选择默认关闭,通过设置环境变量 export KPM_FEATURE_GATES="SupportMVS=true" 控制是否开启版本选择。

  • 包管理工具新增了新的本地三方库缓存结构,在 v0.11.0 版本中,KCL 包管理工具实现了新的本地三方库缓存结构,新的存储缓存结构对下载 git 仓库性能平均提升 88%。 在 v0.11.0 版本中,新的缓存结构默认关闭,通过设置环境变量 export KPM_FEATURE_GATES="SupportNewStorage=true" 控制是否启用新的本地三方库缓存。

  • 修复 kcl fmt 代码注释的格式化错误。

  • 修复 kcl fmt 在处理行连接符和注释组合时的错误。

IDE

  • KCL IntelliJ 插件发布 0.4.0 版本,支持 LSP4IJ
  • IDE 可以补全目录中未 import 的 schema,并且自动补充包的 import 语句 complete
  • IDE 新增了 Config 块中 key 的类型 hint。 hint
  • IDE schema hover 中提供了 attr 默认值信息。 hover
  • 修复了 IDE 在 Windows 系统中的异常。
  • 修复了 IDE 在复合赋值运算语句中异常的问题。
  • 区分了 any 关键字和类型的高亮
  • 修复了 IntelliJ 插件中格式化代码报错的问题。
  • 优化了 IDE 编译流程中 parser 部分。
  • 修复了函数参数 hint 不一致的问题。
  • 优化了 hint 信息,增加了双击将 hint 插入代码的功能。

API

  • 新增了 kcl_run_with_log_message API
  • 新增了 kcl_exec_program capi
  • 为 wasm 添加 kcl_version api

📦️ 标准库及三方库

标准库

  • KCL 新增标准库函数 filesha512fileblake3
import crypto

sha_filesha512 = crypto.filesha512("test.txt")
sha_fileblake3 = crypto.fileblake3("test.txt")
  • 修复 manifests.yaml_streamignore_private=False 参数 不生效的问题。

三方库

  • k8s 更新至 1.31.2
  • 修复 k8s 包中 import 别名的问题。
  • konfig 中增加 DeploymentStrategy 模型
  • helloworld 更新至 0.1.4
  • gateway 更新至 0.3.2
  • kubevirt 更新至 0.3.0
  • cert-manager 更新至 0.3.0
  • 新增 edp-keycloak-operator
  • 新增 sealed-secrets

☸️ 生态集成

  • crossplane function-kcl 支持通过环境变量 FUNCTION_KCL_DEFAULT_SOURCE 设置默认编译环境入口。

📖 文档更新

  • 修复 argocd kcl plugin 配置的示例代码中的错误
  • 新增了关于 plugin 相关的 FAQ 文档。
  • 新增了更多关于系统包相关的示例文档。
  • 新增了关于 json_merge_patch 相关的 FAQ 文档。
  • 新增了关于 isnullish 函数 相关的 FAQ 文档。
  • 新增了关于 oam app 继承相关的示例代码。
  • 修复了 Windows 安装脚本。
  • 修复了文档中部分 typo 和失效链接。
  • 更新了 KCL IntelliJ 插件的说明文档。

🌐 其他资源

🔥 查看 KCL 社区 加入我们 🔥

更多其他资源请参考:

· 阅读需要 1 分钟

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

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

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

特别鸣谢

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

  • 感谢 @slusy 对 KCL playground 的贡献 🙌

  • 感谢 @NishantBansal2003 对 KCL checksum 功能增强的贡献 🙌

  • 感谢 @cakemanny, @hanshardmeier, @haiwu, @dennybaa, @NishantBansal2003, @Stinjul, @slusy, @Christopher Haar, @Peter Boat, @Zack Zhang, @anshuman singh, @Carl-Fredrik, @Evgeny Shepelyuk, @kbristow 等在近两周使用 KCL 过程中提供的宝贵建议与反馈 🙌

内容概述

🏄 语言更新

  • 修复因为 Schema 继承定义关系导致的非预期运行结果
  • 重构 Parser 实现,在 400+ KCL 文件的条件下解析性能提升 40%

💻 IDE 更新

  • 新增对配置块中 key 的类型的提示
  • 优化解包表达式 **expr 的静态分析,提供更丰富的诊断信息
  • 优化 schema 类型的 {} 代码片段补全
  • 新增对 kcl.mod 文件变更的监控,优化外部包补全体验
  • 区分 any 类型和 any 关键字表达式的高亮颜色显示

📦️ 模型更新

  • edp-keycloak-operator 发布 v1.23 版本

📬️ 工具更新

  • kcl mod 命令支持 module spec 获得 OCI 和 Git 依赖中的子模块
  • kcl import 工具修复多行 YAML 字符串的导入
  • kcl import 工具修复当属性存在默认值的 Kubernetes CRD 导入
  • kcl run 修复 -o 参数会截断文件输出的问题
  • kcl mod 修复了 rename 依赖无法找到的问题。
  • kcl mod 修复了三方库 git 仓库根目录下缺少 kcl.mod 文件导致的重复下载。
  • kcl mod kcl.mod 文件中支持 k8s = {version="1.27"} 依赖风格。
  • kcl mod 修复了部分诊断信息丢失的问题。

🔥 社区集成更新

  • Crossplane KCL 函数更新至 v0.10.8 版本,支持对 external resources 的读取

📖 文档更新

  • 更新 FAQ 中的 KCL 插件使用文档
  • 更新 FAQ 中的配置合并文档,新增 json_merge_patch 库的使用文档
  • 为所有系统库函数添加使用样例
  • 新增更多 OAM 模型的使用案例

其他资源

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

更多其他资源请参考: