Skip to main content

1 post tagged with "Release Blog"

查看所有标签

· 阅读需要 1 分钟

简介

KCL 团队很高兴地宣布 KCL v0.8.0 新版本现在已经可用!本次发布为大家带来了三方面的重点更新:语言工具链社区集成 & 扩展支持

  • 使用功能更完善错误更少的 KCL 语言、工具链和 IDE 提升代码编写体验和效率
  • 更加全面丰富的社区生态集成,改善运维体验
  • 更加丰富的 KCL 三方库模型,更加轻松的与云原生生态集成

进一步您可以在 KCL v0.8.0 发布页面 或者 KCL 官方网站 获得下载安装指南和详细发布信息。

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

语言更新

🚗 语法语义更新

支持 show-hidden

通过 --show-hidden 参数显示私有变量。

KCL 程序如下

a = {_b = 1}

通过命令 kcl run main.k --show-hidden 编译结果如下

a:
_b: 1

支持参数和关键字参数的合并

KCL v0.8.0 版本中新增了参数和关键字参数的合并功能。带参数的 schema 实例在合并操作时参数也会合并。

schema Person[separator]:
firstName: str = "John"
lastName: str
fullName: str = firstName + separator + lastName

x = Person(" ") {lastName = "Doe"}

y = Person("-") {lastName = "Doe1"}

z = x | y

对应编译结果

x:
firstName: John
lastName: Doe
fullName: John Doe
y:
firstName: John
lastName: Doe1
fullName: John-Doe1
z:
firstName: John
lastName: Doe1
fullName: John-Doe1

支持字面值的 yaml stream 格式输出.

通过 yaml_stream 方法,可以支持输出 yaml 字面值的结果。

import manifests

x0 = 1
x1 = 2
manifests.yaml_stream([x0, x1])

对应编译结果

1
---
2

修复了在循环表达式中的类型检查错误

name = "volume"
configMapVolumes1: {str:{str:}} = {
name = {
name = name
} for _ in range(1)
}

configMapVolumes2: [{str:}] = [
{
name = name
} for _ in range(1)
]

在 v0.8.0 之前,上述程序编译会出现类型错误。

error[E2G22]: TypeError
--> main.k:4:9
|
4 | name = name
| ^ expected {str:any}, got str
|

