KCL lib is a collection of language bindings and SDKs that expose the low-level API and specification of the KCL language core across multiple programming languages.
The project solves the problem of integrating KCL into applications written in different languages by providing bindings for Rust, Go, Python, Java, Kotlin, .NET, Swift, Lua, Node.js, Zig, C, C++, WASM, Ruby, Julia, and Dart/Flutter. Each binding wraps either the native KCL runtime or calls prebuilt shared libraries, allowing developers to invoke KCL functionality from their language of choice. The bindings range from thin FFI wrappers that directly call prebuilt libkcl binaries to more complete SDKs that encapsulate higher-level APIs on top of the low-level bindings.
Adoption depends on your technology stack and deployment model. Choose this if you need to embed KCL evaluation into an application written in one of the supported languages. The Go binding has a full SDK available separately; the .NET binding ships cross-platform executables for multiple runtime identifiers; the Dart/Flutter binding includes mobile-specific setup for Android and iOS; and the Julia binding uniquely avoids building Rust code by directly calling the prebuilt shared libraries. Java and Kotlin bindings are distributed through Maven with GitHub authentication required. Most bindings depend on prebuilt native runtimes that are not included on the main development branch but are available on release branches and tags; developers building from main must run a download script before linking against the runtime.
The project maintains bindings across a wide range of language ecosystems, indicating sustained effort to keep multiple integration paths current. Mobile support is actively built through dedicated workflows for Dart/Flutter, showing investment in cross-platform deployment scenarios. The repository structure separates low-level bindings from higher-level SDKs, with some languages like Go having their SDK maintained in a separate repository that depends on these bindings.