diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md new file mode 100644 index 0000000..2d3e38a --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -0,0 +1,39 @@ +--- +name: Bug report +about: Use this template for reporting issues +title: '' +labels: bug +assignees: '' +--- + +### πŸ› Bug Report + +#### πŸ“ Description + +Provide a clear and concise description of the bug. + +#### πŸ”„ Reproduction Steps + +Steps to reproduce the behaviour + +#### πŸ€” Expected Behavior + +Describe what you expected to happen. + +#### 😯 Current Behavior + +Describe what actually happened. + +#### πŸ–₯️ Environment + +Any relevant environment details. + +#### πŸ“‹ Additional Context + +Add any other context about the problem here. If applicable, add screenshots to help explain. + +#### πŸ“Ž Log Output + +``` +Paste any relevant log output here. +``` diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md new file mode 100644 index 0000000..d921e06 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature_request.md @@ -0,0 +1,21 @@ +--- +name: Feature request +about: Use this template for requesting features +title: '' +labels: feat +assignees: '' +--- + +### 🌟 Feature Request + +#### πŸ“ Description + +Provide a clear and concise description of the feature you'd like to see. + +#### πŸ€” Rationale + +Explain why this feature is important and how it benefits the project. + +#### πŸ“‹ Additional Context + +Add any other context or information about the feature request here. diff --git a/.github/actions/build-llvm/action.yml b/.github/actions/build-llvm/action.yml new file mode 100644 index 0000000..abab755 --- /dev/null +++ b/.github/actions/build-llvm/action.yml @@ -0,0 +1,112 @@ +# The general action to build ZKsync LLVM framework. +# It is universal for all platforms: Linux, MacOS and Windows. + +name: 'Build LLVM' +description: 'Builds backend LLVM framework' +inputs: + clone-llvm: + description: 'Whether to clone LLVM repository.' + required: false + default: 'true' + enable-tests: + description: "Enable tests." + required: false + default: 'false' + enable-assertions: + description: "Enable assertions." + required: false + default: 'true' + extra-args: + description: 'Extra CMake arguments to compile LLVM.' + required: false + default: '' + builder-extra-args: + description: 'Extra LLVM builder arguments to compile LLVM.' + required: false + default: '' + build-type: + description: 'LLVM build type: debug | release' + required: false + default: 'release' + target-env: + description: 'Target environment (gnu or musl).' + required: false + default: 'gnu' + llvm-builder-version: + description: 'Version of the LLVM builder to use.' + required: false + default: '1.0.25' + ccache-key: + description: 'Github Actions cache key for CCache.' + required: false + default: '' +runs: + using: "composite" + steps: + + # Ninja build tool is not available on MacOS x64 runners by default. See: + # https://github.com/actions/runner-images/issues/514 + - name: Install Ninja on MacOS x64 + if: runner.os == 'macOS' && runner.arch == 'X64' + shell: 'bash' + run: HOMEBREW_NO_AUTO_UPDATE=1 brew install ninja + + - name: Install LLVM builder + shell: ${{ runner.os == 'Windows' && 'msys2 {0}' || 'bash' }} + run: cargo install compiler-llvm-builder@${{ inputs.llvm-builder-version }} + + - name: Clone LLVM framework + if: inputs.clone-llvm == 'true' + shell: ${{ runner.os == 'Windows' && 'msys2 {0}' || 'bash' }} + run: zksync-llvm clone --target-env ${{ inputs.target-env }} + + - name: Define ccache key + if: inputs.ccache-key == '' + shell: ${{ runner.os == 'Windows' && 'msys2 {0}' || 'bash' }} + id: ccache-key + run: | + LLVM_BRANCH="$(git -C ./llvm rev-parse --abbrev-ref HEAD)" + LLVM_SHORT_SHA="$(git -C ./llvm rev-parse --short HEAD)" + echo "key=llvm-${LLVM_BRANCH}-${LLVM_SHORT_SHA}-${{ runner.os }}-${{ runner.arch }}" | tee -a "${GITHUB_OUTPUT}" + + # CCache action requires `apt update` + # to be executed before it for Linux Docker jobs. See: + # https://github.com/hendrikmuhs/ccache-action?tab=readme-ov-file#usage + - name: Prepare ccache installation + if: runner.os == 'Linux' + shell: 'bash' + run: apt update + + - name: Set up compiler cache + uses: hendrikmuhs/ccache-action@v1.2 + env: + CCACHE_BASEDIR: ${{ github.workspace }} + CCACHE_NOHASHDIR: "true" + CCACHE_COMPILERCHECK: "content" + with: + key: ${{ inputs.ccache-key == '' && steps.ccache-key.outputs.key || inputs.ccache-key }} + restore-keys: ${{ inputs.ccache-key == '' && steps.ccache-key.outputs.key || inputs.ccache-key }} + append-timestamp: false + max-size: "2G" + verbose: 2 + save: true # ${{ github.event_name == 'push' && !startsWith(github.ref, 'refs/tags/') }} + + # CCACHE_BASEDIR, CCACHE_NOHASHDIR, and CCACHE_COMPILERCHECK + # are allowing to cache compiler output across different + # directories and compiler versions. See: + # https://ccache.dev/manual/3.7.12.html#_compiling_in_different_directories + - name: Build LLVM + shell: ${{ runner.os == 'Windows' && 'msys2 {0}' || 'bash' }} + env: + CCACHE_BASEDIR: ${{ github.workspace }} + CCACHE_NOHASHDIR: "true" + CCACHE_COMPILERCHECK: "content" + LIBSTDCPP_SOURCE_PATH: "C:/a/_temp/msys64/mingw64/lib/libstdc++.a" + run: | + set -x + [ "${{ inputs.build-type }}" = "debug" ] && DEBUG_ARG="--debug" + [ "${{ inputs.enable-tests }}" = "true" ] && ENABLE_TESTS="--enable-tests" + [ "${{ inputs.enable-assertions }}" = "true" ] && ENABLE_ASSERTIONS="--enable-assertions" + [ "${{ inputs.extra-args }}" != "" ] && EXTRA_ARGS="--extra-args ${{ inputs.extra-args }}" + zksync-llvm build --target-env ${{ inputs.target-env }} \ + --use-ccache ${{ inputs.builder-extra-args }} ${DEBUG_ARG} ${ENABLE_TESTS} ${ENABLE_ASSERTIONS} ${EXTRA_ARGS} diff --git a/.github/actions/prepare-msys/action.yml b/.github/actions/prepare-msys/action.yml new file mode 100644 index 0000000..8c1e878 --- /dev/null +++ b/.github/actions/prepare-msys/action.yml @@ -0,0 +1,23 @@ +name: 'Install msys2' +description: 'Prepares msys2 for Windows builds.' +runs: + using: composite + steps: + - name: Setup msys2 + uses: msys2/setup-msys2@v2 + with: + path-type: inherit # Important to correctly update PATH + install: >- + base-devel + git + ninja + mingw-w64-x86_64-clang + mingw-w64-x86_64-lld + mingw-w64-x86_64-rust + mingw-w64-x86_64-cmake + mingw-w64-x86_64-gcc + mingw-w64-x86_64-gcc-libs + + - name: Prepare env + shell: 'msys2 {0}' + run: echo "/c/Users/runneradmin/.cargo/bin" >> "${GITHUB_PATH}" diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md new file mode 100644 index 0000000..11e3237 --- /dev/null +++ b/.github/pull_request_template.md @@ -0,0 +1,18 @@ +# What ❔ + + + + + +## Why ❔ + + + + +## Checklist + + + + +- [ ] PR title corresponds to the body of PR. +- [ ] Documentation comments have been added / updated. diff --git a/.github/workflows/benchmarks.yml b/.github/workflows/benchmarks.yml new file mode 100644 index 0000000..aa9e944 --- /dev/null +++ b/.github/workflows/benchmarks.yml @@ -0,0 +1,156 @@ +name: Benchmarks + +on: + workflow_call: + inputs: + llvm_build_type: + type: string + description: "LLVM build type: debug | release" + required: true + default: "release" + compiler_tester_reference_branch: + type: string + description: "compiler-tester branch to use as a benchmark reference" + required: true + default: "main" + compiler_tester_candidate_branch: + type: string + description: "compiler-tester branch to use as a benchmark candidate" + required: true + default: "main" + compiler_llvm_reference_branch: + type: string + description: "compiler-llvm branch to use as a benchmark reference" + required: true + default: "main" + compiler_llvm_candidate_branch: + type: string + description: "compiler-llvm branch to use as a benchmark candidate" + required: true + default: "main" + compiler_llvm_benchmark_mode: + type: string + description: "Mode filter for compiler-llvm benchmarks" + required: false + default: "^M^B3" + compiler_llvm_benchmark_path: + type: string + description: "Path filter for compiler-llvm benchmarks" + required: false + default: "" + + +concurrency: + group: ${{ github.repository_id }}-${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} + cancel-in-progress: true + +jobs: + benchmarks: + strategy: + fail-fast: false + matrix: + type: ["reference", "candidate"] + name: ${{ matrix.type }} + runs-on: matterlabs-ci-runner + container: + image: matterlabs/llvm_runner:ubuntu22-llvm17-latest + options: -m 110g + steps: + - name: Define branches + id: define-branches + run: | + if [ "${{ matrix.type }}" = "candidate" ]; then + echo "compiler-tester-branch=${{ inputs.compiler_tester_candidate_branch || github.head_ref }}" | tee -a "${GITHUB_OUTPUT}" + echo "llvm-branch=${{ inputs.compiler_llvm_candidate_branch || '' }}" | tee -a "${GITHUB_OUTPUT}" + else + echo "compiler-tester-branch=${{ inputs.compiler_tester_reference_branch || github.event.repository.default_branch }}" | tee -a "${GITHUB_OUTPUT}" + echo "llvm-branch=${{ inputs.compiler_llvm_reference_branch || '' }}" | tee -a "${GITHUB_OUTPUT}" + fi + + - name: Checkout compiler-tester + uses: actions/checkout@v4 + with: + repository: matter-labs/era-compiler-tester + ref: ${{ steps.define-branches.outputs.compiler-tester-branch }} + submodules: recursive + + - name: Checkout LLVM + if: steps.define-branches.outputs.llvm-branch != '' + uses: actions/checkout@v4 + with: + repository: matter-labs/era-compiler-llvm + ref: ${{ steps.define-branches.outputs.llvm-branch }} + path: llvm + + - name: Build LLVM + uses: matter-labs/era-compiler-ci/.github/actions/build-llvm@main + with: + clone-llvm: ${{ steps.define-branches.outputs.llvm-branch == '' && 'true' || 'false' }} + + - name: Build compiler-tester + run: cargo build --verbose --release --bin 'compiler-tester' + + - name: Build compilers + env: + CARGO_CHECKOUT_DIR: /usr/local/cargo/git/checkouts + run: | + cargo build --verbose --release \ + --manifest-path ${CARGO_CHECKOUT_DIR}/era-compiler-solidity-*/*/Cargo.toml \ + --target-dir './target-zksolc/' + cargo build --verbose --release \ + --manifest-path ${CARGO_CHECKOUT_DIR}/era-compiler-vyper-*/*/Cargo.toml \ + --target-dir './target-zkvyper/' + + - name: Run benchmarks + run: | + ./target/release/compiler-tester \ + --zksolc './target-zksolc/release/zksolc' \ + --zkvyper './target-zkvyper/release/zkvyper' \ + --path=${{ inputs.compiler_llvm_benchmark_path || '' }} \ + --mode=${{ inputs.compiler_llvm_benchmark_mode || '^M^B3' }} \ + --benchmark=${{ matrix.type }}.json + + - uses: actions/upload-artifact@v4 + with: + name: compiler-llvm-${{ matrix.type }}-benchmark + path: ${{ matrix.type }}.json + + analysis: + name: "Benchmark comparison" + runs-on: matterlabs-ci-runner + permissions: + pull-requests: write + container: + image: matterlabs/llvm_runner:ubuntu22-llvm17-latest + needs: benchmarks + steps: + - name: Checking out the compiler-tester repository + uses: actions/checkout@v4 + with: + repository: matter-labs/era-compiler-tester + ref: ${{ inputs.compiler_tester_candidate_branch || github.event.repository.default_branch }} + submodules: recursive + + - uses: actions/download-artifact@v4 + with: + pattern: compiler-llvm-* + merge-multiple: true + + - name: Comparing the LLVM framework benchmark results + run: | + cargo run --release --bin benchmark-analyzer -- \ + --reference reference.json --candidate candidate.json --output-file result.txt + + - name: Posting the LLVM benchmark results to the summary + run: | + printf "Benchmark results:\n" >> $GITHUB_STEP_SUMMARY + echo '```' >> $GITHUB_STEP_SUMMARY + cat result.txt >> $GITHUB_STEP_SUMMARY + echo '```' >> $GITHUB_STEP_SUMMARY + cat $GITHUB_STEP_SUMMARY > result.txt + + - name: Posting the LLVM benchmark results to a PR comment + if: github.event_name == 'pull_request' + uses: mshick/add-pr-comment@v2 + with: + message-path: result.txt diff --git a/.github/workflows/cargo-license.yaml b/.github/workflows/cargo-license.yaml new file mode 100644 index 0000000..5cd142b --- /dev/null +++ b/.github/workflows/cargo-license.yaml @@ -0,0 +1,14 @@ +name: Cargo license check + +on: workflow_call + +jobs: + cargo-deny: + runs-on: ubuntu-latest + steps: + + - name: Checkout code + uses: actions/checkout@v4 + + - name: Check licenses + uses: EmbarkStudios/cargo-deny-action@v1 diff --git a/.github/workflows/integration-tests.yaml b/.github/workflows/integration-tests.yaml new file mode 100644 index 0000000..e3ac316 --- /dev/null +++ b/.github/workflows/integration-tests.yaml @@ -0,0 +1,78 @@ +name: Integration Tests + +on: + workflow_call: + inputs: + compiler-tester-ref: + type: string + required: true + description: 'Compiler tester revision to use.' + llvm-ref: + type: string + required: true + description: 'LLVM revision to use.' + +concurrency: + group: ${{ github.repository_id }}-${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} + cancel-in-progress: true + +jobs: + run-integration-tests: + runs-on: ci-runner-compiler + timeout-minutes: 720 + container: + image: matterlabs/llvm_runner:ubuntu22-llvm17-latest + options: -m 110g + steps: + + - name: Checkout compiler-tester + uses: actions/checkout@v4 + with: + repository: matter-labs/era-compiler-tester + ref: ${{ inputs.compiler-tester-ref || '' }} + submodules: recursive + + - name: Checkout LLVM + if: inputs.llvm-ref != '' + uses: actions/checkout@v4 + with: + repository: matter-labs/era-compiler-llvm + ref: ${{ inputs.llvm-ref }} + path: llvm + + - name: Build LLVM + uses: matter-labs/era-compiler-ci/.github/actions/build-llvm@main + with: + extra-args: "\\-DLLVM_ENABLE_WERROR=On \\-DCMAKE_EXPORT_COMPILE_COMMANDS=ON" + enable-tests: true + enable-assertions: true + clone-llvm: ${{ inputs.llvm-ref == '' && 'true' || 'false' }} + + - name: Build compiler-tester + run: cargo build --verbose --release --bin 'compiler-tester' + + - name: Build compilers + env: + CARGO_CHECKOUT_DIR: /usr/local/cargo/git/checkouts + run: | + cargo build --verbose --release \ + --manifest-path ${CARGO_CHECKOUT_DIR}/era-compiler-solidity-*/*/Cargo.toml \ + --target-dir './target-zksolc/' + cargo build --verbose --release \ + --manifest-path ${CARGO_CHECKOUT_DIR}/era-compiler-vyper-*/*/Cargo.toml \ + --target-dir './target-zkvyper/' + + - name: Run integration tests + run: | + ./target/release/compiler-tester \ + --zksolc './target-zksolc/release/zksolc' \ + --zkvyper './target-zkvyper/release/zkvyper' + + - name: Send Slack notification + uses: 8398a7/action-slack@v3 + if: ${{ failure() || success() }} # Skip canceled jobs + with: + status: ${{ job.status }} + fields: repo,commit,author,action,eventName,ref,workflow,job,took,pullRequest + env: + SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK }} diff --git a/.github/workflows/secrets-scanner.yaml b/.github/workflows/secrets-scanner.yaml new file mode 100644 index 0000000..543b130 --- /dev/null +++ b/.github/workflows/secrets-scanner.yaml @@ -0,0 +1,23 @@ +name: Leaked Secrets Scan + +on: + pull_request: + workflow_call: + +jobs: + + # The job must be named TruffleHog accordingly to the Matter Labs ruleset + TruffleHog: + runs-on: ubuntu-latest + steps: + + - name: Checkout code + uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: TruffleHog OSS + uses: trufflesecurity/trufflehog@v3.75.1 + with: + base: ${{ github.event.repository.default_branch }} + extra_args: --debug --only-verified diff --git a/LICENSE-APACHE b/LICENSE-APACHE new file mode 100644 index 0000000..9fc9f4c --- /dev/null +++ b/LICENSE-APACHE @@ -0,0 +1,191 @@ + + Apache License + Version 2.0, January 2004 + https://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + Copyright (c) 2019 Matter Labs + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + https://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/LICENSE-MIT b/LICENSE-MIT new file mode 100644 index 0000000..2739ea6 --- /dev/null +++ b/LICENSE-MIT @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2019 Matter Labs + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/README.md b/README.md index 7f93f21..20bfa4d 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,10 @@ -# era-compiler-ci -ZKsync Compilers CI actions, workflows and utils. +# ZKsync Era: Compilers CI utils + +[![Logo](eraLogo.svg)](https://zksync.io/) + +ZKsync Era is a layer 2 rollup that uses zero-knowledge proofs to scale Ethereum without compromising on security +or decentralization. As it’s EVM-compatible (with Solidity/Vyper), 99% of Ethereum projects can redeploy without +needing to refactor or re-audit any code. ZKsync Era also uses an LLVM-based compiler that will eventually enable +developers to write smart contracts in popular languages such as C++ and Rust. + +This repository contains the ZKsync Compilers shared CI actions, workflows and utils. diff --git a/eraLogo.svg b/eraLogo.svg new file mode 100644 index 0000000..6ec790c --- /dev/null +++ b/eraLogo.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + +