Skip to content

Commit

Permalink
Define a custom CI and add docs for the downstream toolchain
Browse files Browse the repository at this point in the history
This change also updates the changelog, README (and related files) etc.

The custom CI is authored by Anton Baliasnikov <aba@matterlabs.dev> and the rest
is authored by Oleksandr Zarudnyi <hedgar2017@gmail.com>.
  • Loading branch information
abinavpp committed Oct 11, 2024
1 parent a13ad92 commit acc7d8f
Show file tree
Hide file tree
Showing 22 changed files with 595 additions and 997 deletions.
1 change: 0 additions & 1 deletion .github/CODEOWNERS

This file was deleted.

55 changes: 24 additions & 31 deletions .github/ISSUE_TEMPLATE/bug_report.md
Original file line number Diff line number Diff line change
@@ -1,46 +1,39 @@
---
name: Bug Report
about: Problems, deficiencies, inaccuracies or crashes discovered on Solidity.
name: Bug report
about: Use this template for reporting issues
title: ''
labels: 'bug :bug:'
labels: bug
assignees: ''

---

<!--## Prerequisites
### 🐛 Bug Report

#### 📝 Description

Provide a clear and concise description of the bug.

#### 🔄 Reproduction Steps

- First, many thanks for taking part in the community. We really appreciate that.
- We realize there is a lot of information requested here. We ask only that you do your best to provide as much information as possible so we can better help you.
- Support questions are better asked in one of the following locations:
- [Solidity chat](https://gitter.im/ethereum/solidity)
- [Stack Overflow](https://ethereum.stackexchange.com/)
- Ensure the issue isn't already reported.
- The issue should be reproducible with the latest solidity version; however, this isn't a hard requirement and being reproducible with an older version is sufficient.
Steps to reproduce the behaviour

*Delete the above section and the instructions in the sections below before submitting*
-->
#### 🤔 Expected Behavior

## Description
Describe what you expected to happen.

<!--Please shortly describe the bug you have found, and what you expect instead.-->
#### 😯 Current Behavior

## Environment
Describe what actually happened.

- Compiler version:
- Target EVM version (as per compiler settings):
- Framework/IDE (e.g. Truffle or Remix):
- EVM execution environment / backend / blockchain client:
- Operating system:
#### 🖥️ Environment

## Steps to Reproduce
Any relevant environment details.

<!--
Please provide a *minimal* source code example to trigger the bug you have found.
Please also mention any command-line flags that are necessary for triggering the bug.
Provide as much information as necessary to reproduce the bug.
#### 📋 Additional Context

```solidity
// Some *minimal* Solidity source code to reproduce the bug.
// ...
Add any other context about the problem here. If applicable, add screenshots to help explain.

#### 📎 Log Output

```
Paste any relevant log output here.
```
-->
5 changes: 0 additions & 5 deletions .github/ISSUE_TEMPLATE/config.yml

This file was deleted.

20 changes: 0 additions & 20 deletions .github/ISSUE_TEMPLATE/documentation_issue.md

This file was deleted.

42 changes: 10 additions & 32 deletions .github/ISSUE_TEMPLATE/feature_request.md
Original file line number Diff line number Diff line change
@@ -1,43 +1,21 @@
---
name: Feature Request
about: Ideas, comments or messages asking for a particular functionality to be added
to Solidity.
name: Feature request
about: Use this template for requesting features
title: ''
labels: feature
labels: feat
assignees: ''

---

<!--## Prerequisites
- First, many thanks for taking part in the community. We really appreciate that.
- We realize there is a lot of data requested here. We ask only that you do your best to provide as much information as possible so we can better help you.
- Support questions are better asked in one of the following locations:
- [Solidity chat](https://gitter.im/ethereum/solidity)
- [Stack Overflow](https://ethereum.stackexchange.com/)
- Ensure the issue isn't already reported (check `feature` and `language design` labels).
- If you feel uncertain about your feature request, perhaps it's better to open a language design or feedback forum thread via the issue selector, or by going to the forum directly.
- [Solidity forum](https://forum.soliditylang.org/)
*Delete the above section and the instructions in the sections below before submitting*
-->

## Abstract

<!--Please describe by example what problem you see in the current Solidity language and reason about it.-->

## Motivation
### 🌟 Feature Request

<!--In this section you describe how you propose to address the problem you described earlier, including by giving one or more exemplary source code snippets for demonstration.-->
#### 📝 Description

## Specification
Provide a clear and concise description of the feature you'd like to see.

<!--The technical specification should describe the syntax and semantics of any new feature. The specification should be detailed enough to allow any developer to implement the functionality.-->
#### 🤔 Rationale

## Backwards Compatibility
Explain why this feature is important and how it benefits the project.

<!--
All language changes that introduce backwards incompatibilities must include a section describing these incompatibilities and their severity.
#### 📋 Additional Context

Please describe how you propose to deal with these incompatibilities.
-->
Add any other context or information about the feature request here.
110 changes: 110 additions & 0 deletions .github/actions/solc-build/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,110 @@
name: 'Build'
description: 'Builds solc executable.'
inputs:
release-suffix:
description: 'Release suffix.'
required: false
default: ''
zksync-version:
description: 'Release version.'
required: true
solc-version:
description: 'Solidity version.'
required: true
build-type:
description: 'Build type: candidate or reference'
required: false
default: 'candidate'
extra-args:
description: 'Extra arguments for cmake.'
required: false
default: ''
runs:
using: "composite"
steps:

- name: Install Boost (MacOS and Linux)
if: runner.os != 'Windows'
shell: bash
env:
BOOST_DOWNLOAD_URL: "https://boostorg.jfrog.io/artifactory/main/release/1.83.0/source"
BOOST_FILENAME: "boost_1_83_0"
run: |
[ ${RUNNER_OS} = macOS ] && PARALLEL=$(sysctl -n hw.ncpu) || PARALLEL=$(nproc)
curl -L -o ${BOOST_FILENAME}.tar.gz "${BOOST_DOWNLOAD_URL}/${BOOST_FILENAME}.tar.gz"
tar xzf "${BOOST_FILENAME}.tar.gz" && cd ${BOOST_FILENAME}
if [ ${RUNNER_OS} = macOS ]; then
if [ ${RUNNER_ARCH} = X64 ]; then
./bootstrap.sh --prefix=${PWD}/boost --with-python-version=2.7
else
./bootstrap.sh --prefix=${PWD}/boost
fi
else
./bootstrap.sh --prefix=/boost
fi
./b2 link=static runtime-link=static -j${PARALLEL}
./b2 install -j${PARALLEL}
- name: Build solc
shell: ${{ runner.os == 'Windows' && 'msys2 {0}' || 'bash' }}
env:
CXXFLAGS: "-Wno-narrowing"
run: |
set -x
mkdir -p ./build
cd ./build
[ ${RUNNER_OS} = macOS ] && PARALLEL=$(sysctl -n hw.ncpu) || PARALLEL=$(nproc)
if [ ${RUNNER_OS} != Windows ]; then
export BOOST_ROOT=/boost
fi
if [ ${RUNNER_OS} = Linux ]; then
COMPILER_FLAGS="-DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++"
fi
if [ ${RUNNER_OS} = Windows ]; then
COMPILER_FLAGS="-DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_CXX_FLAGS=-fuse-ld=lld -DUSE_LD_GOLD=OFF"
export LDFLAGS='-lbcrypt -lwsock32 -static'
fi
cmake .. \
-DCMAKE_BUILD_TYPE="Release" ${COMPILER_FLAGS} \
-DSOL_VERSION_ZKSYNC="${{ inputs.solc-version }}-${{ inputs.zksync-version }}" \
-DSOLC_VERSION_ZKEVM="${{ inputs.solc-version }}-${{ inputs.zksync-version }}" \
-DSOL_VERSION_ZKEVM="${{ inputs.solc-version }}-${{ inputs.zksync-version }}" \
-DUSE_Z3=OFF \
-DUSE_CVC4=OFF \
-DTESTS=0 \
-DBoost_NO_BOOST_CMAKE=TRUE \
-DSOLC_LINK_STATIC=1 \
-DSTATIC_LINKING=1 \
-DPEDANTIC=OFF ${{ inputs.extra-args}}
if [[ ${{ inputs.solc-version}} == "0.4"* ]]; then
cmake --build . --config Release --parallel ${PARALLEL} --target jsoncpp-project
cmake --build . --config Release --parallel ${PARALLEL} --target range-v3-project
fi
cmake --build . --config Release --parallel ${PARALLEL} --target solc
[ "$RUNNER_OS" = "Windows" ] && WIN_SUFFIX=".exe"
cp ./solc/solc${WIN_SUFFIX} ./solc/solc-${{ inputs.solc-version }}-${{ inputs.build-type }}${WIN_SUFFIX}
- name: Upload binary for testing
if: inputs.release-suffix == ''
uses: actions/upload-artifact@v4
with:
name: solc-${{ inputs.solc-version }}-${{ inputs.build-type }}
path: ./build/solc/solc-${{ inputs.solc-version }}-${{ inputs.build-type }}

- name: Prepare binary
if: inputs.release-suffix != ''
shell: ${{ runner.os == 'Windows' && 'msys2 {0}' || 'bash' }}
run: |
[ "$RUNNER_OS" = "Windows" ] && WIN_SUFFIX=".exe"
SOLC_BIN="./build/solc/solc${WIN_SUFFIX}"
mkdir -p ./releases/${{ inputs.release-suffix }}
strip "${SOLC_BIN}"
${SOLC_BIN} --version
mv ${SOLC_BIN} ./releases/${{ inputs.release-suffix }}/solc-${{ inputs.release-suffix }}-${{ inputs.solc-version}}-${{ inputs.zksync-version }}${WIN_SUFFIX}
- name: Upload binary for release
if: inputs.release-suffix != ''
uses: actions/upload-artifact@v4
with:
name: release-${{ inputs.release-suffix }}
path: releases
19 changes: 19 additions & 0 deletions .github/pull_request_template.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
# What ❔

<!-- What are the changes this PR brings about? -->
<!-- Example: This PR adds a PR template to the repo. -->
<!-- (For bigger PRs adding more context is appreciated) -->

## Why ❔

<!-- Why are these changes done? What goal do they contribute to? What are the principles behind them? -->
<!-- Example: PR templates ensure PR reviewers, observers, and future iterators are in context about the evolution of repos. -->

## Checklist

<!-- Check your PR fulfills the following items. -->
<!-- For draft PRs check the boxes as you complete them. -->

- [ ] PR title corresponds to the body of PR (we generate changelog entries from PRs).
- [ ] Tests for the changes have been added / updated.
- [ ] Documentation comments have been added / updated.
Loading

0 comments on commit acc7d8f

Please sign in to comment.