Kusion Configuration Language (KCL) is an open source configuration language mainly used in Kusion Stack

Overview

KCL

license Continuous Integration

中文

Kusion Configuration Language (KCL) is an open source configuration language mainly used in Kusion Stack. KCL is a statically typed language for configuration and policy scenarios, based on concepts such as declarative and Object-Oriented Programming (OOP) paradigms.

Core Features

  • Simple
    • Originated from Python and Golang, incorporating functional language features.
    • Absorbs integrated language elements such as statements, expressions, conditions, loops, etc.
    • Type and data separation, schema declaration configuration definition.
  • Stable
    • Strong immutable constraint.
    • Compile-time type deduction, type checking.
    • Rule policy definition: attribute-centric constraint expressions, query results based on constraints.
    • Testable: assert, print, and test tools.
  • Scalable
    • Configuration unification: compile-time configuration dependency graph substitution.
    • Configuration attribute operators: meet the needs of configuration override, merge, add and delete, etc.
    • Configuration reuse: rich built-in data structures and syntax semantics, easily to expand one configuration of different scenarios.
  • Engineering
    • Schema single inheritance and declarative model reuse and assembly.
    • Tool & API granular configuration automation.
    • Rich built-in functions and system libraries.
    • Top-level dynamic data input.
    • Code organization: modules and packages.
    • Plug-in system: reuse common programming language ecology.
    • OpenAPI model support: Swagger and KCL schema bidirectional conversion, Kubernetes CRD conversion to KCL schema.
  • High Performance
    • Works with the LLVM optimizer, supports compilation to native code and formats like WASM and executes efficiently.

Installing & Documentation

How to install

Download the latest release from GitHub and add {install-location}/kclvm/bin to environment PATH.

Quick Showcase

./samples/fib.k is an example of calculating the Fibonacci sequence.

schema Fib:
    n1: int = n - 1
    n2: int = n1 - 1
    n: int
    value: int

    if n <= 1:
        value = 1
    elif n == 2:
        value = 1
    else:
        value = Fib {n: n1}.value + Fib {n: n2}.value

fib8 = Fib {n: 8}.value

We can execute the following command to get a YAML output.

kcl ./samples/fib.k

YAML output

fib8: 21

Documentation

Detailed documentation is available at https://kusionstack.io

Developing & Contributing

Developing

See Developing Guide.

Roadmap

See KCLVM Roadmap

License

Apache License Version 2.0

Comments
  • Feat(error_recovey): paren_error_recovery

    Feat(error_recovey): paren_error_recovery

    1. Does this PR affect any open issues?(Y/N) and add issue references (e.g. "fix #123", "re #123".):

    • [ ] N
    • [x] Y #162

    2. What is the scope of this PR (e.g. component or file name):

    3. Provide a description of the PR(e.g. more details, effects, motivations or doc link):

    When there are parentheses mismatched, the program will not just panic and exit. It will add close parentheses to make them matched.

    • [ ] Affects user behaviors
    • [ ] Contains syntax changes
    • [ ] Contains variable changes
    • [ ] Contains experimental features
    • [ ] Performance regression: Consumes more CPU
    • [ ] Performance regression: Consumes more Memory
    • [x] Other

    4. Are there any breaking changes?(Y/N) and describe the breaking changes(e.g. more details, motivations or doc link):

    • [ ] N
    • [x] Y

    5. Are there test cases for these changes?(Y/N) select and add more details, references or doc links:

    • [x] Unit test
    • [ ] Integration test
    • [ ] Benchmark (add benchmark stats below)
    • [ ] Manual test (add detailed scripts or steps below)
    • [ ] Other

    6. Release note

    Please refer to Release Notes Language Style Guide to write a quality release note.

    None
    
    parser error-handling 
    opened by possible-fqz 10
  • kclvm-runner build error.

    kclvm-runner build error.

    Bug Report

    Please answer these questions before submitting your issue. Thanks!

    1. Minimal reproduce step (Required)

    environment:
    NAME="Ubuntu" VERSION="20.04.3 LTS (Focal Fossa)"

    /usr/local/lib
    

    execute cargo test --package kclvm-tools

    2. What did you expect to see? (Required)

    3. What did you see instead (Required)

    error: could not find native static library `lldMachO`, perhaps an -L flag is missing?
    
    error: could not compile `kclvm-runner` due to previous error```
    

    4. What is your KusionStack components version? (Required)

    main branch

    I found this line doesn't work in my environment.

    println!("cargo:libdir={}", libdir);

    /root/KCLVM/kclvm/runner/build.rs

    when i change it to println!("cargo:rustc-link-search={}", libdir);

    I can build kclvm-runner successfully.

    If needed, i can open a pr to solve it.

    runner 
    opened by my-vegetable-has-exploded 6
  • There is a problem with the lock file lock in runner.

    There is a problem with the lock file lock in runner.

    Bug Report

    Please answer these questions before submitting your issue. Thanks!

    1. Minimal reproduce step (Required)

    File lock only locks 'main'.

    2. What did you expect to see? (Required)

    File locks should lock all 'pkgpath'

    3. What did you see instead (Required)

    running 1 test
    thread '<unnamed>' panicked at 'Compile KCL to LLVM error: "No such file or directory"', runner/src/assembler.rs:164:10
    stack backtrace:
       0: rust_begin_unwind
                 at /rustc/a55dd71d5fb0ec5a6a3a9e8c27b2127ba491ce52/library/std/src/panicking.rs:584:5
       1: core::panicking::panic_fmt
                 at /rustc/a55dd71d5fb0ec5a6a3a9e8c27b2127ba491ce52/library/core/src/panicking.rs:142:14
       2: core::result::unwrap_failed
                 at /rustc/a55dd71d5fb0ec5a6a3a9e8c27b2127ba491ce52/library/core/src/result.rs:1814:5
       3: core::result::Result<T,E>::expect
                 at /rustc/a55dd71d5fb0ec5a6a3a9e8c27b2127ba491ce52/library/core/src/result.rs:1064:23
       4: <kclvm_runner::assembler::LlvmLibAssembler as kclvm_runner::assembler::LibAssembler>::assemble
                 at ./src/assembler.rs:155:9
       5: <kclvm_runner::assembler::KclvmLibAssembler as kclvm_runner::assembler::LibAssembler>::assemble
                 at ./src/assembler.rs:97:40
       6: kclvm_runner::assembler::KclvmAssembler::gen_libs::{{closure}}
                 at ./src/assembler.rs:353:45
       7: <F as threadpool::FnBox>::call_box
                 at /Users/.cargo/registry/src/github.com-1ecc6299db9ec823/threadpool-1.8.1/src/lib.rs:95:9
       8: threadpool::spawn_in_pool::{{closure}}
                 at /Users/.cargo/registry/src/github.com-1ecc6299db9ec823/threadpool-1.8.1/src/lib.rs:769:17
    note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
    

    4. What is your KusionStack components version? (Required)

    bug 
    opened by zong-zhe 6
  • feat: add manifests.yaml_stream impl at kclvm runtime.

    feat: add manifests.yaml_stream impl at kclvm runtime.

    1. Does this PR affect any open issues?(Y/N) and add issue references (e.g. "fix #123", "re #123".):

    • [ ] N
    • [x] Y

    feat: #94

    • Add the runtime function to implement the customized output of YAML stream format manifests.
    • TODO: The corresponding implementation of the KCL UI layer includes function call and runtime impl integration and more UI test suites. @zong-zhe
    • TODO: More yaml encode options to impl. @Peefy

    2. What is the scope of this PR (e.g. component or file name):

    3. Provide a description of the PR(e.g. more details, effects, motivations or doc link):

    • [ ] Affects user behaviors
    • [ ] Contains syntax changes
    • [ ] Contains variable changes
    • [ ] Contains experimental features
    • [ ] Performance regression: Consumes more CPU
    • [ ] Performance regression: Consumes more Memory
    • [x] Other

    4. Are there any breaking changes?(Y/N) and describe the breaking changes(e.g. more details, motivations or doc link):

    • [x] N
    • [ ] Y

    5. Are there test cases for these changes?(Y/N) select and add more details, references or doc links:

    • [x] Unit test
    • [ ] Integration test
    • [ ] Benchmark (add benchmark stats below)
    • [ ] Manual test (add detailed scripts or steps below)
    • [ ] Other
    • unit test suites: kclvm/runtime/src/manifests/yaml.rs

    6. Release note

    Please refer to Release Notes Language Style Guide to write a quality release note.

    None
    
    runtime 
    opened by Peefy 5
  • refactor(kclvm-runner): encapsulate dylib generating, linking and executing in kclvm/lib.rs into kclvm-runner

    refactor(kclvm-runner): encapsulate dylib generating, linking and executing in kclvm/lib.rs into kclvm-runner

    1. Does this PR affect any open issues?(Y/N) and add issue references (e.g. "fix #123", "re #123".):

    • [ ] N
    • [x] Y

    fix #67 and #82

    2. What is the scope of this PR (e.g. component or file name):

    kclvm-runner/runner.rs kclvm-runner/lib.rs

    3. Provide a description of the PR(e.g. more details, effects, motivations or doc link):

    • [ ] Affects user behaviors
    • [ ] Contains syntax changes
    • [ ] Contains variable changes
    • [ ] Contains experimental features
    • [ ] Performance regression: Consumes more CPU
    • [ ] Performance regression: Consumes more Memory
    • [x] Other
    1. Encapsulate dylibs generating and executing in kclvm/lib.rs into kclvm-runner.
    2. Add struct "KclvmAssembler" in kclvm-runner/runner.rs to provide method "gen_libs" for dynamic link library generating.
    3. Add struct "KclvmLinker" in kclvm-runner/runner.rs to provide method "link_all_dylibs" for dynamic link library linking.
    4. Add method "execute" in kclvm-runner/lib.rs to encapsulate dylibs generating(gen_libs), dynamic link library linking(link_all_libs) and running(runner.run) together.
    5. The main purpose of separating the three parts from kclvm/lib.rs and encapsulating them into kclvm-runner is to support reuse in kcl-vet.
    6. Decoupling the assembler and llvm.
    7. The assembling LLVM IR into a dynamic link library is encapsulated into "LlvmLibAssembler" separately.
    8. Add trait "LibAssembler" to describe the interface "KclvmLibAssembler" should have. If other intermediate code is added in the future, the corresponding assembler must implement this trait.
    9. Struct "LlvmLibAssembler" is provided in "KclvmLibAssembler". "KclvmLibAssembler" is an enum that implements trait "LibAssembler". "KclvmLibAssembler" is responsible for the compilation of a single kcl file in one thread.
    10. "KclvmAssembler" is responsible for the concurrent compilation of multiple kcl files.
    11. "KclvmAssembler" will call the method in "KclvmLibAssembler" to generate a dynamic link library for a single kcl file in each thread of concurrent compilation.

    4. Are there any breaking changes?(Y/N) and describe the breaking changes(e.g. more details, motivations or doc link):

    • [x] N
    • [ ] Y

    5. Are there test cases for these changes?(Y/N) select and add more details, references or doc links:

    • [x] Unit test
    • [ ] Integration test
    • [ ] Manual test (add detailed scripts or steps below)
    • [ ] Other

    Add test cases in kclvm-runner/src/tests.rs and kclvm-runner/test_datas. Add bench in kclvm-runner/benches/bench_runner.rs

    Benchmark stats
    1. KCL Test Case
    // kclvm/runner/src/test_datas/init_check_order_0/main.k
    schema Person:
        name: str
        age: int
        gender: str
        info: str = "{}, {}, {} years old".format(name, gender, age)
    
    alice = Person {
        "name": "alice",
        "age": 10,
        "gender": "female"
    }
    
    2. Bench Stats (Compare with before refactoring)
    2.1 CLI Report

    image

    2.2 HTML Report

    image image

    6. Release note

    Please refer to Release Notes Language Style Guide to write a quality release note.

    None
    
    enhancement tool refactor 
    opened by zong-zhe 5
  •  Enhancement(langserver): Add find references api

    Enhancement(langserver): Add find references api

    1. Does this PR affect any open issues?(Y/N) and add issue references (e.g. "fix #123", "re #123".):

    • [ ] N
    • [x] Y re #212

    2. What is the scope of this PR (e.g. component or file name):

    kusionstack/KCLVM/kclvm/tools/src/langserver
    

    3. Provide a description of the PR(e.g. more details, effects, motivations or doc link):

    see more in issue212

    • [x] Affects user behaviors
    • [ ] Contains syntax changes
    • [ ] Contains variable changes
    • [ ] Contains experimental features
    • [ ] Performance regression: Consumes more CPU
    • [ ] Performance regression: Consumes more Memory
    • [ ] Other

    4. Are there any breaking changes?(Y/N) and describe the breaking changes(e.g. more details, motivations or doc link):

    • [x] N
    • [ ] Y

    5. Are there test cases for these changes?(Y/N) select and add more details, references or doc links:

    • [x] Unit test
    • [ ] Integration test
    • [ ] Benchmark (add benchmark stats below)
    • [ ] Manual test (add detailed scripts or steps below)
    • [ ] Other

    6. Release note

    Please refer to Release Notes Language Style Guide to write a quality release note.

    None
    
    resolver langserver 
    opened by my-vegetable-has-exploded 4
  • [WIP] Feat(CompilerBase-Error): Add 'One-Sentence', text rendering and error handler to CompilerError.

    [WIP] Feat(CompilerBase-Error): Add 'One-Sentence', text rendering and error handler to CompilerError.

    1. Does this PR affect any open issues?(Y/N) and add issue references (e.g. "fix #123", "re #123".):

    • [ ] N
    • [x] Y

    fix https://github.com/KusionStack/KCLVM/issues/115

    2. What is the scope of this PR (e.g. component or file name):

    kclvm/compiler_base

    3. Provide a description of the PR(e.g. more details, effects, motivations or doc link):

    • [x] Affects user behaviors
    • [ ] Contains syntax changes
    • [ ] Contains variable changes
    • [ ] Contains experimental features
    • [ ] Performance regression: Consumes more CPU
    • [ ] Performance regression: Consumes more Memory
    • [ ] Other
    1. In /kclvm/compiler_base/diagnostic/, the basic structure of One-Sentence is implemented in compiler-base-diagnostic, which includes 'Pendant', 'Sentence' and 'Diagnostic'.
    2. In /kclvm/compiler_base/style/, the basic structure of text-rendering is implemented in compiler-base-style, which includes 'Style', and 'StyleBuffer'.
    3. In /kclvm/compiler_base/macros/, Macro attributes 'DiagnosticBuilderMacro' is created to support generation of 'Diagnostic' from 'error/warning structs'.

    4. Are there any breaking changes?(Y/N) and describe the breaking changes(e.g. more details, motivations or doc link):

    • [x] N
    • [ ] Y

    5. Are there test cases for these changes?(Y/N) select and add more details, references or doc links:

    • [x] Unit test
    • [ ] Integration test
    • [ ] Benchmark (add benchmark stats below)
    • [ ] Manual test (add detailed scripts or steps below)
    • [ ] Other

    The unit test cases in /kclvm/compiler_base/diagnostic/src/tests.rs /kclvm/compiler_base/style/src/tests.rs

    6. Release note

    Please refer to Release Notes Language Style Guide to write a quality release note.

    None
    
    enhancement error-handling 
    opened by zong-zhe 4
  • [WIP] Refactor: Lint tool (Rust ver.)

    [WIP] Refactor: Lint tool (Rust ver.)

    1. Does this PR affect any open issues?(Y/N) and add issue references (e.g. "fix #123", "re #123".):

    • [ ] N
    • [x] Y fix #102, #109

    2. What is the scope of this PR (e.g. component or file name):

    KCLVM/kclvm/sema/src/resolver KCLVM/kclvm/error KCLVM/kclvm/ast/walker.rs

    3. Provide a description of the PR(e.g. more details, effects, motivations or doc link):

    • [ ] Affects user behaviors
    • [ ] Contains syntax changes
    • [ ] Contains variable changes
    • [ ] Contains experimental features
    • [ ] Performance regression: Consumes more CPU
    • [ ] Performance regression: Consumes more Memory
    • [x] Other

    Add lint check in resolver.

    1. Add warning level diagnotics, including 'UnusedImportWarning', 'ReimportWarning' and 'ImportPostionWarning'
    
    2. Add 'lint_check_module' method to Resolver and is called in the 'check()' method.
    
    3. Add KCL Lint stuct, For details see issue #109
    
    fix #102, #109
    

    Now, these diags are only stored in resolver.handler.diagonstics and are not thrown to the user.

    4. Are there any breaking changes?(Y/N) and describe the breaking changes(e.g. more details, motivations or doc link):

    • [ ] N
    • [x] Y

    5. Are there test cases for these changes?(Y/N) select and add more details, references or doc links:

    • [ ] Unit test
    • [x] Integration test
    • [ ] Benchmark (add benchmark stats below)
    • [ ] Manual test (add detailed scripts or steps below)
    • [ ] Other KCLVM/kclvm/sema/src/resolver/test.rs::test_lint()

    6. Release note

    Please refer to Release Notes Language Style Guide to write a quality release note.

    None
    

    7. Benchmark

    • resolve_program()
      • resolve single file Before image After image
      • resolve 6 files Before image After image
    enhancement tool error-handling feat resolver 
    opened by He1pa 4
  • Fix(kclvm-runner): Added different file locks depending on the curren…

    Fix(kclvm-runner): Added different file locks depending on the curren…

    1. Does this PR affect any open issues?(Y/N) and add issue references (e.g. "fix #123", "re #123".):

    • [ ] N
    • [x] Y

    issue #270.

    2. What is the scope of this PR (e.g. component or file name):

    kclvm-runner

    3. Provide a description of the PR(e.g. more details, effects, motivations or doc link):

    • [ ] Affects user behaviors
    • [ ] Contains syntax changes
    • [ ] Contains variable changes
    • [ ] Contains experimental features
    • [ ] Performance regression: Consumes more CPU
    • [ ] Performance regression: Consumes more Memory
    • [x] Other

    Added different file locks depending on the currently package. If the current package is the main package, the lock will lock a temporary file based on time and process id. If the current package is not the main package, the lock will lock a file named 'package_path.ll.lock'.

    4. Are there any breaking changes?(Y/N) and describe the breaking changes(e.g. more details, motivations or doc link):

    • [x] N
    • [ ] Y

    5. Are there test cases for these changes?(Y/N) select and add more details, references or doc links:

    • [x] Unit test
    • [ ] Integration test
    • [ ] Benchmark (add benchmark stats below)
    • [ ] Manual test (add detailed scripts or steps below)
    • [ ] Other

    6. Release note

    Please refer to Release Notes Language Style Guide to write a quality release note.

    None
    
    bug fix 
    opened by zong-zhe 3
  • Feat(compiler_base):add codecov for compiler_base in CI.

    Feat(compiler_base):add codecov for compiler_base in CI.

    1. Does this PR affect any open issues?(Y/N) and add issue references (e.g. "fix #123", "re #123".):

    • [ ] N
    • [x] Y

    issue #115

    2. What is the scope of this PR (e.g. component or file name):

    compiler_base

    3. Provide a description of the PR(e.g. more details, effects, motivations or doc link):

    • [ ] Affects user behaviors
    • [ ] Contains syntax changes
    • [ ] Contains variable changes
    • [x] Contains experimental features
    • [ ] Performance regression: Consumes more CPU
    • [ ] Performance regression: Consumes more Memory
    • [ ] Other

    add codecov for compiler_base in CI.

    4. Are there any breaking changes?(Y/N) and describe the breaking changes(e.g. more details, motivations or doc link):

    • [x] N
    • [ ] Y

    5. Are there test cases for these changes?(Y/N) select and add more details, references or doc links:

    • [ ] Unit test
    • [ ] Integration test
    • [ ] Benchmark (add benchmark stats below)
    • [ ] Manual test (add detailed scripts or steps below)
    • [x] Other

    6. Release note

    Please refer to Release Notes Language Style Guide to write a quality release note.

    None
    
    enhancement feat ci 
    opened by zong-zhe 3
  • ld error on the latest macOS version 12.6

    ld error on the latest macOS version 12.6

    Bug Report

    KCLVM runs with the error stderr: ld: warning: -undefined dynamic_lookup may not work with chained fixups on the latest macOS version 12.6 (including m1 and non-m1).

    KCLVM version: v0.4.3

    linker 
    opened by Peefy 3
  • feat: add docker image CD in github actions and format all action YAML files.

    feat: add docker image CD in github actions and format all action YAML files.

    …L files.

    1. Does this PR affect any open issues?(Y/N) and add issue references (e.g. "fix #123", "re #123".):

    • [x] N
    • [ ] Y

    feat: add docker image CD in github actions and format all action YAML files.

    2. What is the scope of this PR (e.g. component or file name):

    3. Provide a description of the PR(e.g. more details, effects, motivations or doc link):

    • [ ] Affects user behaviors
    • [ ] Contains syntax changes
    • [ ] Contains variable changes
    • [ ] Contains experimental features
    • [ ] Performance regression: Consumes more CPU
    • [ ] Performance regression: Consumes more Memory
    • [x] Other

    4. Are there any breaking changes?(Y/N) and describe the breaking changes(e.g. more details, motivations or doc link):

    • [x] N
    • [ ] Y

    5. Are there test cases for these changes?(Y/N) select and add more details, references or doc links:

    • [ ] Unit test
    • [ ] Integration test
    • [ ] Benchmark (add benchmark stats below)
    • [ ] Manual test (add detailed scripts or steps below)
    • [x] Other

    6. Release note

    Please refer to Release Notes Language Style Guide to write a quality release note.

    None
    
    release 
    opened by Peefy 1
  • [Feature] KCL config entry value supports mutual reference

    [Feature] KCL config entry value supports mutual reference

    Feature Request

    KCL config entry value supports mutual reference

    Example

    I have a KCL project like this:

    • main.k
    config = {
        name = "my-name"
        metadata.name = name # `name` can be referenced from `config.name` directly
    }
    

    Run the command:

    kclvm_cli run a.k
    

    I can get the YAML output:

    config:
      name: my-name
      metadata:
        name: my-name
    
    semantic 
    opened by Peefy 0
  • [Feature] KCL import package supports changing horizontal bar to underline

    [Feature] KCL import package supports changing horizontal bar to underline

    Feature Request

    KCL import package supports changing horizontal bar to underline.

    Example

    I have a KCL project like this:

    .
    ├── main.k
    └── my-package
        └── pkg.k
    
    • pkg.k
    a = 1
    
    • main.k
    import my_package # Package supports changing horizontal bar to underline
    
    a = my_package.a
    

    Run the command:

    kclvm_cli run a.k
    

    I can get the YAML output:

    a: 1
    
    resolver 
    opened by Peefy 0
  • IntelliJ plugin

    IntelliJ plugin

    Feature Request

    Is your feature request related to a problem? Please describe: In order to develop KCL based configurations more efficiently, I'd like to have autocompletion and building integrated into my IDE. In addition, I'd like to be able to immediately review errors so I can fix them. Right now, developing KCL configurations using a text editor is error-prone to typos and schema validation failures which will only be reported after using the KCL compiler from the terminal.

    Describe the feature you'd like: I'd like to have an IntelliJ plugin I can install and use for development of KCL based projects.

    Describe alternatives you've considered: I use IntelliJ but a plugin for VSCode will also be useful.

    Teachability, Documentation, Adoption, Migration Strategy: Users would install the KCL plugin and be able to build KCL projects from IntelliJ.

    ide 
    opened by thedrow 1
  • Feat(kclvm-win): Before calling the python version of kclvm in kcl.go check if kclvm is installed.

    Feat(kclvm-win): Before calling the python version of kclvm in kcl.go check if kclvm is installed.

    1. Does this PR affect any open issues?(Y/N) and add issue references (e.g. "fix #123", "re #123".):

    • [ ] N
    • [x] Y

    issue #357

    2. What is the scope of this PR (e.g. component or file name):

    kclvm windows.

    3. Provide a description of the PR(e.g. more details, effects, motivations or doc link):

    • [x] Affects user behaviors
    • [ ] Contains syntax changes
    • [ ] Contains variable changes
    • [ ] Contains experimental features
    • [ ] Performance regression: Consumes more CPU
    • [ ] Performance regression: Consumes more Memory
    • [ ] Other

    Before calling the python version of kclvm in kcl.go check if kclvm is installed. If it is not installed, call pip to install it.

    4. Are there any breaking changes?(Y/N) and describe the breaking changes(e.g. more details, motivations or doc link):

    • [x] N
    • [ ] Y

    5. Are there test cases for these changes?(Y/N) select and add more details, references or doc links:

    • [ ] Unit test
    • [ ] Integration test
    • [ ] Benchmark (add benchmark stats below)
    • [ ] Manual test (add detailed scripts or steps below)
    • [x] Other

    6. Release note

    Please refer to Release Notes Language Style Guide to write a quality release note.

    None
    
    release windows 
    opened by zong-zhe 1
Releases(v0.4.4-beta.1)
Owner
KusionStack
A Unified Programmable Configuration Tech Stack
KusionStack
🌽 A simple and pain-free configuration language.

?? Corn A simple and pain-free configuration language. Corn has been designed using inspiration from JSON and Nix to produce a language that's easy an

Jake Stanger 3 Nov 28, 2022
Zap - A simple cross-platform configuration management and orchestration tool

Zap - A simple cross-platform orchestration and configuration management tool. The main goal for Zap is to a simple mechanism for managing groups of com

R. Tyler Croy 50 Oct 29, 2022
Just-config is a configuration library for rust

Config Library for Rust Just-config is a configuration library for rust. It strives for the old Unix mantra "Do one thing and to it well".

FlashSystems 7 Apr 15, 2022
Uclicious is a flexible reduced boilerplate configuration framework.

Uclicious What is Uclicious Usage Raw API Derive-driven Validators Type Mapping Supported attributes (#[ucl(..)]) Structure level Field level Addition

Andrey Cherkashin 14 Aug 12, 2022
A Rust library for processing application configuration easily

Configure me A Rust library for processing application configuration easily About This crate aims to help with reading configuration of application fr

Martin Habovštiak 48 Dec 18, 2022
⚙️ Layered configuration system for Rust applications (with strong support for 12-factor applications).

config-rs Layered configuration system for Rust applications (with strong support for 12-factor applications). Set defaults Set explicit values (to pr

Ryan Leckey 1.8k Jan 9, 2023
cfg-rs: A Configuration Library for Rust Applications

cfg-rs: A Configuration Library for Rust Applications Major Features One method to get all config objects, see get. Automatic derive config object, se

Daniel YU 20 Dec 16, 2022
Next-GEN Confguration Template Generation Language

Sap lang yet another configuration oriented language name comes from Sapphire which is the birthstone of september Language Feature the last expr of t

LemonHX 12 Aug 8, 2022
Next-GEN Confguration Template Generation Language

Sap lang yet another configuration oriented language name comes from Sapphire which is the birthstone of september Language Feature the last expr of t

Sap-Lang 12 Aug 8, 2022
[Proof of Concept] Embedded functional scripting language with YAML ¯\_(ツ)_/¯

[YAML, fun] Just an experimental project implementing embedded functional scripting language based on YAML syntax. API docs for the standard library:

Arijit Basu 12 Aug 15, 2022
H2O Open Source Kubernetes operator and a command-line tool to ease deployment (and undeployment) of H2O open-source machine learning platform H2O-3 to Kubernetes.

H2O Kubernetes Repository with official tools to aid the deployment of H2O Machine Learning platform to Kubernetes. There are two essential tools to b

H2O.ai 16 Nov 12, 2022
Elemental System Designs is an open source project to document system architecture design of popular apps and open source projects that we want to study

Elemental System Designs is an open source project to document system architecture design of popular apps and open source projects that we want to study

Jason Shin 9 Apr 10, 2022
Open Source Application Stack & PaaS

mycelia Open Source Application Stack & PaaS Installation cargo xtask build NOTE: We opted for cargo-xtask because Cargo build.rs is not supported for

Mycelia 3 Sep 6, 2023
An open-source reimplementation of the Horizon microkernel used in the Nintendo Switch.

Saturnus An open-source reimplementation of the modern RTOS microkernel "HorizonKernel" that is used in the Nintendo Switch. About The original Horizo

Valentin B. 41 Sep 5, 2022
An open-source emulator for small OLED displays that are often used for Arduino/IOT projects.

SSD1306 OLED Emulator An open-source emulator for small OLED displays that are often used for Arduino/IOT projects. This project is still in an alpha

Sam Peach 21 Oct 23, 2022
ANISE provides an open-source and open-governed library and algorithmic specification for most computations for astrodynamics

ANISE provides an open-source and open-governed library and algorithmic specification for most computations for astrodynamics. It is heavily inspired by NAIF SPICE, and may be considered as an open-source modern rewrite of SPICE.

ANISE 4 Mar 9, 2022
Open Protocol Indexer, OPI, is the best-in-slot open-source indexing client for meta-protocols on Bitcoin.

OPI - Open Protocol Indexer Open Protocol Indexer, OPI, is the best-in-slot open-source indexing client for meta-protocols on Bitcoin. OPI uses a fork

Best in Slot 33 Dec 16, 2023
Stack buffer provides alternatives to Buf{Reader,Writer} allocated on the stack instead of the heap.

StackBuf{Reader,Writer} Stack buffer provides alternatives to BufReader and BufWriter allocated on the stack instead of the heap. Its implementation i

Alex Saveau 14 Nov 20, 2022
The most primitive and the fastest implementation of a fixed-size last-in-first-out stack on stack in Rust, for Copy-implementing types

This is the simplest and the fastest (faster than Vec!) implementation of a last-in-first-out stack data structure, on stack, when stack elements are

Yegor Bugayenko 10 Jun 18, 2023
Cork is a simple command-line calculator, mainly targeted towards people who deal with hex numbers

Cork is a simple command-line calculator, mainly targeted towards people who deal with hex numbers. It deals only with integer arithmetic. Expressions may involve mixed bases (limited to decimal, hexadecimal, octal and binary numbers). The global output format may be set to a particular radix - by default it is hex.

Deep Majumder 50 Dec 22, 2022