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

浏览 45
点赞
评论
收藏
分享

手机扫一扫分享

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

手机扫一扫分享

编辑 分享
举报