Skip to main content

· 4 min read

KCL is an open-source configuration and policy language hosted by the Cloud Native Computing Foundation (CNCF) as a Sandbox Project. Built on a foundation of constraints and functional programming principles, KCL enhances the process of writing complex configurations, particularly in cloud-native environments. By leveraging advanced programming language techniques, KCL promotes improved modularity, scalability, and stability in configuration management. It simplifies logic writing, offers easy-to-use automation APIs, and seamlessly integrates with existing systems.

This section will update the KCL language community's latest news, including features, website updates, and the latest community news, helping everyone better understand the KCL community!

KCL Website: https://kcl-lang.io

Special Thanks

  • Thanks to @prakhar479 for contributing to the KCL built-api support for blake3 🙌

  • Thanks to @shruti2522 for contributing to the IDE hints feature enhancement 🙌

  • Thanks to @liangyuanpeng for continuous contributions to the kcl-openapi tool 🙌

  • Thanks to @trogowski for contributing to the KCL documentation 🙌

  • Thanks to @yonas for contributing to the KCL documentation 🙌

  • Thanks to @NishantBansal2003 for continuous contributions to the KCL package management tool sum check feature 🙌

  • Thanks to @officialasishkumar for contributing to the KCL package management tool download Git subpackage feature 🙌

  • Thanks to @cx2c, @yonas, @NishantBansal2003, @shruti2522, @nwmcsween, @trogowski, @suin, @johnallen3d, @liangyuanpeng, @riven-blade, @officialasishkumar, @gesmit74, @prakhar479, @Lukáš Kubín, @Christopher Haar, @Alexander Fuchs, @Peter Boat, @Stéphane Este-Gracias, @Yvan da Silva, @Rehan Chalana, @Zack Zhang, @Josh West, @Brandon Nason, @suin, @Anany, and others for their valuable suggestions and feedback while using KCL in the past two weeks 🙌

Overview

🏄 Language Updates

  • KCL v0.10.0-rc.1 has been released.
  • KCL added some built-in APIs parameters to support the encoding parameter.
sha512(value: str, encoding: str = "utf-8") -> str
  • KCL has added a new built-in API, crypto.blake3, to support the use of the Blake algorithm for hashing.
import crypto
blake3 = crypto.blake3("ABCDEF")
  • KCL has added a new built-in API, isnullish, to support determining whether a field is empty.
a = [100, 10, 100]
A = isnullish(a)
e = None
E = isnullish(e)
  • KCL has added a new built-in API, datetime.validate, to support validating date content.
import datetime
assert datetime.validate("2024-08-26", "%Y-%m-%d")
  • KCL has fixed the date format issue in the built-in API datetime.
  • KCL Plugin now supports development through Rust.
  • Fix the issue that the unification of the schema configuration arguments is parsed incorrectly.
  • KCL Plugin has added some tests.

💻 IDE Updates

  • Fixed the issue of the first line and first column code highlighting failure.
  • Fixed the issue of IDE occasional deadlock.
  • IDE has added more output logs.
  • Optimized the semantic highlighting of the scehma index signature key.
  • IDE has optimized the IDE find ref function.
  • Fixed the issue of IDE failing to highlight code when opening a file.
  • Fixed the issue that find ref failed.
  • Fixed the issue that the code highlight failed when opening a file.
  • Refactored the code structure of the LSP part and adjusted the scope of some APIs.
  • Fixed the issue that the IDE failed to update after kpm updated dependencies.
  • IDE has added hints for the schema arguments.

📖 Documentation

  • Added a review article on KCL at kubecon 2024.
  • Added a new built-in API section to the documentation.
  • Adjusted the documentation to integrate with OCI registry and Git Repo in the package management tool section.
  • Added a new section about the kcl.mod include and exclude fields in the documentation.
  • Fixed some documentation errors.

📦️ SDK Updates

  • Added support for the KCL wasm lib to integrate with node.js and browsers.
  • Refactored the KCL python code examples.

📬️ Toolchain Updates

  • kcl-openapi has been optimized and adjusted for code and document structure.
  • kcl-openapi has added more test cases and optimized the code structure.
  • Package management tools have fixed the bug that compiling multiple *.k files failed.
  • Package management tools supported adding sub-packages in Git repositories as third-party libraries.
  • Package management tools have added some test cases.
  • krm-kcl function fixed some errors in some tests and documents.
  • kcl-operator has been updated and fixed some documentation content, optimized some code structures.
  • kcl-operator has added some test cases and optimized the release process.
  • kcl-operator added automatic authentication when initializing containers.
  • KCL fmt tool provides C API.

⛵️ API Updates

  • kcl-go API supports importing jsonschema.

🔥 Integration Updates

  • kcl-flux-controller parameter optimization, added more test cases, and a more complete release and test process.

Resources

❤️ See here to join us!

For more resources, please refer to the KCL Website.

· 3 min read

At KubeCon China 2024, held from August 21st to 23rd, a 3-day event in Hong Kong, KCL participated in the event and shared its efforts in simplifying Kubernetes manifests management.

Lighting Talk: KCL: Simplifying Kubernetes Manifests Management

The Lighting Talk PPT: Download PDF

pptcover

In this event, KCL introduced its efforts in simplifying Kubernetes manifests management, improving configuration management efficiency and stability through a Lighting Talk.

kcllightingtalk

KCL is a domain-specific language (DSL) in IaC, mainly solving common issues such as configuration scale explosion, high cognitive load, lack of effective dynamic configuration management, and configuration reliability assurance, and can easily integrate with the community ecosystem.

For the effective reduction of configuration scale, KCL provides a Schema to abstract common configuration structures, and supports the distribution and reuse of configuration structures through package management mechanisms. Moreover, KCL can merge the content of the same configuration in multiple files to shield developers from unnecessary unfamiliar concepts and reduce cognitive load. As a language project, the rich toolchain and powerful IDE also greatly improve the development experience of developers.

ppt1

KCL supports dynamic configuration management and provides two ways of declarative and imperative configuration management. Developers can write imperative code generation configurations in the code through if/for/lambda expressions.

ppt2

KCL also supports declarative configuration merge/override operators to merge and override different configuration blocks and fields.

ppt3

KCL improves the reliability of configuration through type system, testing, and rule verification. KCL, as a type-safe configuration language, can expose a large number of type errors in advance at the compilation stage, and developers can get error in the IDE.

ppt4 ppt5

At the same time, the most simple and effective method of software reliability assurance, testing, is also supported in KCL, and you can write unit tests for configuration content through lambda.

ppt6 ppt7

At last, writing validation rules to check the configuration content has always been a common topic in IaC, and KCL supports writing corresponding configuration verification rules through Assert/Check/Rule features to verify the configuration content.

ppt8

KCL provides SDKs for 12 languages, supports integration with most projects, and supports extension of KCL language capabilities through plugin mechanisms. KCL also provides KCL-Operator to support validation, update, and generation of resources in Kubernetes clusters through KCL language. With the above capabilities, KCL can easily integrate with community tools such as Crossplane and ArgoCD, etc.

KCL & Crossplane: A Very Nice Conversation

KCL also had a very nice conversation with partners from the Crossplane community, who also brought us wonderful sharing.

Crossplane is an open-source project designed to extend Kubernetes with the capability to manage not only containerized applications but also cloud resources across multiple providers. It acts as a universal control plane, enabling users to provision and manage infrastructure using Kubernetes-native APIs.

crossplaneppt1

In this sharing, Crossplane mentioned the importance of exposing problems as early as possible in the software development lifecycle.

crossplaneppt2

Crossplane also mentioned how to use KCL to improve the reliability of configuration in the process of ensuring configuration reliability.

crossplaneppt3

KCL can be used to write corresponding test cases for configuration through KCL to expose problems in the configuration as early as possible.

crossplaneppt4

KCL and Kusionstack communities also had a nice conversation with the Crossplane community, and look forward to more cooperations in the future.

photo

Other Resources

For more information about KCL, please refer to: