Skip to content

Commit

Permalink
v0.3.3: Atlantis (#1573)
Browse files Browse the repository at this point in the history
This release improves the Solana developer experience, since now required
accounts can be specified using annotations. For Polkadot, compatibility with
Ethereum Solidity has been increased further, it is now possible to write
[EIP-1967](https://eips.ethereum.org/EIPS/eip-1967) compatible proxy contracts.
There are many fixes all over the code base.

### Added
- **Solana** the required accounts for instructions can now be specified
  using function annotations. [LucasSte](https://github.com/LucasSte)
  ```
  contract Foo {
      @account(oneAccount)
      @signer(mySigner)
      @mutableAccount(otherAccount)
      @mutableSigner(otherSigner)
      function bar() external returns (uint64) {}
  }
  ```
- The language server can now format Solidity source code using the
  `forge-fmt` crate. [chioni16](https://github.com/chioni16)
- The langauge server can now do go references, go to implementation, and go to type
  definition. [chioni16](https://github.com/chioni16)
- **Polkadot** `Panic` errors can now be caught in try-catch statements
  [xermicus](https://github.com/xermicus)
- **Polkadot** custom errors are now supported
  [xermicus](https://github.com/xermicus)
- **Polkadot** now supporting the `address.code` builtin
  [xermicus](https://github.com/xermicus)

### Fixed
- **Solana** the data field of AccountInfo can now be modified.
  [LucasSte](https://github.com/LucasSte)
- The vscode extension now uses the solang binary in the path, if
  available. [seanyoung](https://github.com/seanyoung)
- Fixed a bug in the ABI encoding of dynamic arrays.
  [xermicus](https://github.com/xermicus)
- Fixed a bug where loading from a storage struct member was not
  considered a storage read. [xermicus](https://github.com/xermicus) [seanyoung](https://github.com/seanyoung)
- Fixed a compiler crash caused by chained assignments like `return a = b`. [xermicus](https://github.com/xermicus)
- Variables declared in the return parameters no longer ignore the `storage` location. [xermicus](https://github.com/xermicus)

### Changed
- **BREAKING:** **Solana** the contract Solidity type can no longer be used. This type
  used to represent a single address, but this does not make sense asthere are many
  accounts associated with a contract call. [LucasSte](https://github.com/LucasSte)

Signed-off-by: Sean Young <[email protected]>
Co-authored-by: Lucas Steuernagel <[email protected]>
Co-authored-by: Cyrill Leutwiler <[email protected]>
  • Loading branch information
3 people committed Oct 24, 2023
1 parent fd1b874 commit 1ba3274
Show file tree
Hide file tree
Showing 8 changed files with 68 additions and 24 deletions.
4 changes: 2 additions & 2 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ jobs:
linux-x86-64:
name: Linux x86-64
runs-on: solang-ubuntu-latest
container: ghcr.io/hyperledger/solang-llvm:ci-5
container: ghcr.io/hyperledger/solang-llvm:ci-6
steps:
- name: Checkout sources
uses: actions/[email protected]
Expand All @@ -33,7 +33,7 @@ jobs:
name: Linux arm64
runs-on: linux-arm64
if: ${{ github.repository_owner == 'hyperledger' }}
container: ghcr.io/hyperledger/solang-llvm:ci-5
container: ghcr.io/hyperledger/solang-llvm:ci-6
steps:
- name: Checkout sources
uses: actions/[email protected]
Expand Down
10 changes: 5 additions & 5 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ jobs:
linux-x86-64:
name: Linux x86-64
runs-on: solang-ubuntu-latest
container: ghcr.io/hyperledger/solang-llvm:ci-5
container: ghcr.io/hyperledger/solang-llvm:ci-6
env:
RUSTFLAGS: -C instrument-coverage -C llvm-args=--instrprof-atomic-counter-update-all --cfg=coverage --cfg=trybuild_no_target
CARGO_INCREMENTAL: 0
Expand Down Expand Up @@ -109,7 +109,7 @@ jobs:
name: Linux Arm
runs-on: linux-arm64
if: ${{ github.repository_owner == 'hyperledger' }}
container: ghcr.io/hyperledger/solang-llvm:ci-5
container: ghcr.io/hyperledger/solang-llvm:ci-6
steps:
- name: Checkout sources
uses: actions/checkout@v3
Expand Down Expand Up @@ -252,7 +252,7 @@ jobs:
anchor:
name: Anchor Integration test
runs-on: solang-ubuntu-latest
container: ghcr.io/hyperledger/solang-llvm:ci-5
container: ghcr.io/hyperledger/solang-llvm:ci-6
needs: linux-x86-64
steps:
- name: Checkout sources
Expand Down Expand Up @@ -304,7 +304,7 @@ jobs:
solana:
name: Solana Integration test
runs-on: solang-ubuntu-latest
container: ghcr.io/hyperledger/solang-llvm:ci-5
container: ghcr.io/hyperledger/solang-llvm:ci-6
needs: linux-x86-64
steps:
- name: Checkout sources
Expand Down Expand Up @@ -475,7 +475,7 @@ jobs:
coverage:
runs-on: ubuntu-latest
name: Coverage report
container: ghcr.io/hyperledger/solang-llvm:ci-5
container: ghcr.io/hyperledger/solang-llvm:ci-6
needs: [linux-x86-64, solana, anchor, polkadot, polkadot-subxt, vscode]
env:
RUSTFLAGS: -C instrument-coverage -C llvm-args=--instrprof-atomic-counter-update-all --cfg=coverage --cfg=trybuild_no_target
Expand Down
40 changes: 40 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,46 @@
All notable changes to [Solang](https://github.com/hyperledger/solang/)
will be documented here.

## v0.3.3 Atlantis

This release improves the Solana developer experience, since now required
accounts can be specified using annotations. For Polkadot, compatibility with
Ethereum Solidity has been increased further, it is now possible to write
[EIP-1967](https://eips.ethereum.org/EIPS/eip-1967) compatible proxy contracts.
There are many fixes all over the code base.

### Added
- **Solana** the required accounts for instructions can now be specified using function annotations. [LucasSte](https://github.com/LucasSte)
```
contract Foo {
@account(oneAccount)
@signer(mySigner)
@mutableAccount(otherAccount)
@mutableSigner(otherSigner)
function bar() external returns (uint64) {}
}
```
- The language server can now format Solidity source code using the `forge-fmt` crate. [chioni16](https://github.com/chioni16)
- The langauge server can now do go references, go to implementation, and go to type
definition. [chioni16](https://github.com/chioni16)
- **Polkadot** `Panic` errors can now be caught in try-catch statements [xermicus](https://github.com/xermicus)
- **Polkadot** custom errors are now supported [xermicus](https://github.com/xermicus)
- **Polkadot** now supporting the `address.code` builtin [xermicus](https://github.com/xermicus)

### Fixed
- **Solana** the data field of AccountInfo can now be modified. [LucasSte](https://github.com/LucasSte)
- The vscode extension now uses the solang binary in the path, if available. [seanyoung](https://github.com/seanyoung)
- Fixed a bug in the ABI encoding of dynamic arrays. [xermicus](https://github.com/xermicus)
- Fixed a bug where loading from a storage struct member was not considered a storage read.
[xermicus](https://github.com/xermicus) [seanyoung](https://github.com/seanyoung)
- Fixed a compiler crash caused by chained assignments like `return a = b`. [xermicus](https://github.com/xermicus)
- Variables declared in the return parameters no longer ignore the `storage` location. [xermicus](https://github.com/xermicus)

### Changed
- **BREAKING:** **Solana** the contract Solidity type can no longer be used. This type
used to represent a single address, but this does not make sense as there are many
accounts associated with a contract call. [LucasSte](https://github.com/LucasSte)

## v0.3.2 Brasília

The language server is much improved, and many fixes all over.
Expand Down
2 changes: 1 addition & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ itertools = "0.11"
num-rational = "0.4"
indexmap = "2.0"
once_cell = "1.18"
solang-parser = { path = "solang-parser", version = "0.3.2" }
solang-parser = { path = "solang-parser", version = "0.3.3" }
codespan-reporting = "0.11"
phf = { version = "0.11", features = ["macros"] }
rust-lapper = "1.1"
Expand Down
2 changes: 1 addition & 1 deletion Dockerfile
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
FROM ghcr.io/hyperledger/solang-llvm:ci-5 as builder
FROM ghcr.io/hyperledger/solang-llvm:ci-6 as builder

COPY . src
WORKDIR /src/stdlib/
Expand Down
24 changes: 12 additions & 12 deletions docs/installing.rst
Original file line number Diff line number Diff line change
Expand Up @@ -28,11 +28,11 @@ Option 2: Download binaries

There are binaries available on github releases:

- `Linux x86-64 <https://github.com/hyperledger/solang/releases/download/v0.3.2/solang-linux-x86-64>`_
- `Linux arm64 <https://github.com/hyperledger/solang/releases/download/v0.3.2/solang-linux-arm64>`_
- `Windows x64 <https://github.com/hyperledger/solang/releases/download/v0.3.2/solang.exe>`_
- `MacOS intel <https://github.com/hyperledger/solang/releases/download/v0.3.2/solang-mac-intel>`_
- `MacOS arm <https://github.com/hyperledger/solang/releases/download/v0.3.2/solang-mac-arm>`_
- `Linux x86-64 <https://github.com/hyperledger/solang/releases/download/v0.3.3/solang-linux-x86-64>`_
- `Linux arm64 <https://github.com/hyperledger/solang/releases/download/v0.3.3/solang-linux-arm64>`_
- `Windows x64 <https://github.com/hyperledger/solang/releases/download/v0.3.3/solang.exe>`_
- `MacOS intel <https://github.com/hyperledger/solang/releases/download/v0.3.3/solang-mac-intel>`_
- `MacOS arm <https://github.com/hyperledger/solang/releases/download/v0.3.3/solang-mac-arm>`_

Download the file and save it somewhere in your ``$PATH``, for example the bin directory in your home directory. If the
path you use is not already in ``$PATH``, then you need to add it yourself.
Expand All @@ -56,7 +56,7 @@ Option 3: Use ghcr.io/hyperledger/solang containers

New images are automatically made available on
`solang containers <https://github.com/hyperledger/solang/pkgs/container/solang>`_.
There is a release `v0.3.2` tag and a `latest` tag:
There is a release `v0.3.3` tag and a `latest` tag:

.. code-block:: bash
Expand Down Expand Up @@ -126,8 +126,8 @@ Linux
~~~~~

A pre-built version of LLVM, specifically configured for Solang, is available at
`<https://github.com/hyperledger/solang-llvm/releases/download/llvm15-1/llvm15.0-linux-x86-64.tar.xz>`_ for x86 processors
and at `<https://github.com/hyperledger/solang-llvm/releases/download/llvm15-1/llvm15.0-linux-arm64.tar.xz>`_ for ARM.
`<https://github.com/hyperledger/solang-llvm/releases/download/llvm15-2/llvm15.0-linux-x86-64.tar.xz>`_ for x86 processors
and at `<https://github.com/hyperledger/solang-llvm/releases/download/llvm15-2/llvm15.0-linux-arm64.tar.xz>`_ for ARM.
After downloading, untar the file in a terminal and add it to your path.

.. code-block:: bash
Expand All @@ -139,7 +139,7 @@ Windows
~~~~~~~

A pre-built version of LLVM, specifically configured for Solang, is available at
`<https://github.com/hyperledger/solang-llvm/releases/download/llvm15-1/llvm15.0-win.zip>`_.
`<https://github.com/hyperledger/solang-llvm/releases/download/llvm15-2/llvm15.0-win.zip>`_.

After unzipping the file, add the bin directory to your path.

Expand All @@ -151,8 +151,8 @@ Mac
~~~

A pre-built version of LLVM for intel macs, is available at
`<https://github.com/hyperledger/solang-llvm/releases/download/llvm15-1/llvm15.0-mac-intel.tar.xz>`_ and for arm macs there is
`<https://github.com/hyperledger/solang-llvm/releases/download/llvm15-1/llvm15.0-mac-arm.tar.xz>`_. After downloading,
`<https://github.com/hyperledger/solang-llvm/releases/download/llvm15-2/llvm15.0-mac-intel.tar.xz>`_ and for arm macs there is
`<https://github.com/hyperledger/solang-llvm/releases/download/llvm15-2/llvm15.0-mac-arm.tar.xz>`_. After downloading,
untar the file in a terminal and add it to your path like so:

.. code-block:: bash
Expand All @@ -171,7 +171,7 @@ you may need to consult. `Ninja <https://ninja-build.org>`_ is necessary for bui

.. code-block:: bash
git clone --depth 1 --branch solana-rustc/15.0-2022-08-09 https://github.com/solana-labs/llvm-project
git clone --depth 1 --branch solana-rustc/15.0-2022-12-07 https://github.com/solana-labs/llvm-project
cd llvm-project
Now run cmake to create the makefiles. Replace the *installdir* argument to ``CMAKE_INSTALL_PREFIX`` with a directory where you would like to have LLVM installed, and then run the build:
Expand Down
2 changes: 1 addition & 1 deletion solang-parser/Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[package]
name = "solang-parser"
version = "0.3.2"
version = "0.3.3"
authors = ["Sean Young <[email protected]>", "Lucas Steuernagel <[email protected]>", "Cyrill Leutwiler <[email protected]>"]
homepage = "https://github.com/hyperledger/solang"
documentation = "https://solang.readthedocs.io/"
Expand Down
8 changes: 6 additions & 2 deletions vscode/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,12 @@
"description": "Use the solang compiler for syntax highlighting, compiler warnings and errors, and hovers",
"publisher": "solang",
"icon": "hl_solang.png",
"author": "Shivam Balikondwar <[email protected]>",
"version": "0.3.2",
"contributors": [
"Shivam Balikondwar <[email protected]>",
"Govardhan G D <[email protected]>",
"Sean Young <[email protected]>"
],
"version": "0.3.3",
"repository": "github.com/hyperledger/solang",
"engines": {
"vscode": "^1.43.0"
Expand Down

0 comments on commit 1ba3274

Please sign in to comment.