--> main.k:2:1
|
2 | configMapVolumes1: {str:{str:}} = {
| ^ variable is defined here, its type is {str:any}, but got str
|

在 v0.8.0 版本中, 将会成功编译出如下结果:

name: volume
configMapVolumes1:
volume:
name: volume

修复了 Schema 对象必选属性递归检查错误

在 Schema 内部定义了一个对象,对象内部的属性是必选的,但是在实例化时使用不存在的属性。

schema Name:
name: str

schema Config:
n: {str:Name}

Config {
n = {
n.n = "n"
}
}

在 v0.8.0 之后,上述程序编译会出现类型错误。

error[E2L23]: CompileError
--> main.k:9:11
|
9 | n.n = "n"
| ^ Cannot add member 'n' to schema 'Name'
|

在编译输出结果中去掉 __settings__ 属性

在 v0.8.0 版本中,编译输出结果中去掉了 __settings__ 属性。

schema Person:
__settings__: {str:str} = {"output_type": "STANDALONE"}
name?: str
age?: int
school?: str

a = Person{
name: "a",
}

在编译结果中去掉了 __settings__ 属性。

a:
name: a

支持在 config 表达式中计算 key 和 value 的值

在 v0.8.0 版本中,支持在 config 表达式中计算 key 和 value 的值。

_data = {
"a": 'foo'
"b": 'bar'
}

r0 = [{v = k} for k, v in _data]
r1 = [{k = v} for k, v in _data]
r2 = [{k.foo = v} for k, v in _data]
r3 = [[k] for k, v in _data]
r4 = [[k, v] for k, v in _data]

编译结果如下:

r0:
- foo: a
- bar: b
r1:
- a: foo
- b: bar
r2:
- a:
foo: foo
- b:
foo: bar
r3:
- - a
- - b
r4:
- - a
- foo
- - b
- bar

🔧 诊断信息的优化

KCL 语法在 if 块中使用的是 elif 关键字,而不是 else if

编译以下 KCL 程序:

if True: a = 1
else if False: b = 1

KCL 在诊断信息中增加了错误修正的建议:

error[E1001]: InvalidSyntax
--> main.k:2:6
|
2 | else if False: b = 1
| ^ 'else if' here is invalid in KCL, consider using the 'elif' keyword
|

🚀 语言编写体验优化

KCL 标准库新增文件系统访问方法

KCL 增加了访问文件系统的方法。在 v0.8.0 版本中支持了包括 read, glob 等访问文件系统的方法。

通过 read 方法,可以读取一个文件内容为字符串。

import file

a = file.read("hello.txt")

在文件 hello.txt 中添加如下内容:

Hello World !

编译结果

a: Hello World !

通过结合 json.decode 方法,可以轻松的实现将 json 文件反序列化。

hello.json 文件中增加如下内容

{
"name": "John",
"age": 10
}

KCL 程序如下所示:

import file
import json

_a = json.decode(file.read("hello.json"))

name = _a.name
age = _a.age

编译结果如下所示:

name: John
age: 10

更多内容 - https://kcl-lang.io/zh-CN/docs/reference/model/file/

KCL 编译缓存路径支持使用环境变量 KCL_CACHE_PATH 指定

KCL 编译器会将缓存生成到环境变量KCL_CACHE_PATH指定的目录当中,如果没指定,将会生成到项目根目录中。

插件系统支持使用 golang 编写 KCL 插件

使用 golang 定义 hello 插件。

package hello_plugin

import (
"kcl-lang.io/kcl-go/pkg/plugin"
)

func init() {
plugin.RegisterPlugin(plugin.Plugin{
Name: "hello",
MethodMap: map[string]plugin.MethodSpec{
"add": {
Body: func(args *plugin.MethodArgs) (*plugin.MethodResult, error) {
v := args.IntArg(0) + args.IntArg(1)
return &plugin.MethodResult{V: v}, nil
},
},
},
})
}

借助 kcl-go 开发,扩展 KCL 编译器使用插件。

package main

import (
"fmt"

"kcl-lang.io/kcl-go/pkg/kcl"
"kcl-lang.io/kcl-go/pkg/native" // Import the native API
_ "kcl-lang.io/kcl-go/pkg/plugin/hello_plugin" // Import the hello plugin
)

func main() {
// Note we use `native.MustRun` here instead of `kcl.MustRun`, because it needs the cgo feature.
yaml := native.MustRun("main.k", kcl.WithCode(code)).GetRawYamlResult()
fmt.Println(yaml)
}

const code = `
import kcl_plugin.hello

name = "kcl"
three = hello.add(1,2) # 3

😸 新增 Linux arm64 版本

KCL 的 Release 产物中新增了对 Linux arm64 平台的支持。

可以在 KCL Release Page 中找到后缀为 linux-arm64 的压缩包。

🏄 SDK & API 更新

Rust SDK

KCL Rust SDK 提供了一系列的 API,可以用于 KCL 文件的编译、校验、测试和格式化代码等操作。

KCL Rust SDK: https://github.com/kcl-lang/lib

Java SDK

KCL Java SDK 新增语法树、作用域、符号等语法语义结构定义及相关查询 API。

Go SDK 更新

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

API 更新

  • 新增 json/yaml 验证 API 用来验证 json 和 yaml 文件。
  • 新增语法和语义分析 API 用于对 KCL 代码进行分析。
  • 新增构建二进制产物 API 用于缓存编译结果。
  • 新增运行二进制产物 API 用于直接运行编译结果,避免重复编译并提升性能。
  • 新增代码生成 API 以编程方式实现 KCL 代码生成而不是编写复杂的模版。

更多的更新可以查看 KCL v0.8 API 文档

🐞 其他更新及错误修复

  • 修复了 KCL CLI 使用编译参数 -S 可能会导致的编译错误
  • 修复了 kcl fmt 工具对 lambda 表达式进行格式化时,结尾增加一个空行的错误。
  • 修复 Schema Doc 补全代码片段错误
  • 修复 Schema 对象必选属性递归检查错误
  • 提升 Schema 索引签名类型检查健壮性
  • 修复 Schema 内部诸如 "$if" 的字符串标识符定义找不到的错误
  • 优化非预期 token 的语法错误提示
  • 修复非预期的字典生成表达式中的 key 与循环变量相同时的变量计算

IDE & 工具链更新

IDE 更新

IDE 语义级别的高亮增强

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

old-ide

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

new-ide

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

新增 builtin 方法的补全

KCL IDE 支持 builtin 方法的补全,如下图所示:

builtin-completion

增加变量引用错误时的快速修复功能

KCL IDE 支持变量引用错误时的快速修复功能,如下图所示:

quick-fix

IDE 支持增量解析和异步编译功能

IDE 通过 KCL 新语义模型支持增量解析和异步编译功能,提升了编译速度和编写体验。

更多内容详见 https://kcl-lang.io/zh-CN/blog/2023-12-09-kcl-new-semantic-model

IDE LSP 问题修复

  • 修复 assert 语句中字符串插值变量不能跳转的异常
  • 修复了字符串中异常触发函数补全的异常
  • 修复了字符串后跟注释中补全错误的问题
  • 修复了 schema 内部属性符号不能跳转的问题
  • 修复 import 语句别名语义检查和补全的异常
  • 修复了 schema 中 check 表达式补全的异常
  • 修复了嵌套 schema 定义中补全错误的问题
  • 修复了部分悬停信息缺失的问题
  • 修复不同语法补全符号类型不统一的问题
  • 区分 Schema 类型和实例补全符号
  • 统一 Schema 注释文档补全的格式
  • 修复了配置块内部 if 语句符号不能跳转和补全的问题

验证工具更新

本次更新中,我们对 KCL 验证工具的报错信息进行了优化,在使用 KCL 验证工具对 json/yaml 文件进行验证的工作中,将会准确定位到 json 文件的异常位置。

以 json 文件为例,我们将要对以下 hello.json 文件进行验证

{
"name": 10,
"age": 18,
"message": "This is Alice"
}

定义如下 main.k 文件来对 json 文件中的内容进行验证

schema User:
name: str
age: int
message?: str

通过以下命令对 json 文件内容进行验证

kcl vet hello.json main.k

可以看到在 json 文件中的错误位置:

error[E2G22]: TypeError
--> test.json:2:5
|
2 | "name": 10,
| ^ expected str, got int(10)
|

--> main.k:2:5
|
2 | name: str
| ^ variable is defined here, its type is str, but got int(10)
|

KCL cli 新增 git 仓库作为编译入口

通过以下命令,可以将 KCL 的 git 仓库作为编译入口

kcl run <git url>

kcl mod graph 支持输出 KCL 包依赖图

通过命令 kcl mod graph 输出 KCL 包的依赖图。

KCL 包管理工具

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 包管理工具支持三方库名称带有“-”

KCL 包管理工具支持三方库名称中带有“-”,KCL 包管理工具会自动将 “-” 替换为 “_”。

以三方库 set-annotation 为例,通过以下命令添加 set-annotation 为依赖:

kcl mod add set-annotation

在 KCL 程序中,通过 set_annotation 引用:

import set_annotation

KCL 导入工具更新,支持更多特性

  • 支持 OpenAPI multiplyOf 规范映射到 KCL multiplyof 函数进行校验
  • 支持 YAML Stream 格式的 Kubernetes CRD 文件输出为多个 KCL 文件
  • 支持 OpenAPI allOf 关键字校验表达式生成
  • 支持 KCL 数组和字典类型的 all/any 校验表达式生成

社区集成 & 扩展更新

Flux KCL Controller 发布

我们开发了 Flux KCL Controller 支持 KCL 与 Flux 集成。在集群中安装 Flux KCL Controller 后,通过以下资源就可以实现 KCL git 仓库通过 FluxCD 进行持续集成。

apiVersion: source.toolkit.fluxcd.io/v1
kind: GitRepository
metadata:
name: kcl-deployment
namespace: source-system
spec:
interval: 30s
# 需要持续集成的 github 仓库
url: https://github.com/awesome-kusion/kcl-deployment.git
ref:
branch: main
---
apiVersion: krm.kcl.dev.fluxcd/v1alpha1
kind: KCLRun
metadata:
name: kcl-deployment
namespace: source-system
spec:
sourceRef:
kind: GitRepository
name: kcl-deployment

更多内容详见: https://kcl-lang.io/zh-CN/blog/2024-02-01-biweekly-newsletter/

CodeQL KCL 工具

初步支持 CodeQL KCL dbschema 定义以及对 KCL 语法语义进行数据提取,并可通过 CodeQL 进行数据查询对 KCL 代码进行静态分析和扫描,提升代码安全。

更多内容详见: https://github.com/kcl-lang/codeql-kcl

模型更新

KCL 模型数量新增至 303 个,主要新增与 Crossplane Provider 相关的模型和与 JSON 合并操作相关的库

kcl run oci://ghcr.io/kcl-lang/podinfo -D replicas=2
  • JSON Schema 库发布 0.0.4 版本,修复类型定义错误, 可以执行如下命令更新或添加依赖
kcl mod add jsonschema:0.0.4

其他更新

完整更新和错误修复列表详见: https://github.com/kcl-lang/kcl/compare/v0.7.0...v0.8.0

文档更新

KCL 网站新增 KCL v0.7.0 文档内容并支持版本化语义选项,目前支持 v0.4.x, v0.5.x, v0.6.x, v0.7.0 和 v0.8.0 版本选择,同时欢迎社区同学进行文档共建。

社区动态

KCL LFX 项目启动

恭喜 @AkashKumar7902, @octonawish-akcodes, @shashank-iitbhu 入选 CNCF KCL LFX 项目,同时感谢 @Vanshikav123, @Amit Pandey 的积极参与。

KCL 登陆 Crossplane 官方函数市场

自 Crossplane v1.14 中的组合函数 Beta 版发布以来,使用 Crossplane 构建云原生平台的可能体验范围一直在迅速扩大。KCL 团队在第一时间进行跟进并主动构建了一个可重用的函数,整个 Crossplane 生态系统现在可以利用 KCL 提供的高水平经验和能力来构建自己的云原生平台。

更多内容详见: https://blog.crossplane.io/function-kcl/

特别鸣谢

感谢社区的小伙伴在 KCL v0.8.0 版本中的贡献,以下排名不分先后

  • 感谢 @jakezhu9 同学对 kcl import 工具的持续贡献 🤝
  • 感谢 @octonawish-akcodes 对 KCL 代码清理和 FAQ 文档的持续贡献 🙌
  • 感谢 @satyazzz123 对 KRM KCL 支持读取环境变量功能的贡献 🙌
  • 感谢 @AkashKumar7902 对 KCL 包管理工具功能的贡献 🙌
  • 感谢 @UtkarshUmre 对 KCL linux-arm64 构建 CI 的贡献 🙌
  • 感谢 @octonawish-akcodes 和 @d4v1d03 对 KCL FAQ 文档和 KCL IDE 功能的持续贡献 🙌
  • 感谢 @octonawish-akcodes 对 Ansible KCL Module 的贡献
  • 感谢 @AkashKumar7902 和 @Vanshikav123 对 KCL 包管理工具功能的贡献 🙌
  • 感谢 @StevenLeiZhang 对 KCL 文档和 KCL 插件的贡献 🙌
  • 感谢 @patrycju, @Callum Lyall, @Matt Gowie, @ShiroDN, @FLAGLORD, @YiuTerran, @flyinox, @steeling, @Anoop, @Even Solberg,@Phillip Neumann,@Naxe, @rozaliev, @CloudZero357, @martingreber, @az, @Art3mK, @Erick, @TheChinBot, @Evgeny Shepelyuk, @yonas, @vtomilov, @Fdall, @bozaro, @starkers, 和 @MrGuoRanDuo 等在 KCL v0.8 版本迭代过程中使用 KCL 提供的宝贵建议与反馈 🙌

下一步计划

感谢所有 KCL 用户和社区小伙伴在此次版本更新过程中提出的宝贵反馈与建议。预计 2024 年 5 月,我们将发布 KCL v0.9.0 版本,更多详情请参考 KCL 2024 路线规划 和 KCL v0.9.0 Milestone,如果您有更多的想法和需求,欢迎在 KCL Github 仓库发起 Issues 或讨论,也欢迎加入我们的社区进行交流 🙌 🙌 🙌

更多其他资源请参考:

· 阅读需要 1 分钟

简介

KCL 团队很高兴地宣布 KCL v0.7.0 新版本现在已经可用!本次发布为大家带来了三方面的重点更新:语言工具链社区集成 & 扩展支持

  • 使用功能更完善错误更少的 KCL 语言、工具链和 IDE 提升代码编写体验和效率
  • 全新的 KCL 命令行工具,集成 KCL 包管理,doc, test 周边工具链生态,包罗万象,一键直达
  • 丰富的 KCL 三方库市场 artifacthub.io, 提供了超过 200 种 KCL 三方库,尽情挑选,无限可能

进一步您可以在 KCL v0.7.0 发布页面 或者 KCL 官方网站 获得下载安装指南和详细发布信息。

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

本文重点介绍 KCL v0.7.0 版本的更新内容以及 KCL 社区的近期动态。

语言更新

⭐️ 全新的 KCL 命令行工具

在新版本中提供了全新的 KCL 命令行工具, 目标是将 KCL 周边生态囊括在一起,为您提供统一简明的操作页面,包罗万象,一键直达。

新的 KCL 命令行工具将会以继续 kcl 作为命令前缀,目前提供包含编译,包管理,格式化工具等多个子命令。

cli-help

🔧 诊断信息的优化

在 KCL 新版本中,在部分代码错误信息中增加了修复建议,比如变量名称写错或者查找不到 import 的代码包

import sub as s1

The_first_kcl_program = s.The_first_kcl_program

did you mean

try-kcl-mod-add

🚀 语言编写体验优化

去掉了部分代码块中的缩进检查

在 KCL 新版本中,我们取消了配置代码块的严格缩进检查,如果 KCL 代码写成这样

schema TestIndent:
name: str
msg: str
id: int

test_indent = TestIndent {
name = "test"
msg = "test"
id = 1
}

使用 kcl fmt 命令会可以一键格式化

kcl-fmt

函数类型注解

在 KCL 新版本中,新增了函数类型注解,您可以在新版本的 KCL 中编写如下带有类型注解的 lambda。

schema Test:
name: str

identity: (Test) -> bool = lambda res: Test -> bool {
res.name == "hello"
}

c = identity(Test { name = "hello" })

🏄 API 更新

🐞 其他更新及错误修复

IDE & 工具链更新

IDE 更新

KCL IDE 插件支持了对符号的引用跳转及重命名功能

IDE 增加了对符号的引用跳转支持,使用转到引用查找所有引用

find-ref

对符号进行重命名

rename

IDE 支持对引用语句和联合类型的格式化

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

fmt

KCL IDE 插件基于新增了大量补全提示

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

func-completion

conf-completion

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

gen-docstring

性能提升

  • KCL 设计并重构了新的语义模型以及支持最近符号查找和符号语义信息查询 API
  • IDE 补全,跳转和悬停等功能实现迁移至新语义模型,显著降低 IDE 功能开发难度和代码量
  • KCL 编译器支持语法增量解析以及语义增量检查,大部分场景提升 KCL 编译构建和 IDE 插件使用性能 5-10 倍

其他更新和错误修复

  • KCL IntelliJ 插件适配 2023.2+ 版本
  • 支持对标准库和内置函数的悬停提示,支持对 KCL 代码错误的快速修复
  • 优化了对引用语句和 union 类型的格式化输出。
  • 修复了语言服务虚拟文件系统相关的bug:文件维度的变更引发会语言服务崩溃,必须重启 IDE 恢复,现已修复。
  • 支持包管理工具引入的外部包依赖 import 语句补全
  • 修复函数参数未定义类型错误显示位置

测试工具更新

担心您的 KCL 程序写错了,要不来测测 ?本次更新提供了全新的 KCL 测试工具,代码好坏,一测便知 !新的 KCL 测试工具支持使用 KCL 函数编写单元测试并使用工具执行测试。

您可以在后缀名为 “_test.k” 文件中通过 lambda 表达式来编写您的测试用例。

import .app

# Convert the `App` model into Kubernetes Deployment and Service Manifests
test_kubernetesRender = lambda {
a = app.App {
name = "app"
containers.ngnix = {
image = "ngnix"
ports = [{containerPort = 80}]
}
service.ports = [{ port = 80 }]
}
deployment_got = kubernetesRender(a)
assert deployment_got[0].kind == "Deployment"
assert deployment_got[1].kind == "Service"
}

通过 kcl test 命令可以运行这个测试用例并查看测试结果。

测试通过会将得到如下结果:

test-pass

如果测试失败了,kcl test 会将输出错误信息进行输出。

test-failed

KCL 包管理工具

新增 update 命令用于自动更新本地依赖,使用 kcl mod update 将会自动下载本地缺失的三方库。具体参考: https://github.com/kcl-lang/kpm/pull/212

KCL 导入工具发布

支持从 YAML/JSON/CRD/Terraform Schema 一键生成 KCL 配置/模型,实现自动化迁移。

如果您有如下 yaml 文件:

apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
labels:
app: nginx
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.14.2
ports:
- containerPort: 80

通过命令 kcl import test.yaml 您可以将其转换为 KCL 程序。

"""
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.
"""

apiVersion = "apps/v1"
kind = "Deployment"
metadata = {
name = "nginx-deployment"
labels = {
app = "nginx"
}
}
spec = {
replicas = 3
selector = {
matchLabels = {
app = "nginx"
}
}
template = {
metadata = {
labels = {
app = "nginx"
}
}
spec = {
containers = [
{
name = "nginx"
image = "nginx:1.14.2"
ports = [
{
containerPort = 80
}
]
}
]
}
}
}

更多详细内容请参考一键从 Kubernetes 生态迁移到 KCL

社区集成 & 扩展更新

KCL 三方库市场 ArtifactHub

通过集成 artifacthub.io 我们构建了一个 KCL 三方库市场,在这里您尽可以大展您的才华,与我们一同分享您对 KCL 程序的独特理解,您也可以尽情挑选,找到适合您自己的 KCL 三方库 !

打开首页,直接搜索您需要的关键字,就能看到关于 KCL 三方库的相关内容 !

artifachub-index

在三方库首页,可以查看关于三方库的详细内容和相关文档。

pkg-page

如果您不知道该如何使用这些三方库,右侧的按钮可以为您唤起安装页面。

install-pkg

欢迎大家来 artifacthub.io 为 KCL 社区贡献您的三方库,让 KCL 社区变得更加丰富多彩!

贡献指南:https://kcl-lang.io/docs/user_docs/guides/package-management/how-to/publish_pkg_to_ah

其他更新

完整更新和错误修复列表详见: https://github.com/kcl-lang/kcl/compare/v0.6.0...v0.7.0

文档更新

KCL 网站新增 KCL v0.7.0 文档内容并支持版本化语义选项,目前支持 v0.4.x, v0.5.x, v0.6.x 和 v0.7.0 版本选择,同时欢迎社区同学进行文档共建。

社区动态

KCL 正式成为 CNCF 沙箱项目

🎉 🎉 🎉 2023 年 9 月 20 日,KCL 项目通过了全球顶级开源基金会云原生计算基金会(CNCF)技术监督委员会评定,正式成为 CNCF 沙箱项目。

更多详情详见: https://kcl-lang.io/blog/2023-09-19-kcl-joining-cncf-sandbox/

特别鸣谢

感谢社区的小伙伴在 KCL v0.7.0 版本中的贡献,以下排名不分先后

下一步计划

感谢所有 KCL 用户和社区小伙伴在此次版本更新过程中提出的宝贵反馈与建议。预计 2024 年 2 月,我们将发布 KCL v0.8.0 版本,更多详情请参考 KCL 2024 路线规划 和 KCL v0.8.0 Milestone,如果您有更多的想法和需求,欢迎在 KCL Github 仓库发起 Issues 或讨论,也欢迎加入我们的社区进行交流 🙌 🙌 🙌

更多其他资源请参考: