Skip to content

Commit 1ba3274

Browse files
seanyoungLucasStexermicus
authored
v0.3.3: Atlantis (#1573)
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 <sean@mess.org> Co-authored-by: Lucas Steuernagel <38472950+LucasSte@users.noreply.github.com> Co-authored-by: Cyrill Leutwiler <bigcyrill@hotmail.com>
1 parent fd1b874 commit 1ba3274

File tree

8 files changed

+68
-24
lines changed

8 files changed

+68
-24
lines changed

.github/workflows/release.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ jobs:
99
linux-x86-64:
1010
name: Linux x86-64
1111
runs-on: solang-ubuntu-latest
12-
container: ghcr.io/hyperledger/solang-llvm:ci-5
12+
container: ghcr.io/hyperledger/solang-llvm:ci-6
1313
steps:
1414
- name: Checkout sources
1515
uses: actions/checkout@v3.1.0
@@ -33,7 +33,7 @@ jobs:
3333
name: Linux arm64
3434
runs-on: linux-arm64
3535
if: ${{ github.repository_owner == 'hyperledger' }}
36-
container: ghcr.io/hyperledger/solang-llvm:ci-5
36+
container: ghcr.io/hyperledger/solang-llvm:ci-6
3737
steps:
3838
- name: Checkout sources
3939
uses: actions/checkout@v3.1.0

.github/workflows/test.yml

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ jobs:
4949
linux-x86-64:
5050
name: Linux x86-64
5151
runs-on: solang-ubuntu-latest
52-
container: ghcr.io/hyperledger/solang-llvm:ci-5
52+
container: ghcr.io/hyperledger/solang-llvm:ci-6
5353
env:
5454
RUSTFLAGS: -C instrument-coverage -C llvm-args=--instrprof-atomic-counter-update-all --cfg=coverage --cfg=trybuild_no_target
5555
CARGO_INCREMENTAL: 0
@@ -109,7 +109,7 @@ jobs:
109109
name: Linux Arm
110110
runs-on: linux-arm64
111111
if: ${{ github.repository_owner == 'hyperledger' }}
112-
container: ghcr.io/hyperledger/solang-llvm:ci-5
112+
container: ghcr.io/hyperledger/solang-llvm:ci-6
113113
steps:
114114
- name: Checkout sources
115115
uses: actions/checkout@v3
@@ -252,7 +252,7 @@ jobs:
252252
anchor:
253253
name: Anchor Integration test
254254
runs-on: solang-ubuntu-latest
255-
container: ghcr.io/hyperledger/solang-llvm:ci-5
255+
container: ghcr.io/hyperledger/solang-llvm:ci-6
256256
needs: linux-x86-64
257257
steps:
258258
- name: Checkout sources
@@ -304,7 +304,7 @@ jobs:
304304
solana:
305305
name: Solana Integration test
306306
runs-on: solang-ubuntu-latest
307-
container: ghcr.io/hyperledger/solang-llvm:ci-5
307+
container: ghcr.io/hyperledger/solang-llvm:ci-6
308308
needs: linux-x86-64
309309
steps:
310310
- name: Checkout sources
@@ -475,7 +475,7 @@ jobs:
475475
coverage:
476476
runs-on: ubuntu-latest
477477
name: Coverage report
478-
container: ghcr.io/hyperledger/solang-llvm:ci-5
478+
container: ghcr.io/hyperledger/solang-llvm:ci-6
479479
needs: [linux-x86-64, solana, anchor, polkadot, polkadot-subxt, vscode]
480480
env:
481481
RUSTFLAGS: -C instrument-coverage -C llvm-args=--instrprof-atomic-counter-update-all --cfg=coverage --cfg=trybuild_no_target

CHANGELOG.md

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,46 @@
22
All notable changes to [Solang](https://github.com/hyperledger/solang/)
33
will be documented here.
44

5+
## v0.3.3 Atlantis
6+
7+
This release improves the Solana developer experience, since now required
8+
accounts can be specified using annotations. For Polkadot, compatibility with
9+
Ethereum Solidity has been increased further, it is now possible to write
10+
[EIP-1967](https://eips.ethereum.org/EIPS/eip-1967) compatible proxy contracts.
11+
There are many fixes all over the code base.
12+
13+
### Added
14+
- **Solana** the required accounts for instructions can now be specified using function annotations. [LucasSte](https://github.com/LucasSte)
15+
```
16+
contract Foo {
17+
@account(oneAccount)
18+
@signer(mySigner)
19+
@mutableAccount(otherAccount)
20+
@mutableSigner(otherSigner)
21+
function bar() external returns (uint64) {}
22+
}
23+
```
24+
- The language server can now format Solidity source code using the `forge-fmt` crate. [chioni16](https://github.com/chioni16)
25+
- The langauge server can now do go references, go to implementation, and go to type
26+
definition. [chioni16](https://github.com/chioni16)
27+
- **Polkadot** `Panic` errors can now be caught in try-catch statements [xermicus](https://github.com/xermicus)
28+
- **Polkadot** custom errors are now supported [xermicus](https://github.com/xermicus)
29+
- **Polkadot** now supporting the `address.code` builtin [xermicus](https://github.com/xermicus)
30+
31+
### Fixed
32+
- **Solana** the data field of AccountInfo can now be modified. [LucasSte](https://github.com/LucasSte)
33+
- The vscode extension now uses the solang binary in the path, if available. [seanyoung](https://github.com/seanyoung)
34+
- Fixed a bug in the ABI encoding of dynamic arrays. [xermicus](https://github.com/xermicus)
35+
- Fixed a bug where loading from a storage struct member was not considered a storage read.
36+
[xermicus](https://github.com/xermicus) [seanyoung](https://github.com/seanyoung)
37+
- Fixed a compiler crash caused by chained assignments like `return a = b`. [xermicus](https://github.com/xermicus)
38+
- Variables declared in the return parameters no longer ignore the `storage` location. [xermicus](https://github.com/xermicus)
39+
40+
### Changed
41+
- **BREAKING:** **Solana** the contract Solidity type can no longer be used. This type
42+
used to represent a single address, but this does not make sense as there are many
43+
accounts associated with a contract call. [LucasSte](https://github.com/LucasSte)
44+
545
## v0.3.2 Brasília
646

747
The language server is much improved, and many fixes all over.

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ itertools = "0.11"
4646
num-rational = "0.4"
4747
indexmap = "2.0"
4848
once_cell = "1.18"
49-
solang-parser = { path = "solang-parser", version = "0.3.2" }
49+
solang-parser = { path = "solang-parser", version = "0.3.3" }
5050
codespan-reporting = "0.11"
5151
phf = { version = "0.11", features = ["macros"] }
5252
rust-lapper = "1.1"

Dockerfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
FROM ghcr.io/hyperledger/solang-llvm:ci-5 as builder
1+
FROM ghcr.io/hyperledger/solang-llvm:ci-6 as builder
22

33
COPY . src
44
WORKDIR /src/stdlib/

docs/installing.rst

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -28,11 +28,11 @@ Option 2: Download binaries
2828

2929
There are binaries available on github releases:
3030

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

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

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

6161
.. code-block:: bash
6262
@@ -126,8 +126,8 @@ Linux
126126
~~~~~
127127

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

133133
.. code-block:: bash
@@ -139,7 +139,7 @@ Windows
139139
~~~~~~~
140140

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

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

@@ -151,8 +151,8 @@ Mac
151151
~~~
152152

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

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

172172
.. code-block:: bash
173173
174-
git clone --depth 1 --branch solana-rustc/15.0-2022-08-09 https://github.com/solana-labs/llvm-project
174+
git clone --depth 1 --branch solana-rustc/15.0-2022-12-07 https://github.com/solana-labs/llvm-project
175175
cd llvm-project
176176
177177
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:

solang-parser/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "solang-parser"
3-
version = "0.3.2"
3+
version = "0.3.3"
44
authors = ["Sean Young <sean@mess.org>", "Lucas Steuernagel <lucas.tnagel@gmail.com>", "Cyrill Leutwiler <bigcyrill@hotmail.com>"]
55
homepage = "https://github.com/hyperledger/solang"
66
documentation = "https://solang.readthedocs.io/"

vscode/package.json

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,12 @@
44
"description": "Use the solang compiler for syntax highlighting, compiler warnings and errors, and hovers",
55
"publisher": "solang",
66
"icon": "hl_solang.png",
7-
"author": "Shivam Balikondwar <shivambalikondwar@icloud.com>",
8-
"version": "0.3.2",
7+
"contributors": [
8+
"Shivam Balikondwar <shivambalikondwar@icloud.com>",
9+
"Govardhan G D <chioni1620@gmail.com>",
10+
"Sean Young <sean@mess.org>"
11+
],
12+
"version": "0.3.3",
913
"repository": "github.com/hyperledger/solang",
1014
"engines": {
1115
"vscode": "^1.43.0"

0 commit comments

Comments
 (0)