From 002954d1d6f1a41e8224d690f73dfc73067d5995 Mon Sep 17 00:00:00 2001 From: Lucas Steuernagel <38472950+LucasSte@users.noreply.github.com> Date: Fri, 30 Jun 2023 14:24:31 -0300 Subject: [PATCH] =?UTF-8?q?v0.3.1:=20G=C3=B6ttingen=20release=20(aka=20Jun?= =?UTF-8?q?e=20release)=20(#1404)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * v0.3.1 Göttingen ### Added - Write environment configuration into Substrate metadata. [xermicus](https://github.com/xermicus) - Tornado cash as an exemplary integration test for Substrate chain extensions. [xermicus](https://github.com/xermicus) - `is_contract` runtime API is available as a builtin for Substrate. [xermicus](https://github.com/xermicus) - The `wasm-opt` optimizer now optimizes the Wasm bytecode on the Substrate target. [xermicus](https://github.com/xermicus) - Call flags are now available for Substrate. [xermicus](https://github.com/xermicus) - Read compiler configurations from toml file. [salaheldinsoliman](https://github.com/salaheldinsoliman) - Accounts declared with `@payer(my_account)` can be accessed with the syntax `tx.accounts.my_account`. [LucasSte](https://github.com/LucasSte) - `delegatecall()` builtin has been added for Substrate. [xermicus](https://github.com/xermicus) - `get_contents_of_file_no` for Solang parser. [BenTheKush](https://github.com/BenTheKush) - `set_code_hash()` builtin has been aded for Substrate. [xermicus](https://github.com/xermicus) ### Fixed - Diagnostics do not include large numbers anymore. [seanyoung](https://github.com/seanyoung) - Correctly parse and resolve `require(i < 2**255)`. [seanyoung](https://github.com/seanyoung) - Virtual function are available for call. [xermicus](https://github.com/xermicus) - Allow `.wrap()` and `.unwrap()` user defined type methods in constants. [xermicus](https://github.com/xermicus) - `@inheritdoc` now works with bases of bases. [seanyoung](https://github.com/seanyoung) - Allow destructures to assign to storage variables. [seanyoung](https://github.com/seanyoung) - Do not allow push and pop in fixed length arrays. [LucasSte](https://github.com/LucasSte) - Improve unused variable elimination to remove unused arrays. [LucasSte](https://github.com/LucasSte) - Salt argument should be of type `bytes32`. [seanyoung](https://github.com/seanyoung) - Allow return vallues to be ignored in try-catch statements. [seanyoung](https://github.com/seanyoung) - Optimize modifiers' CFGs. [xermicus](https://github.com/xermicus) - Fix an error whereby building large contracts would cause an LLVM error. [LucasSte](https://github.com/LucasSte) - A constructor for a Solana contract cannot run twice on the same data account. [seanyoung](https://github.com/seanyoung) - Split the `call` and `deploy` dispatches on Substrate. [xermicus](https://github.com/xermicus) ### Changed - Minimum Supported Rust Version (MSRV) is Rust `1.68`. - `@payer` annotation declares an account in a constructor. [LucasSte](https://github.com/LucasSte) - Do not allow `.call()` functions in functions declared as view. [seanyoung](https://github.com/seanyoung) - Storage accessor function matches solc, and returns struct members if the sole return value is a single struct [seanyoung](https://github.com/seanyoung) - **breaking** Constructor annotations above a constructor can either declare an account or receive a literal parameter. [LucasSte](https://github.com/LucasSte) ``` contract MyContract { @payer(acc) // Declares account acc @space(2+3) // Only literals or constant expressions allowed @seed(myseed) // NOT ALLOWED constructor(bytes myseed) {} } ``` - Annotations placed before constructor arguments refer to the latter. [LucasSte](https://github.com/LucasSte) ``` contract MyContract { @payer(acc) // Declares account acc @space(2+3) // Only literals or constant expressions allowed constructor(@seed bytes myseed) {} // When an annotations refers to a parameter, the former must appear right before the latter. } ``` Signed-off-by: Lucas Steuernagel --------- Signed-off-by: Lucas Steuernagel --- CHANGELOG.md | 55 ++++++++++++++++++++++++++++++++++++++++ Cargo.toml | 4 +-- RELEASE_CHECKLIST.md | 2 -- docs/installing.rst | 12 ++++----- solang-parser/Cargo.toml | 2 +- 5 files changed, 64 insertions(+), 11 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b22a9d730..55f12c829 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,61 @@ All notable changes to [Solang](https://github.com/hyperledger/solang/) will be documented here. +## v0.3.1 Göttingen + +### Added +- Write environment configuration into Substrate metadata. [xermicus](https://github.com/xermicus) +- Tornado cash as an exemplary integration test for Substrate chain extensions. [xermicus](https://github.com/xermicus) +- `is_contract` runtime API is available as a builtin for Substrate. [xermicus](https://github.com/xermicus) +- The `wasm-opt` optimizer now optimizes the Wasm bytecode on the Substrate target. [xermicus](https://github.com/xermicus) +- Call flags are now available for Substrate. [xermicus](https://github.com/xermicus) +- Read compiler configurations from toml file. [salaheldinsoliman](https://github.com/salaheldinsoliman) +- Accounts declared with `@payer(my_account)` can be accessed with the + syntax `tx.accounts.my_account`. [LucasSte](https://github.com/LucasSte) +- `delegatecall()` builtin has been added for Substrate. [xermicus](https://github.com/xermicus) +- `get_contents_of_file_no` for Solang parser. [BenTheKush](https://github.com/BenTheKush) +- `set_code_hash()` builtin has been aded for Substrate. [xermicus](https://github.com/xermicus) + +### Fixed +- Diagnostics do not include large numbers anymore. [seanyoung](https://github.com/seanyoung) +- Correctly parse and resolve `require(i < 2**255)`. [seanyoung](https://github.com/seanyoung) +- Virtual function are available for call. [xermicus](https://github.com/xermicus) +- Allow `.wrap()` and `.unwrap()` user defined type methods in constants. [xermicus](https://github.com/xermicus) +- `@inheritdoc` now works with bases of bases. [seanyoung](https://github.com/seanyoung) +- Allow destructures to assign to storage variables. [seanyoung](https://github.com/seanyoung) +- Do not allow push and pop in fixed length arrays. [LucasSte](https://github.com/LucasSte) +- Improve unused variable elimination to remove unused arrays. [LucasSte](https://github.com/LucasSte) +- Salt argument should be of type `bytes32`. [seanyoung](https://github.com/seanyoung) +- Allow return vallues to be ignored in try-catch statements. [seanyoung](https://github.com/seanyoung) +- Optimize modifiers' CFGs. [xermicus](https://github.com/xermicus) +- Fix an error whereby building large contracts would cause an LLVM error. [LucasSte](https://github.com/LucasSte) +- A constructor for a Solana contract cannot run twice on the same data account. [seanyoung](https://github.com/seanyoung) +- Split the `call` and `deploy` dispatches on Substrate. [xermicus](https://github.com/xermicus) + +### Changed +- Minimum Supported Rust Version (MSRV) is Rust `1.68`. +- `@payer` annotation declares an account in a constructor. [LucasSte](https://github.com/LucasSte) +- Do not allow `.call()` functions in functions declared as view. [seanyoung](https://github.com/seanyoung) +- Storage accessor function matches solc, and returns struct members if the sole return value is a single struct [seanyoung](https://github.com/seanyoung) +- **breaking** Constructor annotations above a constructor can either declare an account or receive a literal parameter. [LucasSte](https://github.com/LucasSte) + ``` + contract MyContract { + @payer(acc) // Declares account acc + @space(2+3) // Only literals or constant expressions allowed + @seed(myseed) // NOT ALLOWED + constructor(bytes myseed) {} + } + ``` +- Annotations placed before constructor arguments refer to the latter. [LucasSte](https://github.com/LucasSte) + ``` + contract MyContract { + @payer(acc) // Declares account acc + @space(2+3) // Only literals or constant expressions allowed + constructor(@seed bytes myseed) {} + // When an annotations refers to a parameter, the former must appear right before the latter. + } + ``` + ## v0.3.0 Venice The parser and semantic analysis stage of Solang have gone through diff --git a/Cargo.toml b/Cargo.toml index e38f74b96..62aff57b6 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "solang" -version = "0.3.0" +version = "0.3.1" authors = ["Sean Young ", "Lucas Steuernagel ", "Cyrill Leutwiler "] homepage = "https://github.com/hyperledger/solang" documentation = "https://solang.readthedocs.io/" @@ -46,7 +46,7 @@ itertools = "0.10" num-rational = "0.4" indexmap = "1.9" once_cell = "1.17" -solang-parser = { path = "solang-parser", version = "0.3.0" } +solang-parser = { path = "solang-parser", version = "0.3.1" } codespan-reporting = "0.11" phf = { version = "0.11", features = ["macros"] } rust-lapper = "1.1" diff --git a/RELEASE_CHECKLIST.md b/RELEASE_CHECKLIST.md index 4e9f2b38b..b42dfac31 100644 --- a/RELEASE_CHECKLIST.md +++ b/RELEASE_CHECKLIST.md @@ -1,7 +1,5 @@ # Release Checklist -- For next release, fix: - https://github.com/hyperledger/solang/issues/1321 - Update the version in `Cargo.toml`, `solang-parser/Cargo.toml`, the binary links in `docs/installing.rst`, and `CHANGELOG.md`. Remember to match the solang-parser version in the top level `Cargo.toml`. diff --git a/docs/installing.rst b/docs/installing.rst index f5f49cf55..5840f88f8 100644 --- a/docs/installing.rst +++ b/docs/installing.rst @@ -28,11 +28,11 @@ Option 2: Download binaries There are binaries available on github releases: -- `Linux x86-64 `_ -- `Linux arm64 `_ -- `Windows x64 `_ -- `MacOS intel `_ -- `MacOS arm `_ +- `Linux x86-64 `_ +- `Linux arm64 `_ +- `Windows x64 `_ +- `MacOS intel `_ +- `MacOS 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. @@ -56,7 +56,7 @@ Option 3: Use ghcr.io/hyperledger/solang containers New images are automatically made available on `solang containers `_. -There is a release `v0.3.0` tag and a `latest` tag: +There is a release `v0.3.1` tag and a `latest` tag: .. code-block:: bash diff --git a/solang-parser/Cargo.toml b/solang-parser/Cargo.toml index 7c6bbee06..8c4f23f46 100644 --- a/solang-parser/Cargo.toml +++ b/solang-parser/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "solang-parser" -version = "0.3.0" +version = "0.3.1" authors = ["Sean Young ", "Lucas Steuernagel ", "Cyrill Leutwiler "] homepage = "https://github.com/hyperledger/solang" documentation = "https://solang.readthedocs.io/"