This repo mainly includes the binding of the low-level API and spec of the KCL language core, and the SDKs of various languages are based on this to encapsulate higher-level APIs.
cargo add --git https://github.com/kcl-lang/libWrite the Code
use kcl_lang::*;
use anyhow::Result;
fn main() -> Result<()> {
    let api = API::default();
    let args = &ExecProgramArgs {
        k_filename_list: vec!["main.k".to_string()],
        k_code_list: vec!["a = 1".to_string()],
        ..Default::default()
    };
    let exec_result = api.exec_program(args)?;
    println!("{}", exec_result.yaml_result);
    Ok(())
}More Rust APIs can be found here. If you want to use the sub crate of KCL Rust core, you can run the following command.
# Take the kclvm-runtime as an example.
cargo add --git https://github.com/kcl-lang/kcl kclvm-runtimego get kcl-lang.io/libWrite the Code
package main
import (
	"fmt"
	"kcl-lang.io/lib/go/api"
	"kcl-lang.io/lib/go/native"
)
func main() {
	client := native.NewNativeServiceClient()
	result, err := client.ExecProgram(&api.ExecProgram_Args{
		KFilenameList: []string{"main.k"},
		KCodeList:     []string{"a = 1"},
	})
	if err != nil {
		t.Fatal(err)
	}
	fmt.Println(result.YamlResult)
}Full Go SDK can be found here, which depends on the kcl-lang/lib Go bindings.
Refer to this to configure your Maven; set up your GitHub account and Token in the settings.xml.
In your project's pom.xml, configure our repository as follows:
<repositories>
    <repository>
        <id>github</id>
        <url>https://maven.pkg.github.com/kcl-lang/*</url>
        <snapshots>
            <enabled>true</enabled>
        </snapshots>
    </repository>
</repositories>This way you'll be able to import the above dependency to use the SDK.
<dependency>
    <groupId>com.kcl</groupId>
    <artifactId>kcl-lib</artifactId>
    <version>0.11.1-SNAPSHOT</version>
</dependency>Write the code
import com.kcl.api.API;
import com.kcl.api.Spec.ExecProgram_Args;
import com.kcl.api.Spec.ExecProgram_Result;
public class ExecProgramTest {
    public static void main(String[] args) throws Exception {
        API api = new API();
        ExecProgram_Result result = api
                .execProgram(ExecProgram_Args.newBuilder().addKFilenameList("path/to/kcl.k").build());
        System.out.println(result.getYamlResult());
    }
}dotnet add package KclLibWrite the code
using KclLib.API;
var api = new API();
var execArgs = new ExecProgram_Args();
var path = Path.Combine("test_data", "schema.k");
execArgs.KFilenameList.Add(path);
var result = api.ExecProgram(execArgs);
Console.WriteLine(result.YamlResult);python3 -m pip install kcl-libWrite the code
import kcl_lib.api as api
args = api.ExecProgram_Args(k_filename_list=["./tests/test_data/schema.k"])
api = api.API()
result = api.exec_program(args)
print(result.yaml_result)npm install kcl-libWrite the code
import { execProgram, ExecProgramArgs } from 'kcl-lib'
function main() {
  const result = execProgram(new ExecProgramArgs(['__test__/test_data/schema.k']))
  console.log(result.yamlResult)
}
main();Refer to this to configure your Maven; set up your GitHub account and Token in the settings.xml.
In your project's pom.xml, configure our repository as follows:
<repositories>
    <repository>
        <id>github</id>
        <url>https://maven.pkg.github.com/kcl-lang/*</url>
        <snapshots>
            <enabled>true</enabled>
        </snapshots>
    </repository>
</repositories>This way you'll be able to import the above dependency to use the SDK.
<dependency>
    <groupId>com.kcl</groupId>
    <artifactId>kcl-lib</artifactId>
    <version>0.11.1-SNAPSHOT</version>
</dependency>Write the code
import com.kcl.api.API
import com.kcl.api.execProgramArgs
val args = execProgramArgs { kFilenameList += "schema.k" }
val api = API()
val result = api.execProgram(args)import KclLib
let api = API()
var execArgs = ExecProgram_Args()
execArgs.kFilenameList.append("schema.k")
let result = try api.execProgram(execArgs)For CMake, you can use FetchContent to add KCL C++ Lib to your project.
FetchContent_Declare(
  kcl-lib
  GIT_REPOSITORY https://github.com/kcl-lang/lib.git
  GIT_TAG        v0.11.1
  SOURCE_SUBDIR  cpp
)
FetchContent_MakeAvailable(kcl-lib)Or you can download the source code and add it to your project.
mkdir third_party
cd third_party
git clone https://github.com/kcl-lang/lib.gitadd_subdirectory(third_party/lib/cpp)target_link_libraries(your_target kcl-lib-cpp)Write the code
#include "kcl_lib.hpp"
#include <iostream>
int main()
{
    auto args = kcl_lib::ExecProgramArgs {
        .k_filename_list = { "../test_data/schema.k" },
    };
    auto result = kcl_lib::exec_program(args);
    std::cout << result.yaml_result.c_str() << std::endl;
    return 0;
}See here
See here
See here