Skip to main content

16 posts tagged with "Newsletter"

View All Tags

· 4 min read

KCL is a constraint-based record and functional language hosted by Cloud Native Computing Foundation (CNCF) that enhances the writing of complex configurations and polices, including those for cloud-native scenarios. With its advanced programming language technology and practices, KCL is dedicated to promoting better modularity, scalability, and stability for configurations. It enables simpler logic writing and offers ease of automation APIs and integration with homegrown 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

Overview

Thanks to to all contributors for their outstanding work over the past twenty days (2024.03.06 - 2024.03.20). Here is an overview of the key content:

📦 Module Updates

  • Added new kubeadm configuration module.
  • Updated Knative Operator module to align with upstream Knative CRD definitions.

🏄 Language Updates

KCL has released v0.8.1 and v0.8.2, mainly including the following updates:

  • Enhanced error messages for simplified experience when binary expression types do not match.
  • Fixed abnormal error of high-order lambda functions capturing local scope closure variables.
  • Removed inequality comparison operations for uncommon list data types.

🔧 Toolchain Updates

  • Fixed an issue in the kcl import tool where input Kubernetes CRDs with the regex property conflicted with the KCL regex system library.
  • Fixed a syntax error in the KCL file output when the input Kubernetes CRD properties had complex default values in the kcl import tool.
  • Added support for setting the version of a newly created KCL module with the --version flag in the kcl mod init command.
  • Commands such as kcl run, kcl mod add, and kcl mod pull now support accessing private Git repositories.
  • Fixed a path error encountered when running the kcl run command on a local OCI Registry on Windows.

🔥 SDK Updates

  • The KCL Rust, Go, and Java SDKs have released version 0.8, primarily synchronizing with KCL syntax and semantic updates.
  • The KCL Python SDK has released versions 0.8.0.2 and 0.7.6, addressing the issue of outdated dependencies for protobuf and pyyaml.

💻 IDE Updates

  • Support for multiple quick fix repair options.

multiple-quick-fix

🎁 API Updates

  • Added ListOptions API, which can read all option function call information in KCL projects.

🚢 Integration Updates

  • Crossplane KCL Function has released version 0.3.2, supporting access to non-HTTPS protocol OCI Registries and local debugging.

🌐 Website Updates

  • Enabled the kcl-lang.dev domain, allowing access to the KCL website through both kcl-lang.io and kcl-lang.dev.
  • Optimized website loading speed for an improved documentation experience on the KCL website.

Special Thanks

Thank you to all the community contributors over the past two weeks, listed in no particular order:

  • Thank you to @bozaro for the contribution to the KCL Go SDK with the Go language plugin API. 🙌
  • Thank you to @shashank-iitbhu for enhancing the quick fix feature in the KCL IDE, adding support for multiple fix options. 🙌
  • Thank you to @octonawish-akcodes for the ongoing contribution to the KCL IDE, automatically monitoring kcl.mod dependencies and updating them. 🙌
  • Thank you to @liangyuanpeng for fixing the CLA Bot CI automatic PR locking, contributing to the kubeadm model, and supporting the version setting feature in kcl mod init. 🙌
  • Thank you to @Stefano Borrelli, @sfshumaker, @eshepelyuk, @vtomilov, @ricochet1k, @yjsnly, @markphillips100, @userxiaosi, @wilsonwang371, @steeling, @bozaro, @nizq, @reckless-huang, @folliehiyuki, @samuel-deal-tisseo, @MrGuoRanDuo, and @MattHodge for providing valuable suggestions and feedback while using KCL recently. 🙌

Resources

❤️ See here to join us!

For more resources, please refer to

· 4 min read

KCL is a constraint-based record and functional language hosted by Cloud Native Computing Foundation (CNCF) that enhances the writing of complex configurations and polices, including those for cloud-native scenarios. With its advanced programming language technology and practices, KCL is dedicated to promoting better modularity, scalability, and stability for configurations. It enables simpler logic writing and offers ease of automation APIs and integration with homegrown 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

Overview

Thanks to to all contributors for their outstanding work over the past twenty days (2024.02.02 - 2024.02.22). Here is an overview of the key content:

📦 Module Updates

The JSON Schema module 0.0.4 has released, fixing type definition errors. You can update or add dependencies by running the following command:

kcl mod add jsonschema:0.0.4

🏄 Language Updates

KCL has released preview version 0.8.0, mainly including the following updates:

  • Added the file system library for reading KCL module information and system files, including the read, glob, workdir, and modpath functions. See more details in this issue
  • Optimized syntax error messages for unexpected tokens.
  • Removed output for unexpected internal built-in type attributes in schema objects.
  • Fixed variable calculation in unexpected dictionary generation expressions where the key is the same as the loop variable.
  • Fixed errors in defining string identifiers within schemas, such as "$if".

🔧 Toolchain Updates

  • kcl run supports using the -H parameter to output hidden fields starting with _.
  • kcl run supports running remote Git repository code directly.
  • Introduce the kcl mod graph subcommand used to output module dependency graphs.
  • Fixed formatting errors when there is an if statement within an else block.

💻 IDE Updates

  • Enhanced autocompletion and hover documentation for built-in functions and system libraries
  • Fixed issues with navigating and autocompleting if statements symbols within configuration blocks
  • Added quick fix feature for variable reference errors

🎁 API Updates

  • The OverrideFile API has added path for querying and modifying configurations, such as a["b"].c
  • The Run API has added the WithShowHidden and the WithTypePath flags.

🚀 Plugin System Updates

In addition to using Python for KCL plugin functions, it now supports using Go to write plugin functions for KCL, which is very simple to use.

  • Define a plugin (using a hello plugin containing the add function as an example)
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
},
},
},
})
}
  • Use the plugin
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
`

🚢 Integration Updates

  • Released initial version of Ansible KCL module, supporting basic execution of KCL code, with other functionalities being improved
  • Optimized Git Source functionality for KCL FluxCD Controller, with OCI Source functionality in progress

Special Thanks

The following are listed in no particular order:

  • Thanks to @octonawish-akcodes and @d4v1d03 for their continuous contributions to KCL FAQ documentation and KCL IDE functionality 🙌
  • Thanks to @octonawish-akcodes for the contribution to the Ansible KCL Module
  • Thanks to @AkashKumar7902 and @Vanshikav123 for the contribution to the KCL package management tool functionality 🙌
  • Thanks to @StevenLeiZhang for the contribution to KCL documentation and KCL plugins
  • Thanks to @TheChinBot, @Evgeny Shepelyuk, @yonas, @steeling, @vtomilov, @Fdall, @CloudZero357, @bozaro, @starkers, @MrGuoRanDuo and @FLAGLORD, among others, for their valuable feedback and suggestions while using KCL recently. 🙌

Resources

❤️ Thanks to all KCL users and community members for their valuable feedback and suggestions in the community. See here to join us!

For more resources, please refer to