Solidity version 0.4.16 released

in #ethereum7 years ago

This release introduces several new features, some of which have to be
explicitly activated using pragma experimental feature name;.

We split the constant keyword for functions into pure (neither reads from nor writes to the state)
and view (does not modify the state). They are not enforced yet, but will most likely make use
of the the new STATIC_CALL feature after Metropolis.

Furthermore, the ABI encoder was re-implemented in a much cleaner way using our new intermediate language. It can encode arbitrarily nested arrays and will also be able to encode structs starting from the next release. Please try it out using pragma experimental ABIEncoderV2; and check if you have any issues with the encoder. It currently generates larger code than the old encoder, but we hope to fix that soon.

Finally, solc now include experimental support for automated overflow and assertion checking at compile-time using the SMT solver Z3. It is active if you use pragma experimental SMTChecker; and if solc was compiled with Z3 support. The latter is currently only the case for the PPA builds (or if you build from source and have libz3-dev in your system), but we also have a solution in the pipeline that will make it work for solc-js (and thus remix).

Features:

  • ABI JSON: Include new field stateMutability with values pure, view, nonpayable and payable.
  • Analyzer: Experimental partial support for Z3 SMT checker ("SMTChecker").
  • Build System: Shared libraries (libdevcore, libevmasm, libsolidity and liblll) are no longer produced during the build process.
  • Code generator: Experimental new implementation of ABI encoder that can encode arbitrarily nested arrays ("ABIEncoderV2")
  • Metadata: Store experimental flag in metadata CBOR.
  • Parser: Display previous visibility specifier in error if multiple are found.
  • Parser: Introduce pure and view keyword for functions, constant remains an alias for view and pureness is not enforced yet, so use with care.
  • Static Analyzer: Warn about large storage structures.
  • Syntax Checker: Support pragma experimental feature; to turn on experimental features.
  • Type Checker: More detailed error message for invalid overrides.
  • Type Checker: Warn about shifting a literal.

Bugfixes:

  • Assembly Parser: Be more strict about number literals.
  • Assembly Parser: Limit maximum recursion depth.
  • Parser: Enforce commas between array and tuple elements.
  • Parser: Limit maximum recursion depth.
  • Type Checker: Crash fix related to using.
  • Type Checker: Disallow constructors in libraries.
  • Type Checker: Reject the creation of interface contracts using the new statement.

We especially thank all our open source community contributors:

Chim Kan, Federico Bond, feliam, gubatron, Isaac Ibiapina, James Ray, Joshua Hannan, Lea Arias, Nick Savers, Stu West, Vladislav Ankudinov and Zhen Zhang

https://github.com/ethereum/solidity/releases/tag/v0.4.16

Sort:  

Hi! I am a robot. I just upvoted you! I found similar content that readers might be interested in:
https://github.com/ethereum/solidity/releases/tag/v0.4.16

Congratulations @gazd! You have completed some achievement on Steemit and have been rewarded with new badge(s) :

You made your First Comment
You got a First Reply

Click on any badge to view your own Board of Honor on SteemitBoard.
For more information about SteemitBoard, click here

If you no longer want to receive notifications, reply to this comment with the word STOP

By upvoting this notification, you can help all Steemit users. Learn how here!

Congratulations @gazd! You received a personal award!

Happy Birthday! - You are on the Steem blockchain for 2 years!

You can view your badges on your Steem Board and compare to others on the Steem Ranking

Vote for @Steemitboard as a witness to get one more award and increased upvotes!