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 @officialasishkumar for contributing the ability to add Git repository subdirectory dependencies to the KCL package management tool. 🙌
  • Thanks to @Gmin2 for contributing to the module storage path feature in the KCL package management tool. 🙌
  • Thanks to @liangyuanpeng for contributions to modules like karpenter, gateway-api, and the KCL OpenAPI tool. 🙌
  • Thanks to @NishantBansal2003 and @varshith257 for their research and contributions on third-party dependency checksum checks in the KCL package management tool. 🙌
  • Thanks to @Harsh4902, @Gmin2, @shishir-11, @RehanChalana for their research and contributions to the Intellij IDE KCL LSP plugin. 🙌
  • Thanks to @Vishalk91-4 for their ongoing contributions to the KCL tree-sitter grammar. 🙌
  • Thanks to @dennybaa for contributions to modules like crossplane and crossplane-vault-provider. 🙌
  • Thanks to @Manoramsharma for contributions to dependency alias features, ignoring TLS checks, and external Git dependencies in the KCL package management tool. 🙌
  • Thanks to @DavidChevallier for contributions to modules like cilium and external-secrets. 🙌
  • Thanks to @suin for contributions to the outdent module. 🙌
  • Thanks to @Lukáš Kubín, @ChrisK, @Sergey Ryabin, @Lan Liang, @Endre Karlson, @suin, @Zack Zhang, @v3xro, @soubinan, @juanzolotoochin, @mnacharov, @dennybaa, @ron1, @DavidChevallier, @wmcnamee-coreweave, @vfarcic, @phisco, @juanzolotoochin, @juanique, @zackzhangverkada, @warmuuh and @novohool for their valuable suggestions and feedback during their use of KCL over the past two weeks. 🙌

Overview

🏄 Language Updates

  • Optimized the type inference and checks for function parameter calls/return value Dict to Schema, allowing the Schema name to be omitted to simplify configuration writing.
  • Enhanced type checks for configuration merging operators, enabling the detection of more type errors at compile time.
  • Supported omitting default values for Schema properties with singleton literal constant types.

Before optimization:

schema Deployment:
apiVersion: "apps/v1" = "apps/v1"

After optimization:

schema Deployment:
apiVersion: "apps/v1" # The type value is the same as the default value, so the default value can be omitted.

📦️ Module Updates

  • k8s updated to 1.31
  • gateway-api updated to 0.2.0
  • karpenter updated to 0.2.0
  • crossplane updated to 1.16.0
  • cilium updated to 0.3.0
  • external-secrets updated to 0.1.2
  • New modules
    • crossplane-provider-vault 1.0.0
    • outdent 0.1.0
    • kcl_lib 0.1.0

📬️ Tool Updates

  • The kcl import tool now supports importing entire Go Packages and converting all Go struct definitions into KCL Schema definitions.
  • The kcl import tool has added support for importing JSON Schemas containing AllOf validation fields as KCL Schema.
  • The kcl fmt tool now preserves the user's blank lines between multiple code snippets, rather than deleting them all.
  • Fixed the incorrect formatting position of the Schema index signature comments in the kcl fmt tool.
  • Fixed unexpected errors when setting the -o parameter during the kcl import tool for Kubernetes CRDs.
  • Fixed unexpected KCL Schema errors when importing empty Go structs with the kcl import tool.

💻 IDE Updates

  • Supports workspace segmentation in the IDE using a kcl.work configuration file.
  • Fixed the issue where schema example parameters could not display semantic information.

⛵️ API Updates

🔥 Integration Updates

  • Flux KCL Controller released v0.4.0, aligning most Flux Kustomize Controller features to meet the demand for direct use of KCL instead of Kustomize for Flux GitOps.
  • KRM KCL specification released v0.10.0 beta, adding features for pulling from private Git repositories and ignoring TLS checks.
  • KCL Nix Package released v0.9.8.
  • Crossplane KCL Function released v0.9.4; see details at https://github.com/crossplane-contrib/function-kcl.
  • KCL Bazel Rules updated to KCL v0.10.0 beta; see details at https://github.com/kcl-lang/rules_kcl.

Resources

❤️ See here to join us!

For more resources, please refer to the KCL Website.

· 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

Special thanks to all community contributors over the past two weeks. The following list is in no particular order:

  • Thanks @briheet for the contribution to the formatted output of the kcl.mod file. 🙌
  • Thanks @Vishalk91-4 for the ongoing contribution to the KCL tree-sitter. 🙌
  • Thanks @liangyuanpeng for the ongoing contribution to the CI of repositories such as KCL cli, kpm, and modules. 🙌
  • Thanks @kukacz for the ongoing contribution to the KCL model repository. 🙌
  • Thanks @Moulick for the contribution to the Crossplane KCL Function. 🙌
  • Thanks @stmcginnis for the contribution to the KCL documentation. 🙌
  • Thanks @YvanDaSilva for the contribution to the KCL Nix Package. 🙌
  • Thanks @DavidChevallier for the ongoing contribution to the KCL model repository. 🙌
  • Thanks @Manoramsharma for the contribution to the alias feature and external Git dependency functionality of the KCL package management tool. 🙌
  • Thanks @NishantBansal2003, @varshith257 for the research and contribution to the checksum check of third-party dependencies in the KCL package management tool. 🙌
  • Thanks to Harsh4902, @Gmin2, @shishir-11, @RehanChalana for the research and contribution to the Intellij IDE KCL LSP plugin. 🙌
  • Thanks @Shruti78 for the contribution to the KCL documentation. 🙌
  • Thanks @jianzs for the contribution to the KCL Playground. 🙌
  • Thanks @vinayakjaas for the contribution to the error messages of KPM. 🙌
  • Thanks to @wmcnamee-coreweave, @dennybaa, @bozaro, @eshepelyuk, @liangyuanpeng, @vietanhtwdk, @hoangndst, @sschne, @patpicos, @metacoma, @YvanDaSilva, @ovk, @karlderkaefer, @kukacz, @Matthew Hodgkins, @Christopher Haar, @Gao Jun, and @Zack Zhang for their valuable suggestions and feedback while using KCL in recent times. 🙌

Overview

Thanks to all contributors for their outstanding work over the past two weeks. Here is an overview of the key content:

📦️ Modules Updates

  • cluster-api-provider-azure updated to v1.16.0
  • cluster-api updated to v1.7.4
  • konfig updated to v0.6.0
  • karmada updated to v0.1.1
  • New modules
    • fluxcd-kcl-controller
    • fluxcd-kustomize-controller
    • fluxcd-helm-controller
    • fluxcd-source-controller
    • fluxcd-image-reflector-controller
    • fluxcd-image-automation-controller
    • fluxcd-notification-controller
    • kwok

🏄 Language Updates

  • Fixed type conversion error with the as keyword in the presence of external packages.
  • Fixed type check error from config to schema in the lambda function.
  • Added file.current() function to retrieve the full path of the currently running KCL file.
  • Assignment statements support syntax such as _config["key"] = "value" or _config.key = "value" for in-place modification of configurations.

💻 IDE Updates

  • Fixed completion of attribute instantiation using : operator in Schema.
  • Fixed unexpected completion in Schema Doc
  • Fixed display issues with the kcl-language-server command-line version.
  • Support for disabling formatting on save in plugins like NeoVim, VS Code.
  • Fine-grained completion for distinguishing between property and value semantics during Schema instantiation.
  • Removal of default key bindings in KCL NeoVim plugin, support for user customization.

📬️ Toolchain Updates

  • kcl test tool supports output of print function in test cases
  • Fixed compilation error in kcl import when importing Schema from Kubernetes CRD and OpenAPI
  • Improved formatting of output for kcl mod init

⛵️ API Updates

  • Fixed unexpected data formatting error in KCL C API.
  • OverrideFile API supports automatic merging and modification of configurations using the : operator during compilation.

🔥 SDK Updates

  • KCL Go SDK supports interaction with KCL core Rust API through build tags, defaulting to CGO mode and can be switched to RPC mode with -tags rpc.
  • Alpha version v0.10.0 of KCL SDKs released
  • Initial release of KCL Kotlin and Swift language SDKs, with no official dependency package yet, contributions are welcome.

Resources

❤️ See here to join us!

For more resources, please refer to