Skip to content

Commit

Permalink
refactor(kclvm-runner): encapsulate dylib generating, linking and exe…
Browse files Browse the repository at this point in the history
…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>
  • Loading branch information
zong-zhe and Peefy committed Jul 11, 2022
1 parent 8d20c6a commit 6f7ec98
Show file tree
Hide file tree
Showing 48 changed files with 1,571 additions and 592 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/github-actions.yaml
Expand Up @@ -35,7 +35,7 @@ jobs:
components: clippy, rustfmt
- name: Rust unit test
working-directory: ./kclvm
run: make codecov-lcov
run: export PATH=$PATH:$PWD/../_build/dist/ubuntu/kclvm/bin && make install-rustc-wasm && make && make codecov-lcov
shell: bash
- name: Coveralls upload
uses: coverallsapp/github-action@master
Expand Down
44 changes: 25 additions & 19 deletions kclvm/Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 2 additions & 2 deletions kclvm/config/src/settings.rs
Expand Up @@ -58,8 +58,8 @@ impl Default for SettingsFile {

#[derive(Serialize, Deserialize, Debug, Clone)]
pub struct KeyValuePair {
key: String,
value: String,
pub key: String,
pub value: String,
}

#[derive(Serialize, Deserialize, Debug, Clone)]
Expand Down

0 comments on commit 6f7ec98

Please sign in to comment.