Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

KCL Validation tool (Rust ver.) #67

Closed
zong-zhe opened this issue May 31, 2022 · 1 comment · Fixed by #71
Closed

KCL Validation tool (Rust ver.) #67

zong-zhe opened this issue May 31, 2022 · 1 comment · Fixed by #71
Assignees
Labels
enhancement New feature or request feat tool Issues or PRs related to kcl tools inlucding format, lint, validation, document tools, etc.

Comments

@zong-zhe
Copy link
Contributor

zong-zhe commented May 31, 2022

Enhancement

According to the content in the Roadmap #29 , use Rust to rewrite the KCL validation tool.

@zong-zhe zong-zhe added enhancement New feature or request tool Issues or PRs related to kcl tools inlucding format, lint, validation, document tools, etc. feat labels May 31, 2022
@zong-zhe zong-zhe added this to the v0.4.3 Release milestone May 31, 2022
@zong-zhe zong-zhe self-assigned this May 31, 2022
zong-zhe pushed a commit that referenced this issue Jun 1, 2022
…nd executing in kclvm-runner

Encapsulate ast resolving, dylibs generating and executing in kclvm/lib.rs into
kclvm-runner/eval.rs. Add struct "Evaluator" in kclvm-runner/eval.rs to provide methods for ast
resolving, dylibs generating and executing. The main purpose of separating the three parts from
kclvm/lib.rs and encapsulating them intokclvm-runner is to support reuse.

fix #67
zong-zhe pushed a commit that referenced this issue Jun 1, 2022
…nd executing in kclvm-runner

Encapsulate ast resolving, dylibs generating and executing in kclvm/lib.rs into
kclvm-runner/eval.rs. Add struct "Evaluator" in kclvm-runner/eval.rs to provide methods for ast
resolving, dylibs generating and executing. The main purpose of separating the three parts from
kclvm/lib.rs and encapsulating them intokclvm-runner is to support reuse.

fix #67
zong-zhe pushed a commit that referenced this issue Jun 2, 2022
…cuting in kclvm/lib.rs into kclvm-runner

Encapsulate dylibs generating and executing in kclvm/lib.rs into kclvm-runner.
Add struct "KclvmAssembler" in kclvm-runner/runner.rs to provide method "gen_dylibs" for dylibs generating.
Add struct "KclvmLinker" in kclvm-runner/runner.rs to provide method "link_all_dylibs" for dylib linking.
Add method "execute" in kclvm-runner/lib.rs to encapsulate dylibs generating(gen_dylib), dylib linking(link_all_dylib) and running(runner.run) together
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.

fix #67
zong-zhe pushed a commit that referenced this issue Jun 2, 2022
…cuting in kclvm/lib.rs into kclvm-runner

Encapsulate dylibs generating and executing in kclvm/lib.rs into kclvm-runner.
Add struct "KclvmAssembler" in kclvm-runner/runner.rs to provide method "gen_dylibs" for dylibs generating.
Add struct "KclvmLinker" in kclvm-runner/runner.rs to provide method "link_all_dylibs" for dylib linking.
Add method "execute" in kclvm-runner/lib.rs to encapsulate dylibs generating(gen_dylib), dylib linking(link_all_dylib) and running(runner.run) together
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.

fix #67
zong-zhe pushed a commit that referenced this issue Jun 2, 2022
…cuting in kclvm/lib.rs into kclvm-runner

Encapsulate dylibs generating and executing in kclvm/lib.rs into kclvm-runner.
Add struct "KclvmAssembler" in kclvm-runner/runner.rs to provide method "gen_dylibs" for dylibs generating.
Add struct "KclvmLinker" in kclvm-runner/runner.rs to provide method "link_all_dylibs" for dylib linking.
Add method "execute" in kclvm-runner/lib.rs to encapsulate dylibs generating(gen_dylib), dylib linking(link_all_dylib) and running(runner.run) together
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.

fix #67
zong-zhe pushed a commit that referenced this issue Jun 6, 2022
…cuting in kclvm/lib.rs into kclvm-runner

The assembler and linker of the current version of the compiler are not separately packaged.
In order to support the reuse of modules such as dylibs generating,linking and executing,
This modification separates dylibs generating,and encapsulate them individually into KclvmAssembler and KclvmLinker.

Encapsulate dylibs generating, linking and executing into kclvm-runner/assembler.rs and kclvm-runner/linker.rs.
Add struct "KclvmAssembler" in kclvm-runner/assembler.rs to provide method "gen_dylibs" for dylibs generating.
Add struct "KclvmLinker" in kclvm-runner/linker.rs to provide method "link_all_dylibs" for dylib linking.
Add method "execute" in kclvm-runner/lib.rs to encapsulate dylibs generating(gen_dylib), dylib linking(link_all_dylib) and running(runner.run) together.

fix #67
zong-zhe pushed a commit that referenced this issue Jun 6, 2022
…cuting in kclvm/lib.rs into kclvm-runner

The assembler and linker of the current version of the compiler are not separately packaged.
In order to support the reuse of modules such as dylibs generating,linking and executing,
This modification separates dylibs generating,and encapsulate them individually into KclvmAssembler and KclvmLinker.

Encapsulate dylibs generating, linking and executing into kclvm-runner/assembler.rs and kclvm-runner/linker.rs.
Add struct "KclvmAssembler" in kclvm-runner/assembler.rs to provide method "gen_dylibs" for dylibs generating.
Add struct "KclvmLinker" in kclvm-runner/linker.rs to provide method "link_all_dylibs" for dylib linking.
Add method "execute" in kclvm-runner/lib.rs to encapsulate dylibs generating(gen_dylib), dylib linking(link_all_dylib) and running(runner.run) together.

fix #67
zong-zhe pushed a commit that referenced this issue Jun 7, 2022
  1. Encapsulated method "emit_code" into "lock_ll_file_and_gen_dylib" to
     reduce repetitive code in kclvm-runner/KclvmAssembler.gen_dylibs().
  2. In order to support reuse and simplify the structure of Method "gen_dylibs()",
     encapsulates some operations of cleaning file paths.
  3. Due to issue #79, some test cases are temporarily commented out

  fix #67
zong-zhe pushed a commit that referenced this issue Jun 7, 2022
  1. Encapsulated method "emit_code" into "lock_ll_file_and_gen_dylib" to
     reduce repetitive code in kclvm-runner/KclvmAssembler.gen_dylibs().
  2. In order to support reuse and simplify the structure of Method "gen_dylibs()",
     encapsulates some operations of cleaning file paths.
  3. Due to issue #79, some test cases are temporarily commented out

  fix #67
zong-zhe pushed a commit that referenced this issue Jun 10, 2022
  1. Encapsulated method "emit_code" into "lock_ll_file_and_gen_dylib" to
     reduce repetitive code in kclvm-runner/KclvmAssembler.gen_dylibs().
  2. In order to support reuse and simplify the structure of Method "gen_dylibs()",
     encapsulates some operations of cleaning file paths.
  3. Due to issue #79, some test cases are temporarily commented out

  fix #67

  refactor(kclvm-runner): decouping assembler and llvm.

  1. Decoupling the assembler and llvm.
  2. The assembling LLVM IR into a dynamic link library is encapsulated into "LlvmLibAssembler" separately.
  3. 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.
  4. 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.
, 5. "KclvmAssembler" is responsible for the concurrent compilation of multiple kcl files.
  6. "KclvmAssembler" will call the method in "KclvmLibAssembler" to generate a dynamic link library
     for a single kcl file in each thread of concurrent compilation.

  fix #67
zong-zhe pushed a commit that referenced this issue Jun 10, 2022
  1. Encapsulated method "emit_code" into "lock_ll_file_and_gen_dylib" to
     reduce repetitive code in kclvm-runner/KclvmAssembler.gen_dylibs().
  2. In order to support reuse and simplify the structure of Method "gen_dylibs()",
     encapsulates some operations of cleaning file paths.
  3. Due to issue #79, some test cases are temporarily commented out

  fix #67

  refactor(kclvm-runner): decouping assembler and llvm.

  1. Decoupling the assembler and llvm.
  2. The assembling LLVM IR into a dynamic link library is encapsulated into "LlvmLibAssembler" separately.
  3. 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.
  4. 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.
, 5. "KclvmAssembler" is responsible for the concurrent compilation of multiple kcl files.
  6. "KclvmAssembler" will call the method in "KclvmLibAssembler" to generate a dynamic link library
     for a single kcl file in each thread of concurrent compilation.

  fix #67
Peefy added a commit that referenced this issue Jun 13, 2022
      1. Encapsulated method "emit_code" into "lock_ll_file_and_gen_dylib" to
         reduce repetitive code in kclvm-runner/KclvmAssembler.gen_dylibs().
      2. In order to support reuse and simplify the structure of Method "gen_dylibs()",
         encapsulates some operations of cleaning file paths.
      3. Due to issue #79, some test cases are temporarily commented out

      fix #67

      refactor(kclvm-runner): decouping assembler and llvm.

      1. Decoupling the assembler and llvm.
      2. The assembling LLVM IR into a dynamic link library is encapsulated into "LlvmLibAssembler" separately.
      3. 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.
      4. 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.
    , 5. "KclvmAssembler" is responsible for the concurrent compilation of multiple kcl files.
      6. "KclvmAssembler" will call the method in "KclvmLibAssembler" to generate a dynamic link library
         for a single kcl file in each thread of concurrent compilation.

      fix #67
Peefy added a commit that referenced this issue Jun 13, 2022
      1. Encapsulated method "emit_code" into "lock_ll_file_and_gen_dylib" to
         reduce repetitive code in kclvm-runner/KclvmAssembler.gen_dylibs().
      2. In order to support reuse and simplify the structure of Method "gen_dylibs()",
         encapsulates some operations of cleaning file paths.
      3. Due to issue #79, some test cases are temporarily commented out

      fix #67

      refactor(kclvm-runner): decouping assembler and llvm.

      1. Decoupling the assembler and llvm.
      2. The assembling LLVM IR into a dynamic link library is encapsulated into "LlvmLibAssembler" separately.
      3. 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.
      4. 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.
    , 5. "KclvmAssembler" is responsible for the concurrent compilation of multiple kcl files.
      6. "KclvmAssembler" will call the method in "KclvmLibAssembler" to generate a dynamic link library
         for a single kcl file in each thread of concurrent compilation.

      fix #67
Peefy added a commit that referenced this issue Jun 14, 2022
1. Encapsulated method "emit_code" into "lock_ll_file_and_gen_dylib" to
   reduce repetitive code in kclvm-runner/KclvmAssembler.gen_dylibs().
2. In order to support reuse and simplify the structure of Method "gen_dylibs()",
   encapsulates some operations of cleaning file paths.
3. Due to issue #79, some test cases are temporarily commented out

fix #67

refactor(kclvm-runner): decouping assembler and llvm.

1. Decoupling the assembler and llvm.
2. The assembling LLVM IR into a dynamic link library is encapsulated into "LlvmLibAssembler" separately.
3. 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.
4. 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.
, 5. "KclvmAssembler" is responsible for the concurrent compilation of multiple kcl files.
6. "KclvmAssembler" will call the method in "KclvmLibAssembler" to generate a dynamic link library
   for a single kcl file in each thread of concurrent compilation.

fix #67
Peefy added a commit that referenced this issue Jun 15, 2022
    1. Encapsulated method "emit_code" into "lock_ll_file_and_gen_dylib" to
       reduce repetitive code in kclvm-runner/KclvmAssembler.gen_dylibs().
    2. In order to support reuse and simplify the structure of Method "gen_dylibs()",
       encapsulates some operations of cleaning file paths.
    3. Due to issue #79, some test cases are temporarily commented out
    2. In order to support reuse and simplify the structure of Method "gen_dylibs()",
       encapsulates some operations of cleaning file paths.
    3. Due to issue #79, some test cases are temporarily commented out

    fix #67

    refactor(kclvm-runner): decouping assembler and llvm.

    1. Decoupling the assembler and llvm.
    2. The assembling LLVM IR into a dynamic link library is encapsulated into "LlvmLibAssembler" separately.
    3. 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.
    4. 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.
    , 5. "KclvmAssembler" is responsible for the concurrent compilation of multiple kcl files.
    6. "KclvmAssembler" will call the method in "KclvmLibAssembler" to generate a dynamic link library
       for a single kcl file in each thread of concurrent compilation.

    fix #67
Peefy added a commit that referenced this issue Jun 15, 2022
        1. Encapsulated method "emit_code" into "lock_ll_file_and_gen_dylib" to
           reduce repetitive code in kclvm-runner/KclvmAssembler.gen_dylibs().
        2. In order to support reuse and simplify the structure of Method "gen_dylibs()",
           encapsulates some operations of cleaning file paths.
        3. Due to issue #79, some test cases are temporarily commented out
        2. In order to support reuse and simplify the structure of Method "gen_dylibs()",
           encapsulates some operations of cleaning file paths.
        3. Due to issue #79, some test cases are temporarily commented out

        fix #67

        refactor(kclvm-runner): decouping assembler and llvm.

        1. Decoupling the assembler and llvm.
        2. The assembling LLVM IR into a dynamic link library is encapsulated into "LlvmLibAssembler" separately.
        3. 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.
        4. 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.
        , 5. "KclvmAssembler" is responsible for the concurrent compilation of multiple kcl files.
        6. "KclvmAssembler" will call the method in "KclvmLibAssembler" to generate a dynamic link library
           for a single kcl file in each thread of concurrent compilation.

        fix #67
Peefy added a commit that referenced this issue Jun 16, 2022
            1. Encapsulated method "emit_code" into "lock_ll_file_and_gen_dylib" to
               reduce repetitive code in kclvm-runner/KclvmAssembler.gen_dylibs().
            2. In order to support reuse and simplify the structure of Method "gen_dylibs()",
               encapsulates some operations of cleaning file paths.
            3. Due to issue #79, some test cases are temporarily commented out
            2. In order to support reuse and simplify the structure of Method "gen_dylibs()",
               encapsulates some operations of cleaning file paths.
            3. Due to issue #79, some test cases are temporarily commented out

            fix #67

            refactor(kclvm-runner): decouping assembler and llvm.

            1. Decoupling the assembler and llvm.
            2. The assembling LLVM IR into a dynamic link library is encapsulated into "LlvmLibAssembler" separately.
            3. 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.
            4. 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.
            , 5. "KclvmAssembler" is responsible for the concurrent compilation of multiple kcl files.
            6. "KclvmAssembler" will call the method in "KclvmLibAssembler" to generate a dynamic link library
               for a single kcl file in each thread of concurrent compilation.

            fix #67
Peefy added a commit that referenced this issue Jun 20, 2022
                1. Encapsulated method "emit_code" into "lock_ll_file_and_gen_dylib" to
                   reduce repetitive code in kclvm-runner/KclvmAssembler.gen_dylibs().
                2. In order to support reuse and simplify the structure of Method "gen_dylibs()",
                   encapsulates some operations of cleaning file paths.
                3. Due to issue #79, some test cases are temporarily commented out
                2. In order to support reuse and simplify the structure of Method "gen_dylibs()",
                   encapsulates some operations of cleaning file paths.
                3. Due to issue #79, some test cases are temporarily commented out

                fix #67

                refactor(kclvm-runner): decouping assembler and llvm.

                1. Decoupling the assembler and llvm.
                2. The assembling LLVM IR into a dynamic link library is encapsulated into "LlvmLibAssembler" separately.
                3. 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.
                4. 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.
                , 5. "KclvmAssembler" is responsible for the concurrent compilation of multiple kcl files.
                6. "KclvmAssembler" will call the method in "KclvmLibAssembler" to generate a dynamic link library
                   for a single kcl file in each thread of concurrent compilation.

                fix #67
Peefy added a commit that referenced this issue Jun 20, 2022
                    1. Encapsulated method "emit_code" into "lock_ll_file_and_gen_dylib" to
                       reduce repetitive code in kclvm-runner/KclvmAssembler.gen_dylibs().
                    2. In order to support reuse and simplify the structure of Method "gen_dylibs()",
                       encapsulates some operations of cleaning file paths.
                    3. Due to issue #79, some test cases are temporarily commented out
                    2. In order to support reuse and simplify the structure of Method "gen_dylibs()",
                       encapsulates some operations of cleaning file paths.
                    3. Due to issue #79, some test cases are temporarily commented out

                    fix #67

                    refactor(kclvm-runner): decouping assembler and llvm.

                    1. Decoupling the assembler and llvm.
                    2. The assembling LLVM IR into a dynamic link library is encapsulated into "LlvmLibAssembler" separately.
                    3. 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.
                    4. 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.
                    , 5. "KclvmAssembler" is responsible for the concurrent compilation of multiple kcl files.
                    6. "KclvmAssembler" will call the method in "KclvmLibAssembler" to generate a dynamic link library
                       for a single kcl file in each thread of concurrent compilation.

                    fix #67
zong-zhe pushed a commit that referenced this issue Jul 8, 2022
…ting into kclvm-runner.

1. Encapsulate generating of libs  in "kclvm/src/lib.rs" and "kclvm/src/main.rs"  into "kclvm/runner/assembler.rs".
2. Encapsulate linking of libs in "kclvm/src/lib.rs" and "kclvm/src/main.rs" into "kclvm/runner/linker.rs"
3. Encapsulate executing of libs  in "kclvm/src/lib.rs" and "kclvm/src/main.rs" into "kclvm/runner/lib.rs".
4. A timer is added during the concurrent multi-file compilation to prevent KCLVM locked due to child thread panic.

fix #67 #106 #82
zong-zhe pushed a commit that referenced this issue Jul 11, 2022
…ting into kclvm-runner.

1. Encapsulate generating of libs  in "kclvm/src/lib.rs" and "kclvm/src/main.rs"  into "kclvm/runner/assembler.rs".
2. Encapsulate linking of libs in "kclvm/src/lib.rs" and "kclvm/src/main.rs" into "kclvm/runner/linker.rs"
3. Encapsulate executing of libs  in "kclvm/src/lib.rs" and "kclvm/src/main.rs" into "kclvm/runner/lib.rs".
4. A timer is added during the concurrent multi-file compilation to prevent KCLVM locked due to child thread panic.

fix #67 #106 #82
@Peefy Peefy closed this as completed in #71 Jul 11, 2022
Peefy added a commit that referenced this issue Jul 11, 2022
…cuting in kclvm/lib.rs into kclvm-runner (#71)

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

The assembler and linker of the current version of the compiler are not separately packaged.
In order to support the reuse of modules such as dylibs generating,linking and executing,
This modification separates dylibs generating,and encapsulate them individually into KclvmAssembler and KclvmLinker.

Encapsulate dylibs generating, linking and executing into kclvm-runner/assembler.rs and kclvm-runner/linker.rs.
Add struct "KclvmAssembler" in kclvm-runner/assembler.rs to provide method "gen_dylibs" for dylibs generating.
Add struct "KclvmLinker" in kclvm-runner/linker.rs to provide method "link_all_dylibs" for dylib linking.
Add method "execute" in kclvm-runner/lib.rs to encapsulate dylibs generating(gen_dylib), dylib linking(link_all_dylib) and running(runner.run) together.

fix #67

* chore:  bump plugins submodule to 23fc581d (#64)

* refactor(kclvm-runner): merge main and refacor kclvm-runner.

                    1. Encapsulated method "emit_code" into "lock_ll_file_and_gen_dylib" to
                       reduce repetitive code in kclvm-runner/KclvmAssembler.gen_dylibs().
                    2. In order to support reuse and simplify the structure of Method "gen_dylibs()",
                       encapsulates some operations of cleaning file paths.
                    3. Due to issue #79, some test cases are temporarily commented out
                    2. In order to support reuse and simplify the structure of Method "gen_dylibs()",
                       encapsulates some operations of cleaning file paths.
                    3. Due to issue #79, some test cases are temporarily commented out

                    fix #67

                    refactor(kclvm-runner): decouping assembler and llvm.

                    1. Decoupling the assembler and llvm.
                    2. The assembling LLVM IR into a dynamic link library is encapsulated into "LlvmLibAssembler" separately.
                    3. 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.
                    4. 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.
                    , 5. "KclvmAssembler" is responsible for the concurrent compilation of multiple kcl files.
                    6. "KclvmAssembler" will call the method in "KclvmLibAssembler" to generate a dynamic link library
                       for a single kcl file in each thread of concurrent compilation.

                    fix #67

* Merge branch 'main' into refactor/zong-zhe/add_eval_to_kclvm_runner

* add kclvm path in ci for ubuntu

* refactor(kclvm-runner): encapsulate lib generating, linking and executing into kclvm-runner.

1. Encapsulate generating of libs  in "kclvm/src/lib.rs" and "kclvm/src/main.rs"  into "kclvm/runner/assembler.rs".
2. Encapsulate linking of libs in "kclvm/src/lib.rs" and "kclvm/src/main.rs" into "kclvm/runner/linker.rs"
3. Encapsulate executing of libs  in "kclvm/src/lib.rs" and "kclvm/src/main.rs" into "kclvm/runner/lib.rs".
4. A timer is added during the concurrent multi-file compilation to prevent KCLVM locked due to child thread panic.

fix #67 #106 #82

Co-authored-by: Peefy <xpf6677@163.com>
@zong-zhe
Copy link
Contributor Author

zong-zhe commented Sep 26, 2022

Peefy pushed a commit that referenced this issue Sep 27, 2022
* Feat(kclvm-tools): add json/yaml file loader for KCL-Vet.

add json/yaml file loader for KCL-Vet in kclvm/tools/util.

issue #67.

* add comments and remove useless struct

* add test_case for load()

* add invalid test cases

* add test case for invalid json/yaml

* fix test failed
zong-zhe added a commit that referenced this issue Oct 8, 2022
* add invalid test cases

* add test case for invalid json/yaml

* fix merge conflicts

* Feat(kcl-vet): add ast builder for kcl-vet.

add ast expr builder for kcl-vet from json/yaml Value.

issue #67

* add some comments

* add some more test cases

* add test cases for no schema name

* add test case for unsupported u64

* add test cases for yaml with tag

* rm useless test case
zong-zhe added a commit that referenced this issue Oct 9, 2022
…t'. (#228)

* refactor(kclvm-tools): move 'printer' from 'kclvm-tools' to 'kclvm-ast'.

move 'printer' from 'kclvm-tools' to 'kclvm-ast'

issue #67

* fmt

* mv query to ast_pretty

* remove useless dependencies

* add pretty_assertions
zong-zhe added a commit that referenced this issue Oct 9, 2022
* refactor(kclvm-tools): move 'printer' from 'kclvm-tools' to 'kclvm-ast'.

move 'printer' from 'kclvm-tools' to 'kclvm-ast'

issue #67

* fmt

* mv query to ast_pretty

* remove useless dependencies

* add pretty_assertions

* refactor(kclvm-tools): move 'query' out of 'kclvm-tools'.

move 'query' from 'kclvm-tools' to 'kclvm-query'.

issue #67.

* fix rebase conflicts

* remove useless imports

* fmt

* fix failed test cases
Peefy pushed a commit that referenced this issue Oct 10, 2022
…#230)

move 'schema_name' from struct to mathod generate.

issue #67
@Peefy Peefy closed this as completed Oct 9, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request feat tool Issues or PRs related to kcl tools inlucding format, lint, validation, document tools, etc.
Projects
None yet
2 participants