Skip to content

Releases: hyperledger/solang

v0.1.11: Nuremberg release

12 May 18:14
Compare
Choose a tag to compare

[0.1.11]

Added

  • Added support for Solidity user types
  • Support using syntax on file scope
  • Support binding functions with using
  • Implemented parsing and semantic analysis of yul (code generation is to
    follow)
  • The language server uses the --import and --importmap arguments
  • On Solana, it is possible to set the accounts during CPI using the
    accounts: call argument.

Fixed

  • Fixed associativity of the power operator
  • A huge amount of fixes improving compatibility with solc

v0.1.10: Barcelona Release

01 Mar 22:12
Compare
Choose a tag to compare

Added

  • On Solana, the accounts that were passed into the transactions are listed in
    the tx.accounts builtin. There is also a builtin struct AccountInfo
  • A new common subexpression elimination pass was added, thanks to
    LucasSte
  • A graphviz dot file can be generated from the ast, using --emit ast-dot
  • Many improvements to the solidity parser, and the parser has been spun out
    in it's own create solang-parser.

Changed

  • Solang now uses LLVM 13.0, based on the Solana LLVM tree
  • The ast datastructure has been simplified.
  • Many bugfixes across the entire tree.

LLVM Libraries v13.0 (v1)

18 Nov 16:48
Compare
Choose a tag to compare
Pre-release
Move to llvm 13.0

Signed-off-by: Sean Young <sean@mess.org>

v0.1.9: Lisbon Release

03 Nov 09:46
Compare
Choose a tag to compare
Added
- Added support for solc import mapppings using `--importmap`
- Added support for Events on Solana
- `msg.data`, `msg.sig`, `msg.value`, `block.number`, and `block.slot` are
  implemented for Solana
- Implemented balance transfers using `.send()` and `.transfer()` on Solana
- Implemented retrieving account balances on Solana
- Verify ed25519 signatures with `signatureVerify()` on Solana
- Added support for Rational numbers
- The address type and value type can changed using `--address-length` and
  `--value-length` command line arguments (for Substrate only)

Changed
- Solana now requires v1.8.1 or later
- On Solana, the return data is now provided in the program log. As a result,
  RPCs are now are now supported.
- On the solang command line, the target must be specified.
- The Solana instruction now includes a 64 bit value field
- Many fixes to the parser and resolver, so solidity compatibility is much
  improved, thanks to [sushi-shi](https://github.com/hyperledger-labs/solang/pulls?q=is%3Apr+author%3Asushi-shi+is%3Aclosed).

Removed
- The Sawtooth Sabre target has been removed.
- The generic target has been removed.

Signed-off-by: Sean Young <sean@mess.org>

v0.1.8: Uniswap works for Solana and Substrate

27 Aug 11:15
Compare
Choose a tag to compare
Added
- Added a strength reduce pass to eliminate 256/128 bit multiply, division,
  and modulo where possible.
- Visual Studio Code extension can download the Solang binary from github
  releases, so the user is not required to download it themselves
- The Solana target now has support for arrays and mapping in contract
  storage
- The Solana target has support for the keccak256(), ripemd160(), and
  sha256() builtin hash functions.
- The Solana target has support for the builtins this and block.timestamp.
- Implement abi.encodePacked() for the ethereum abi encoder
- The Solana target now compiles all contracts to a single `bundle.so` BPF
  program.
- Any unused variables, events, or contract variables are now detected and
  warnings are given, thanks to [LucasSte](https://github.com/hyperledger-labs/solang/pull/429)
- The `immutable` attribute on contract storage variables is now supported.
- The `override` attribute on public contract storage variables is now supported.
- The `unchecked {}` code block is now parsed and supported. Math overflow still
  is unsupported for types larger than 64 bit.
- `assembly {}` blocks are now parsed and give a friendly error message.
- Any variable use before it is given a value is now detected and results in
  a undefined variable diagnostic, thanks to [LucasSte](https://github.com/hyperledger-labs/solang/pull/468)

Changed
- Solang now uses LLVM 12.0, based on the [Solana LLVM tree](https://github.com/solana-labs/llvm-project/)

Fixed
- Fix a number of issues with parsing the uniswap v2 contracts
- ewasm: staticcall() and delegatecall() cannot take value argument
- Fixed array support in the ethereum abi encoder and decoder
- Fixed issues in arithmetic on non-power-of-2 types (e.g. uint112)

Signed-off-by: Sean Young <sean@mess.org>

v0.1.7: Constant folding pass and fixes all over

04 Feb 12:47
Compare
Choose a tag to compare
Added
- Added a constant folding optimization pass to improve codegen. When variables fold
  to constant values, they are visible in the hover in the extension
- For Substrate and Solana, address literals can specified with their base58 notation, e.g.
  `address foo = address"5GBWmgdFAMqm8ZgAHGobqDqX6tjLxJhv53ygjNtaaAn3sjeZ";`
- Solana account storage implemented for ``bytes``, ``string``, and structs
- Implemented ``delete`` for Solana

Changed
- The Substrate target produces a single .contract file
- The Substrate target now uses the salt argument for seal\_instantiate()

Fixed
- Libraries are allowed to have constant variables
- Fixed ethereum abi encoding/decoding of structs and enums
- Solana now returns an error if account data is not large enough
- Fixed storage bytes push() and pop()
- Ewasm uses precompiles for keccak hashing
- Various ewasm fixes for Hyperledger Burrow

Signed-off-by: Sean Young <sean@mess.org>

v0.1.6: Visual Studio Code extension and string formatting

11 Dec 10:42
Compare
Choose a tag to compare
- New Visual Studio Code extension developed under Hyperledger Mentorship
  programme
- Added language server for use in vscode extension
- Implemented primitive types and operations for Solana
- Functions can be declared outside of contracts
- Constants can be declared outside of contracts
- String formatting using python style "..{}..".format(n)

Signed-off-by: Sean Young <sean@mess.org>

v0.1.5: Substrate 2.0 and Solidity Function Types

09 Nov 14:47
Compare
Choose a tag to compare
- Function types are implemented
- An experimental [Solana](https://solana.com/) target has been added
- Binaries are generated for Mac

- The Substrate target requires Substrate 2.0
- Various bug fixes (see git log)

Signed-off-by: Sean Young <sean@mess.org>

v0.1.4: All major Solidity language features implemented

15 Sep 12:50
Compare
Choose a tag to compare
Added
- `event` can be declared and emitted with `emit`
- Function modifiers have been implemented
- Tags in doc comments are parsed and resolved
- All major Solidity language features implemented, see our language status page:
  https://solang.readthedocs.io/en/latest/status.html

Signed-off-by: Sean Young <sean@mess.org>

v0.1.3: Imports, base contracts, abstract, interface, and libraries

25 Aug 23:04
Compare
Choose a tag to compare
Added
- `import` directives are supported
- New `--importpath` command line argument to specify directories to search for imports
- Contracts can have base contracts
- Contracts can be abstract
- Interfaces are supported
- Libraries are supported
- The `using` library `for` type syntax is supported

Changed
- Solang now uses llvm 10.0 rather than llvm 8.0
- In line with Solidity 0.7.0, constructors no longer need a visibility argument

Signed-off-by: Sean Young <sean@mess.org>