Skip to main content

KCL 社区开源双周报 (2024.01.04 - 2024.01.18) | KCL v0.7.4 版本发布!

· 阅读需要 1 分钟

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

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

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

内容概述

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

🌞 KCL 更新

  • v0.7.4 发布,新增 Linux arm64 平台支持。

🎁 API 更新

  • KCL 新增语法和语义分析 API。

🔧 工具链更新

  • kcl-go sdk 更新

    • KCL Doc 工具支持输出为 OpenAPI 格式。
    • 增加 Parse 过程相关 API。
  • Import 工具更新

    • 优化了 import 工具生成 KCL 配置用户体验,增加了对关键字 oneOf, allOf 的支持。
  • KCL 包管理工具

    • 发布了 v0.6.0 版本,支持通过 git commit 添加三方库依赖。

💻 IDE 更新

  • 语义高亮
    • KCL IDE 优化了语义高亮。
  • 补全功能增强
    • 修复了嵌套 schema 定义中补全错误的问题
    • 修复了部分悬停信息缺失的问题

特别鸣谢

以下排名不分先后

  • 感谢 @jakezhu9 同学对 kcl import 工具的持续贡献 🤝
  • 感谢 @AdmiralNemo,@Phillip Neumann,@Naxe,@steeling 等在使用 KCL 过程中提供的宝贵建议与反馈 🙌

精选更新

KCL IDE 语义级别的高亮增强

KCL IDE 高亮之前仅支持 KCL 语法高亮,如下图所示:

我们今年逐步启用了新的 KCL 语义架构模型,在新语义架构的支撑下,KCL IDE 支持语义级别的高亮,在语义上有关联的代码会显示相同的高亮。

更多关于 KCL 语义架构模型的内容,参考: KCL 高效语义模型技术揭秘:实现快速编译与增强 IDE 支持

KCL 包管理支持通过 commit 添加 git 依赖

KCL 包管理工具增加了通过 commit 来添加 git 三方库依赖的功能。以 https://github.com/KusionStack/catalog 为例,添加 commit 为 a29e3db 的版本作为依赖。可以通过编辑 kcl.mod 文件中的依赖或者命令行直接添加。

编辑 kcl.mod 文件内容如下:

[dependencies]
catalog = { git = "https://github.com/KusionStack/catalog.git", commit = "a29e3db" }

或者通过命令行添加:

kcl mod add --git https://github.com/KusionStack/catalog.git --commit a29e3db

KCL Import 工具增强

支持 oneOf 关键字的生成,以 oneOf 关键字为例,将以下内容保存在文件 oneof.json 中。

{
"$schema": "http://json-schema.org/draft-07/schema#",
"$id": "https://example.com/schemas/book.json",
"type": "object",
"properties": {
"title": {
"type": "string"
},
"author": {
"$comment": "oneOf for types",
"oneOf": [
{
"type": "string"
},
{
"type": "array",
"items": {
"type": "string"
}
},
{
"type": "integer"
}
]
},
"category": {
"$comment": "oneOf for objects",
"oneOf": [
{
"type": "object",
"properties": {
"name": {
"type": "string"
}
}
},
{
"type": "object",
"properties": {
"title": {
"type": "string"
}
}
}
]
}
}
}

通过 import 命令生成对应的 KCL 文件。

kcl import oneof.json

可以看到生成的 oneof.k 文件内容如下。

"""
This file was generated by the KCL auto-gen tool. DO NOT EDIT.
Editing this file might prove futile when you re-run the KCL auto-gen generate command.
"""

schema Book:
r"""
Book

Attributes
----------
title : str, optional
author : str | [str] | int, optional
category : BookCategoryOneOf0 | BookCategoryOneOf1, optional
"""

title?: str
author?: str | [str] | int
category?: BookCategoryOneOf0 | BookCategoryOneOf1

schema BookCategoryOneOf0:
r"""
BookCategoryOneOf0

Attributes
----------
name : str, optional
"""

name?: str

schema BookCategoryOneOf1:
r"""
BookCategoryOneOf1

Attributes
----------
title : str, optional
"""

title?: str

其他资源

❤️ 感谢所有 KCL 用户和社区小伙伴在社区中提出的宝贵反馈与建议。后续我们会发布更多 KCL 云原生模型和工具集成文章,敬请期待! 查看 KCL 社区 加入我们。

更多其他资源请参考: