Skip to main content

1 post tagged with "Newsletter"

查看所有标签

· 阅读需要 1 分钟

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

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

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

内容概述

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

📦 模型更新

  • 新增 kubeadm 配置模型
  • 更新 Knative Operator 模型,对齐上游 Knative CRD 定义

🏄 语言更新

KCL 发布 0.8.1 和 0.8.2 版本,主要包含如下更新

  • 体验简化增强二元表达式类型不匹配时的错误信息提示
  • 修复高阶 lambda 函数对局部作用域闭包变量捕获不正常的错误
  • 去除不常用的列表数据类型的不等式比较操作

🔧 工具链更新

  • kcl import 工具修复当输入的 Kubernetes CRD 存在 regex 属性与 KCL regex 系统库冲突的错误
  • kcl import 工具修复当输入的 Kubernetes CRD 属性存在复杂的默认值时输出的 KCL 文件语法错误
  • kcl mod init 支持 --version 标签设置 KCL 新建模块的版本
  • kcl run, kcl mod addkcl mod pull 等命令支持对私有 Git 仓库的访问
  • 修复在 Windows 上执行对本地 OCI Registry 执行 kcl run 命令时遇到的路径错误

🔥 SDK 更新

  • KCL Rust, Go 和 Java SDK 发布 0.8 主要版本,同步 KCL 语法语义更新
  • KCL Python SDK 发布 0.8.0.2 和 0.7.6 版本,修复 protobuf, pyyaml 等依赖版本过于低的问题

💻 IDE 更新

  • 支持多个 Quick Fix 修复选项

multiple-quick-fix

🎁 API 更新

  • 新增 ListOptions API,可以读取 KCL 工程中所有 option 函数调用信息。

🚢 集成更新

  • Crossplane KCL Function 发布 v0.3.2 版本,支持非 https 协议 OCI Registry 访问和本地调试

🌐 网站更新

  • 启用 kcl-lang.dev 域名,现在可以同时通过 kcl-lang.iokcl-lang.dev 访问 KCL 网站
  • KCL 网站加载速度优化,提升文档体验

特别鸣谢

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

  • 感谢 @bozaro 对 KCL Go SDK 带 Go 语言插件的 API 的贡献 🙌
  • 感谢 @shashank-iitbhu 对 KCL IDE 快速修复功能的增强,支持多个修复选项 🙌
  • 感谢 @octonawish-akcodes 对 KCL IDE 自动监听 kcl.mod 依赖变更并自动更新依赖功能的持续贡献 🙌
  • 感谢 @liangyuanpeng 对 CLA Bot CI 自动锁定 PR 的修正,kubeadm 模型的贡献以及 kcl mod init 支持版本设置功能的支持 🙌
  • 感谢 @Stefano Borrelli, @sfshumaker, @eshepelyuk, @vtomilov, @ricochet1k, @yjsnly, @markphillips100, @userxiaosi, @wilsonwang371, @steeling, @bozaro, @nizq, @reckless-huang, @folliehiyuki, @samuel-deal-tisseo, @MrGuoRanDuo, 和 @MattHodge 等在近段时间使用 KCL 过程中提供的宝贵建议与反馈 🙌

其他资源

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

更多其他资源请参考:

· 阅读需要 1 分钟

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

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

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

内容概述

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

📦 模型更新

  • JSON Schema 库发布 0.0.4 版本,修复类型定义错误, 可以执行如下命令更新或添加依赖
kcl mod add jsonschema:0.0.4

🏄 语言更新

KCL 发布 0.8.0 预览版本,主要包含如下更新

  • 新增 file 系统库用于读取 KCL 模块信息和系统文件,包含 read, glob, workdirmodpath 函数,详见 Issue: https://github.com/kcl-lang/kcl/issues/1049
  • 优化非预期 token 的语法错误提示
  • 去除 Schema 对象内部非预期的内置类型属性通过 print 输出
  • 修复非预期的字典生成表达式中的 key 与循环变量相同时的变量计算
  • 修复 schema 内部诸如 "$if" 的字符串标识符定义找不到的错误

🔧 工具链更新

  • kcl run 支持使用 -H 参数输出以 _ 开头的隐藏字段
  • kcl run 支持直接运行远端 Git 仓库代码
  • kcl mod 新增 kcl mod graph 子命令输出模块依赖图
  • kcl fmt 修复 else 块中存在 if 语句时的格式化错误

💻 IDE 更新

  • 优化了内置函数和系统库的补全以及悬停文档提升
  • 修复了配置块内部 if 语句符号不能跳转和补全的问题
  • 增加变量引用错误时的快速修复功能

🎁 API 更新

  • OverrideFile API 新增诸如 a["b"].c 的 path 对配置进行查询和修改

🚀 插件系统更新

除了使用 Python 为 KCL 插件函数,现在支持使用 Go 为 KCL 编写插件函数,使用方式非常简单。

  • 定义插件 (以一个包含 add 函数的 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
},
},
},
})
}
  • 使用插件
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
`

🚢 集成更新

  • 发布 Ansible KCL 模块初始版本,支持基本的运行 KCL 代码功能,其他功能完善中
  • KCL FluxCD Controller 优化 Git Source 功能,OCI Source 功能支持中

特别鸣谢

以下排名不分先后

  • 感谢 @octonawish-akcodes 和 @d4v1d03 对 KCL FAQ 文档和 KCL IDE 功能的持续贡献 🙌
  • 感谢 @octonawish-akcodes 对 Ansible KCL Module 的贡献
  • 感谢 @AkashKumar7902 和 @Vanshikav123 对 KCL 包管理工具功能的贡献 🙌
  • 感谢 @StevenLeiZhang 对 KCL 文档和 KCL 插件的贡献
  • 感谢 @TheChinBot, @Evgeny Shepelyuk, @yonas, @steeling, @vtomilov, @Fdall, @CloudZero357, @bozaro, @starkers, @MrGuoRanDuo 和 @FLAGLORD 等在近段时间使用 KCL 过程中提供的宝贵建议与反馈 🙌

其他资源

预计 2024 年 2 月底会发布 0.8 正式版本,感谢所有 KCL 用户和社区小伙伴在社区中提出的宝贵反馈与建议。后续我们会发布更多 KCL 技术和案例文章,敬请期待! 查看 KCL 社区 加入我们。

更多其他资源请参考: