Skip to content

Commit

Permalink
Release v0.2.1 (#1120)
Browse files Browse the repository at this point in the history
# v0.2.1: Rio

## Added
- The Anchor IDL data structure is now generated for every Solana contract, although the actual IDL json file is not yet saved.
[LucasSte](https://github.com/LucasSte)

## Changed
- The Solana target now utilizes eight byte Anchor discriminators for function dispatch instead
of the four byte Ethereum selectors. [LucasSte](https://github.com/LucasSte)
- The deployment of contracts on Solana now follows the same scheme as Anchor. [seanyoung](https://github.com/seanyoung)
- Compares between rational literals and integers are not allowed. [seanyoung](https://github.com/seanyoung)
- Overriding the function selector value is now done using the `@selector([1, 2, 3, 4])`
  syntax, and the old syntax `selector=hex"12345678"` has been removed.
- `msg.sender` was not implemented correctly on Solana, and
  [has now been removed](https://solang.readthedocs.io/en/latest/targets/solana.html#msg-sender-solana).
  [seanyoung](https://github.com/seanyoung)
- Solang now uses LLVM 14. [LucasSte](https://github.com/LucasSte)

## Fixed
- Many bugs have been fixed by [seanyoung](https://github.com/seanyoung), [LucasSte](https://github.com/LucasSte)
  and [xermicus](https://github.com/xermicus)

Signed-off-by: Lucas Steuernagel <lucas.tnagel@gmail.com>
  • Loading branch information
LucasSte committed Jan 5, 2023
1 parent 3ca41d8 commit c444707
Show file tree
Hide file tree
Showing 11 changed files with 121 additions and 104 deletions.
8 changes: 4 additions & 4 deletions .github/Dockerfile
Expand Up @@ -8,15 +8,15 @@ RUN apt-get update -y
RUN apt-get upgrade -y
RUN apt-get install -y libz-dev pkg-config libssl-dev git cmake ninja-build gcc g++ python3

RUN git clone --single-branch --branch solana-rustc/13.0-2021-08-08 \
RUN git clone --single-branch --branch solana-rustc/14.0-2022-03-22 \
https://github.com/solana-labs/llvm-project.git

WORKDIR /llvm-project

RUN cmake -G Ninja -DLLVM_ENABLE_ASSERTIONS=On -DLLVM_ENABLE_TERMINFO=Off \
-DLLVM_ENABLE_PROJECTS=clang\;lld \
-DLLVM_TARGETS_TO_BUILD=WebAssembly\;BPF \
-DCMAKE_BUILD_TYPE=MinSizeRel -DCMAKE_INSTALL_PREFIX=/llvm13.0 llvm
-DCMAKE_BUILD_TYPE=MinSizeRel -DCMAKE_INSTALL_PREFIX=/llvm14.0 llvm

RUN cmake --build . --target install

Expand All @@ -31,9 +31,9 @@ RUN apt-get autoclean
# Get Rust
RUN curl https://sh.rustup.rs -sSf | bash -s -- -y --default-toolchain 1.63.0

COPY --from=builder /llvm13.0 /llvm13.0/
COPY --from=builder /llvm14.0 /llvm14.0/

ENV PATH="/llvm13.0/bin:/root/.cargo/bin:/root/.local/share/solana/install/active_release/bin:${PATH}"
ENV PATH="/llvm14.0/bin:/root/.cargo/bin:/root/.local/share/solana/install/active_release/bin:${PATH}"

# Install Solana (x86-64 only, does not work on arm)
RUN if test `arch` = x86_64; then sh -c "$(curl -sSfL https://release.solana.com/v1.11.10/install)"; fi
Expand Down
54 changes: 27 additions & 27 deletions .github/workflows/build-llvm.yml
Expand Up @@ -13,8 +13,8 @@ jobs:
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: llvm13.0-1
release_name: LLVM Libraries v13.0 (v1)
tag_name: llvm14.0-1
release_name: LLVM Libraries v14.0 (v1)
draft: false
prerelease: false

Expand All @@ -23,27 +23,27 @@ jobs:
runs-on: ubuntu-20.04
needs: create
steps:
- run: git clone --depth 1 --branch solana-rustc/13.0-2021-08-08 https://github.com/solana-labs/llvm-project.git
- run: git clone --depth 1 --branch solana-rustc/14.0-2022-03-22 https://github.com/solana-labs/llvm-project.git
- name: Install Ninja
uses: llvm/actions/install-ninja@main
- run: cmake -G Ninja -DLLVM_ENABLE_ASSERTIONS=On -DLLVM_ENABLE_TERMINFO=Off
-DLLVM_ENABLE_LIBXML2=Off -DLLVM_ENABLE_ZLIB=Off
-DLLVM_ENABLE_PROJECTS='clang;lld'
-DLLVM_TARGETS_TO_BUILD='WebAssembly;BPF'
-DCMAKE_BUILD_TYPE=MinSizeRel -DCMAKE_INSTALL_PREFIX=../llvm13.0 llvm
-DCMAKE_BUILD_TYPE=MinSizeRel -DCMAKE_INSTALL_PREFIX=../llvm14.0 llvm
working-directory: ./llvm-project/
- run: cmake --build . --target install
working-directory: ./llvm-project/
- run: tar Jcf ./llvm13.0-linux-x86-64.tar.xz ./llvm13.0/
- run: tar Jcf ./llvm14.0-linux-x86-64.tar.xz ./llvm14.0/
- name: Upload Release Asset
id: upload-release-asset
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ needs.create.outputs.upload_url }}
asset_path: ./llvm13.0-linux-x86-64.tar.xz
asset_name: llvm13.0-linux-x86-64.tar.xz
asset_path: ./llvm14.0-linux-x86-64.tar.xz
asset_name: llvm14.0-linux-x86-64.tar.xz
asset_content_type: application/x-xz

linux-arm64:
Expand All @@ -52,25 +52,25 @@ jobs:
if: ${{ github.repository_owner == 'hyperledger' }}
needs: create
steps:
- run: git clone --depth 1 --branch solana-rustc/13.0-2021-08-08 https://github.com/solana-labs/llvm-project.git
- run: git clone --depth 1 --branch solana-rustc/14.0-2022-03-22 https://github.com/solana-labs/llvm-project.git
- run: cmake -G Ninja -DLLVM_ENABLE_ASSERTIONS=On -DLLVM_ENABLE_TERMINFO=Off
-DLLVM_ENABLE_LIBXML2=Off -DLLVM_ENABLE_ZLIB=Off
-DLLVM_ENABLE_PROJECTS='clang;lld'
-DLLVM_TARGETS_TO_BUILD='WebAssembly;BPF'
-DCMAKE_BUILD_TYPE=MinSizeRel -DCMAKE_INSTALL_PREFIX=../llvm13.0 llvm
-DCMAKE_BUILD_TYPE=MinSizeRel -DCMAKE_INSTALL_PREFIX=../llvm14.0 llvm
working-directory: ./llvm-project/
- run: cmake --build . --target install
working-directory: ./llvm-project/
- run: tar Jcf ./llvm13.0-linux-arm64.tar.xz ./llvm13.0/
- run: tar Jcf ./llvm14.0-linux-arm64.tar.xz ./llvm14.0/
- name: Upload Release Asset
id: upload-release-asset
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ needs.create.outputs.upload_url }}
asset_path: ./llvm13.0-linux-arm64.tar.xz
asset_name: llvm13.0-linux-arm64.tar.xz
asset_path: ./llvm14.0-linux-arm64.tar.xz
asset_name: llvm14.0-linux-arm64.tar.xz
asset_content_type: application/x-xz

mac-arm:
Expand All @@ -79,55 +79,55 @@ jobs:
runs-on: [self-hosted, macOS, ARM64, MacStadium]
if: ${{ github.repository_owner == 'hyperledger' }}
steps:
- run: git clone --depth 1 --branch solana-rustc/13.0-2021-08-08 https://github.com/solana-labs/llvm-project.git
- run: git clone --depth 1 --branch solana-rustc/14.0-2022-03-22 https://github.com/solana-labs/llvm-project.git
# - name: Install Ninja
# uses: llvm/actions/install-ninja@main
- run: cmake -G Ninja -DLLVM_ENABLE_ASSERTIONS=On -DLLVM_ENABLE_TERMINFO=Off
-DLLVM_ENABLE_LIBXML2=Off -DLLVM_ENABLE_ZLIB=Off
-DLLVM_ENABLE_PROJECTS='clang;lld'
-DLLVM_TARGETS_TO_BUILD='WebAssembly;BPF'
-DCMAKE_BUILD_TYPE=MinSizeRel -DCMAKE_INSTALL_PREFIX=../llvm13.0 llvm
-DCMAKE_BUILD_TYPE=MinSizeRel -DCMAKE_INSTALL_PREFIX=../llvm14.0 llvm
working-directory: ./llvm-project/
- run: cmake --build . --target install
working-directory: ./llvm-project/
- run: tar Jcf ./llvm13.0-mac-arm.tar.xz ./llvm13.0/
- run: tar Jcf ./llvm14.0-mac-arm.tar.xz ./llvm14.0/
- name: Upload Release Asset
id: upload-release-asset
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ needs.create.outputs.upload_url }}
asset_path: ./llvm13.0-mac-arm.tar.xz
asset_name: llvm13.0-mac-arm.tar.xz
asset_path: ./llvm14.0-mac-arm.tar.xz
asset_name: llvm14.0-mac-arm.tar.xz
asset_content_type: application/x-xz

mac-intel:
name: Mac Intel
needs: create
runs-on: macos-11
steps:
- run: git clone --depth 1 --branch solana-rustc/13.0-2021-08-08 https://github.com/solana-labs/llvm-project.git
- run: git clone --depth 1 --branch solana-rustc/14.0-2022-03-22 https://github.com/solana-labs/llvm-project.git
- name: Install Ninja
uses: llvm/actions/install-ninja@main
- run: cmake -G Ninja -DLLVM_ENABLE_ASSERTIONS=On -DLLVM_ENABLE_TERMINFO=Off
-DLLVM_ENABLE_LIBXML2=Off -DLLVM_ENABLE_ZLIB=Off
-DLLVM_ENABLE_PROJECTS='clang;lld'
-DLLVM_TARGETS_TO_BUILD='WebAssembly;BPF'
-DCMAKE_BUILD_TYPE=MinSizeRel -DCMAKE_INSTALL_PREFIX=../llvm13.0 llvm
-DCMAKE_BUILD_TYPE=MinSizeRel -DCMAKE_INSTALL_PREFIX=../llvm14.0 llvm
working-directory: ./llvm-project/
- run: cmake --build . --target install
working-directory: ./llvm-project/
- run: tar Jcf ./llvm13.0-mac-intel.tar.xz ./llvm13.0/
- run: tar Jcf ./llvm14.0-mac-intel.tar.xz ./llvm14.0/
- name: Upload Release Asset
id: upload-release-asset
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ needs.create.outputs.upload_url }}
asset_path: ./llvm13.0-mac-intel.tar.xz
asset_name: llvm13.0-mac-intel.tar.xz
asset_path: ./llvm14.0-mac-intel.tar.xz
asset_name: llvm14.0-mac-intel.tar.xz
asset_content_type: application/x-xz

windows:
Expand All @@ -136,7 +136,7 @@ jobs:
runs-on: windows-latest
steps:
- run: Get-Volume
- run: git clone --depth 1 --branch solana-rustc/13.0-2021-08-08 https://github.com/solana-labs/llvm-project.git
- run: git clone --depth 1 --branch solana-rustc/14.0-2022-03-22 https://github.com/solana-labs/llvm-project.git
# We may not have enough space to compile llvm, see https://github.com/actions/virtual-environments/issues/326
working-directory: C:\
- name: Setup Windows
Expand All @@ -148,18 +148,18 @@ jobs:
- run: cmake -G Ninja -DLLVM_ENABLE_ASSERTIONS=On -DLLVM_ENABLE_TERMINFO=Off
-DLLVM_ENABLE_LIBXML2=Off -DLLVM_ENABLE_ZLIB=Off
'-DLLVM_ENABLE_PROJECTS=clang;lld'
-DCMAKE_BUILD_TYPE=MinSizeRel -DCMAKE_INSTALL_PREFIX=C:/llvm13.0 llvm
-DCMAKE_BUILD_TYPE=MinSizeRel -DCMAKE_INSTALL_PREFIX=C:/llvm14.0 llvm
working-directory: C:\llvm-project
- run: cmake --build . --target install
working-directory: C:\llvm-project
- run: Compress-Archive -Path C:\llvm13.0 -DestinationPath C:\llvm13.0-win.zip
- run: Compress-Archive -Path C:\llvm14.0 -DestinationPath C:\llvm14.0-win.zip
- name: Upload Release Asset
id: upload-release-asset
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ needs.create.outputs.upload_url }}
asset_path: C:\llvm13.0-win.zip
asset_name: llvm13.0-win.zip
asset_path: C:\llvm14.0-win.zip
asset_name: llvm14.0-win.zip
asset_content_type: application/zip
60 changes: 30 additions & 30 deletions .github/workflows/release.yml
Expand Up @@ -14,27 +14,27 @@ jobs:
uses: actions/checkout@v2
with:
submodules: recursive
- run: git clone --depth 1 --branch solana-rustc/13.0-2021-08-08 https://github.com/solana-labs/llvm-project.git
- run: git clone --depth 1 --branch solana-rustc/14.0-2022-03-22 https://github.com/solana-labs/llvm-project.git
- name: Install Ninja
uses: llvm/actions/install-ninja@main
- run: cmake -G Ninja -DLLVM_ENABLE_ASSERTIONS=On -DLLVM_ENABLE_TERMINFO=Off
-DLLVM_ENABLE_LIBXML2=Off -DLLVM_ENABLE_ZLIB=Off
-DLLVM_ENABLE_PROJECTS='clang;lld'
-DLLVM_TARGETS_TO_BUILD='WebAssembly;BPF'
-DCMAKE_BUILD_TYPE=MinSizeRel -DCMAKE_INSTALL_PREFIX=../llvm13.0 llvm
-DCMAKE_BUILD_TYPE=MinSizeRel -DCMAKE_INSTALL_PREFIX=../llvm14.0 llvm
working-directory: ./llvm-project/
- run: cmake --build . --target install
working-directory: ./llvm-project/
- run: tar Jcf ./llvm13.0-linux-x86-64.tar.xz ./llvm13.0/
- run: tar Jcf ./llvm14.0-linux-x86-64.tar.xz ./llvm14.0/
- name: Upload llvm
uses: svenstaro/upload-release-action@v2
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
file: llvm13.0-linux-x86-64.tar.xz
asset_name: llvm13.0-linux-x86-64.tar.xz
file: llvm14.0-linux-x86-64.tar.xz
asset_name: llvm14.0-linux-x86-64.tar.xz
tag: ${{ github.ref }}
- name: Add LLVM to Path
run: echo "$(pwd)/llvm13.0/bin" >> $GITHUB_PATH
run: echo "$(pwd)/llvm14.0/bin" >> $GITHUB_PATH
- name: Rust stable
run: rustup default 1.63.0
- name: Build
Expand All @@ -58,26 +58,26 @@ jobs:
uses: actions/checkout@v2
with:
submodules: recursive
- run: git clone --depth 1 --branch solana-rustc/13.0-2021-08-08 https://github.com/solana-labs/llvm-project.git
- run: git clone --depth 1 --branch solana-rustc/14.0-2022-03-22 https://github.com/solana-labs/llvm-project.git
- run: cmake -G Ninja -DLLVM_ENABLE_ASSERTIONS=On -DLLVM_ENABLE_TERMINFO=Off
-DLLVM_ENABLE_LIBXML2=Off -DLLVM_ENABLE_ZLIB=Off
-DLLVM_ENABLE_PROJECTS='clang;lld'
-DLLVM_TARGETS_TO_BUILD='WebAssembly;BPF'
-DCMAKE_BUILD_TYPE=MinSizeRel -DCMAKE_INSTALL_PREFIX=../llvm13.0 llvm
-DCMAKE_BUILD_TYPE=MinSizeRel -DCMAKE_INSTALL_PREFIX=../llvm14.0 llvm
working-directory: ./llvm-project/
- run: cmake --build . --target install
working-directory: ./llvm-project/
# compression takes a long time on linux-arm64, use multithreaded compression
- run: tar cf ./llvm13.0-linux-arm64.tar.xz -I 'xz -T 0' ./llvm13.0/
- run: tar cf ./llvm14.0-linux-arm64.tar.xz -I 'xz -T 0' ./llvm14.0/
- name: Upload llvm
uses: svenstaro/upload-release-action@v2
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
file: llvm13.0-linux-arm64.tar.xz
asset_name: llvm13.0-linux-arm64.tar.xz
file: llvm14.0-linux-arm64.tar.xz
asset_name: llvm14.0-linux-arm64.tar.xz
tag: ${{ github.ref }}
- name: Add LLVM to Path
run: echo "$(pwd)/llvm13.0/bin" >> $GITHUB_PATH
run: echo "$(pwd)/llvm14.0/bin" >> $GITHUB_PATH
- name: Rust stable
run: rustup default 1.63.0
- name: Build
Expand All @@ -101,7 +101,7 @@ jobs:
with:
submodules: recursive
- uses: dtolnay/rust-toolchain@1.63.0
- run: git clone --depth 1 --branch solana-rustc/13.0-2021-08-08 https://github.com/solana-labs/llvm-project.git
- run: git clone --depth 1 --branch solana-rustc/14.0-2022-03-22 https://github.com/solana-labs/llvm-project.git
# We may not have enough space to compile llvm, see https://github.com/actions/virtual-environments/issues/326
working-directory: C:\
- name: Setup Windows
Expand All @@ -113,20 +113,20 @@ jobs:
- run: cmake -G Ninja -DLLVM_ENABLE_ASSERTIONS=On -DLLVM_ENABLE_TERMINFO=Off
-DLLVM_ENABLE_LIBXML2=Off -DLLVM_ENABLE_ZLIB=Off
'-DLLVM_ENABLE_PROJECTS=clang;lld'
-DCMAKE_BUILD_TYPE=MinSizeRel -DCMAKE_INSTALL_PREFIX=C:/llvm13.0 llvm
-DCMAKE_BUILD_TYPE=MinSizeRel -DCMAKE_INSTALL_PREFIX=C:/llvm14.0 llvm
working-directory: C:\llvm-project
- run: cmake --build . --target install
working-directory: C:\llvm-project
- run: Compress-Archive -Path C:\llvm13.0 -DestinationPath C:\llvm13.0-win.zip
- run: Compress-Archive -Path C:\llvm14.0 -DestinationPath C:\llvm14.0-win.zip
- name: Upload llvm
uses: svenstaro/upload-release-action@v2
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
file: C:\llvm13.0-win.zip
asset_name: llvm13.0-win.zip
file: C:\llvm14.0-win.zip
asset_name: llvm14.0-win.zip
tag: ${{ github.ref }}
- name: Add LLVM to Path
run: echo "c:\llvm13.0\bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8
run: echo "c:\llvm14.0\bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8
- name: Build
run: cargo build --release --verbose
- name: Run tests
Expand All @@ -149,27 +149,27 @@ jobs:
with:
submodules: recursive
- uses: dtolnay/rust-toolchain@1.63.0
- run: git clone --depth 1 --branch solana-rustc/13.0-2021-08-08 https://github.com/solana-labs/llvm-project.git
- run: git clone --depth 1 --branch solana-rustc/14.0-2022-03-22 https://github.com/solana-labs/llvm-project.git
- name: Install Ninja
uses: llvm/actions/install-ninja@main
- run: cmake -G Ninja -DLLVM_ENABLE_ASSERTIONS=On -DLLVM_ENABLE_TERMINFO=Off
-DLLVM_ENABLE_LIBXML2=Off -DLLVM_ENABLE_ZLIB=Off
-DLLVM_ENABLE_PROJECTS='clang;lld'
-DLLVM_TARGETS_TO_BUILD='WebAssembly;BPF'
-DCMAKE_BUILD_TYPE=MinSizeRel -DCMAKE_INSTALL_PREFIX=../llvm13.0 llvm
-DCMAKE_BUILD_TYPE=MinSizeRel -DCMAKE_INSTALL_PREFIX=../llvm14.0 llvm
working-directory: ./llvm-project/
- run: cmake --build . --target install
working-directory: ./llvm-project/
- run: tar Jcf ./llvm13.0-mac-arm.tar.xz ./llvm13.0/
- run: tar Jcf ./llvm14.0-mac-arm.tar.xz ./llvm14.0/
- name: Upload llvm
uses: svenstaro/upload-release-action@v2
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
file: llvm13.0-mac-arm.tar.xz
asset_name: llvm13.0-mac-arm.tar.xz
file: llvm14.0-mac-arm.tar.xz
asset_name: llvm14.0-mac-arm.tar.xz
tag: ${{ github.ref }}
- name: Add LLVM to Path
run: echo "$(pwd)/llvm13.0/bin" >> $GITHUB_PATH
run: echo "$(pwd)/llvm14.0/bin" >> $GITHUB_PATH
- name: Build
run: cargo build --release --verbose
- name: Run tests
Expand All @@ -194,27 +194,27 @@ jobs:
with:
submodules: recursive
- uses: dtolnay/rust-toolchain@1.63.0
- run: git clone --depth 1 --branch solana-rustc/13.0-2021-08-08 https://github.com/solana-labs/llvm-project.git
- run: git clone --depth 1 --branch solana-rustc/14.0-2022-03-22 https://github.com/solana-labs/llvm-project.git
- name: Install Ninja
uses: llvm/actions/install-ninja@main
- run: cmake -G Ninja -DLLVM_ENABLE_ASSERTIONS=On -DLLVM_ENABLE_TERMINFO=Off
-DLLVM_ENABLE_LIBXML2=Off -DLLVM_ENABLE_ZLIB=Off
-DLLVM_ENABLE_PROJECTS='clang;lld'
-DLLVM_TARGETS_TO_BUILD='WebAssembly;BPF'
-DCMAKE_BUILD_TYPE=MinSizeRel -DCMAKE_INSTALL_PREFIX=../llvm13.0 llvm
-DCMAKE_BUILD_TYPE=MinSizeRel -DCMAKE_INSTALL_PREFIX=../llvm14.0 llvm
working-directory: ./llvm-project/
- run: cmake --build . --target install
working-directory: ./llvm-project/
- run: tar Jcf ./llvm13.0-mac-intel.tar.xz ./llvm13.0/
- run: tar Jcf ./llvm14.0-mac-intel.tar.xz ./llvm14.0/
- name: Upload llvm
uses: svenstaro/upload-release-action@v2
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
file: llvm13.0-mac-intel.tar.xz
asset_name: llvm13.0-mac-intel.tar.xz
file: llvm14.0-mac-intel.tar.xz
asset_name: llvm14.0-mac-intel.tar.xz
tag: ${{ github.ref }}
- name: Add LLVM to Path
run: echo "$(pwd)/llvm13.0/bin" >> $GITHUB_PATH
run: echo "$(pwd)/llvm14.0/bin" >> $GITHUB_PATH
- name: Build
run: cargo build --release --verbose
- name: Run tests
Expand Down

0 comments on commit c444707

Please sign in to comment.