Skip to main content

· 阅读需要 1 分钟

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

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

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

内容概述

感谢所有贡献者过去两周 (2023 10.26 - 11.08) 的杰出工作,以下是重点合并内容概述

🔧 语言及工具链更新

  • KCL IDE 更新 - 更智能的配置值补全、属性列表补全、函数参数补全、内置包引用补全和 docstring 补全等
  • KCL 包管理工具 KPM 更新 - 更流畅的创建、发布 KCL 包的工作流:支持基于版本系统的包更新和发布的自动化流程;此外,现已允许对KCL包的元信息自定义配置
  • KCL 模型更新 - 开箱即用的 KCL 模型新增至 120+
  • KCL 语言更新 - 优化了 schema 字段类型不匹配的报错信息,支持 lambda 类型注解,以及个别编译问题修复;系统库支持对 JSON/YAML 字符串的验证、序列化和反序列化
  • KCL 导入工具发布:支持从 YAML/JSON/CRD/Terraform Schema 一键生成 KCL 配置/模型,实现自动化迁移

特别鸣谢

以下排名不分先后

精选更新

KCL IDE 插件更新

KCL IDE 插件基于新增了大量补全提示,重点针对配置定义这一核心环节,简化用户基于模型编写配置的心智、提升配置编辑的效率。此外,增强了调用内置函数时参数补全。talk is cheap,我们直接来看效果:

而对于模型设计环节,也新增了对 docstring 的快速生成,减少手敲 boilerplate:

KCL 包管理工具

包管理工具现已串联起 KCL 包创建-更新-代码审查-发布的核心工作流,并基于此新增开箱即用的 KCL 模型包至 120+。

KCL 语言更新

KCL 的编译命令对错误信息的输出优化继续推进,致力于提供清晰易懂的指引,帮助开发者快速定位和修复问题,编写出正确的代码。近期,KCL 优化了 schema 字段类型不匹配的报错信息:

  • before:

  • after:

此外,还支持了 -—recursive 选项允许 kcl 递归编译子目录,支持在 lambda 表达式中添加类型注解,系统库支持了对 JSON/YAML 字符串的验证、序列化和反序列化;修复了带有三方库的 KCL 程序缓存失效的问题;修复了编译入库文件跨 kcl.mod 情况下的路径冲突错误;修复 KCL 函数默认值语义检查错误等。

KCL 导入工具

支持从 YAML/JSON/CRD/Terraform Schema 一键生成 KCL 配置/模型,实现自动化迁移,相关指南请参照一键从 Kubernetes 生态迁移到 KCL

其他资源

❤️ 感谢所有 KCL 用户和社区小伙伴在社区中提出的宝贵反馈与建议。预计 11 月底我们会正式发布 KCL v0.7 新版本,敬请期待!

更多其他资源请参考:

· 阅读需要 1 分钟

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

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

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

内容概述

感谢所有贡献者过去两周 (2023 10.12 - 10.25) 的杰出工作,以下是重点合并内容概述

🔧 语言及工具链更新

  • KCL IDE 更新 - 支持对符号的引用跳转和重命名;优化了引用语句和 union 类型的格式化输出;修复了文件变更引发语言服务崩溃的问题
  • KCL 包管理工具 KPM 更新 - kpm 正在集成 AritifactHub,支持将 KCL 包发布到 ArtifactHub
  • KCL 语言更新 - 优化了方法的参数类型不匹配等报错信息,明确指出了不匹配的类型
  • KCL 命令行统一界面 - 重新设计了 KCL 相关工具的命令行统一界面和工作流,进入实现阶段

特别鸣谢

以下排名不分先后

精选更新

KCL IDE 插件更新

在待发布的版本中,KCL IDE 插件支持了对符号的引用跳转及重命名功能;优化了对引用语句和union类型的格式化输出。同时修复了语言服务虚拟文件系统相关的bug:文件维度的变更引发会语言服务崩溃,必须重启 IDE 恢复,现已修复。

使用转到引用查找所有引用

对符号进行重命名

对引用语句和 union 类型的格式化:优化了引用语句与其他代码块之间的空行行为(格式化为一个空行)、union 类型的空格行为(多个类型之间格式化为以 | 间隔):

KCL 包管理工具

在待发布的版本中,kpm 支持与 ArtifactHub 的集成,您可以通过向kcl-lang Registry 仓库 提交 PR 的方式将您的 KCL 包发布到 ArtifactHub. 目前我们可以在 ArtifactHub staging 页面看到预上传的 KCL k8s 包的效果,该功能将在 v0.6.1 版本发布:

KCL 语言更新

KCL 的编译命令正在持续地优化错误信息的输出,致力于提供清晰易懂的指引,帮助开发者快速定位和修复问题,编写出正确的代码。近期,KCL 对方法类型和参数方面的错误信息进行了优化,例如:明确指出了方法的参数类型不匹配的报错:

此外,还修复了属性赋值的惰性求值问题,将属性赋值的计算和约束校验延迟到配置合并完成后,避免不必要的编译报错。

KCL 命令行统一界面

为向 KCL 用户提供一致和标准化的体验,我们正在对 KCL 的命令行界面进行设计改进,以达到统一的用户工作流、相关工具和多语言 API 的无缝集成、命令行工具的可扩展性。目前完成了初步设计进入实现阶段,欢迎感兴趣的小伙伴一起讨论:https://github.com/kcl-lang/kcl/issues/756

社区动态

随着加入 CNCF sandbox,CNCF KCL Slack 频道已经开通,与 KCL 语言相关的交流将逐步迁移到新的频道,欢迎大家加入交流:

  1. 加入 CNCF 工作空间,填写个人邮箱即可: https://communityinviter.com/apps/cloud-native/cncf
  2. 加入 CNCF KCL 频道: https://cloud-native.slack.com/archives/C05TC96NWN8

其他资源

❤️ 感谢所有 KCL 用户和社区小伙伴在社区中提出的宝贵反馈与建议。预计 11 月底我们会正式发布 KCL v0.7 新版本,敬请期待!

更多其他资源请参考: