KCL基于约束的记录及函数语言

联合创作 · 2023-09-27 12:12

Kusion 配置语言 (KCL, Kusion Configuration Language) 是一种开源配置语言,主要用于 Kusion Stack 开放协同技术栈。并且 KCL 是一种基于声明性和面向对象编程 (OOP) 范式等概念,用于配置和策略场景的静态类型语言。


核心特性



  • 简单

    • 源于 Python、Golang,融入函数语言特性

    • 吸收语句、表达式、条件、循环等语言元素

    • 类型和数据分离,Schema 声明配置定义


  • 稳定

    • 强不可变约束

    • 编译时类型推导、类型检查

    • Rule 策略定义:以属性为中心的约束表达式、根据约束查询结果

    • 可测试:语言内置 assert 断言、print 打印和测试工具


  • 可扩展

    • 配置合并:编译时配置依赖图代换

    • 配置属性运算符:满足配置覆盖、合并、添加和删除等需求

    • 配置复用:丰富的内置数据结构和语法语义,轻松扩展同一份配置到不同场景


  • 工程化

    • Schema 单一继承和声明性模型复用和组装

    • 工具和API 粒度的配置自动化“增删改查”

    • 丰富的内置函数和系统库

    • 顶层数据动态导入

    • 代码组织:模块和包

    • 插件系统:复用通用编程语言生态。

    • OpenAPI 模型支持:Swagger 与 Schema 双向转换,Kubernetes CRD 转换为 Schema


  • 高性能

    • 配合 LLVM 优化器、支持编译到本地代码和 WASM 等格式并高效执行



安装 & 文档


如何安装


从 Github releases 页面下载,并且将 {install-location}/kclvm/bin 添加到您的环境变量中


快速开始


./samples/fib.k 是一个计算斐波那契数列的例子



schema Fib:
n1: int = n - 1
n2: int = n1 - 1
n: int
value: int

if n <= 1:
value = 1
elif n == 2:
value = 1
else:
value = Fib {n: n1}.value + Fib {n: n2}.value

fib8 = Fib {n: 8}.value


我们可以通过执行如下命令得到 YAML 输出



kcl ./samples/fib.k


YAML 输出



fib8: 21


文档


更多文档请访问 https://kusionstack.io

浏览 50
点赞
评论
收藏
分享

手机扫一扫分享

编辑 分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

编辑 分享
举报