- Implement the Standard JSON Input / Output API
- Support interface contracts.
- C API (jsonCompiler): Add the compileStandard() method to process a Standard JSON I/O.
- Commandline interface: Add the --standard-json parameter to process a Standard JSON I/O.
- Commandline interface: Support --allow-paths to define trusted import paths. Note: the
path(s) of the supplied source file(s) is always trusted. - Inline Assembly: Storage variable access using _slot and _offset suffixes.
- Inline Assembly: Disallow blocks with unbalanced stack.
- Static analyzer: Warn about statements without effects.
- Static analyzer: Warn about unused local variables, parameters, and return parameters.
- Syntax checker: issue deprecation warning for unary '+'
- Assembly: Add CREATE2 (EIP86), STATICCALL (EIP214), RETURNDATASIZE and RETURNDATACOPY (EIP211) instructions.
- Assembly: Display auxiliary data in the assembly output.
- Assembly: Renamed SHA3 to KECCAK256.
- AST: export all attributes to JSON format.
- C API (jsonCompiler): Use the Standard JSON I/O internally.
- Code Generator: Added the Whiskers template system.
- Inline Assembly: for and switch statements.
- Inline Assembly: Function definitions and function calls.
- Inline Assembly: Introduce keccak256 as an opcode. sha3 is still a valid alias.
- Inline Assembly: Present proper error message when not supplying enough arguments to a functional
instruction. - Inline Assembly: Warn when instructions shadow Solidity variables.
- Inline Assembly: Warn when using jumps.
- Remove obsolete Why3 output.
- Type Checker: Enforce strict UTF-8 validation.
- Type Checker: Warn about copies in storage that might overwrite unexpectedly.
- Type Checker: Warn about type inference from literal numbers.
- Static Analyzer: Warn about deprecation of callcode.
- Syntax Checker: Deprecated throw in favour of require(), assert() and revert().
- Type Checker: Warn if a local storage reference variable does not explicitly use the keyword storage.
- C API (jsonCompiler): Export the license method.
- Code Generator: Optimise the fallback function, by removing a useless jump.
- Inline Assembly: Show useful error message if trying to access calldata variables.
- Inline Assembly: Support variable declaration without initial value (defaults to 0).
- Metadata: Only include files which were used to compile the given contract.
- Type Checker: Disallow value transfers to contracts without a payable fallback function.
- Type Checker: Include types in explicit conversion error message.
- Type Checker: Raise proper error for arrays too large for ABI encoding.
- Type checker: Warn if using this in a constructor.
- Type checker: Warn when existing symbols, including builtins, are overwritten.
- Type Checker: Show unimplemented function if trying to instantiate an abstract class.
- 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 ; to turn on experimental features.
- Type Checker: More detailed error message for invalid overrides.
- Type Checker: Warn about shifting a literal.
- Assembly Parser: Support multiple assignment (x, y := f()).
- Code Generator: Keep a single copy of encoding functions when using the experimental "ABIEncoderV2".
- Code Generator: Partial support for passing structs as arguments and return parameters (requires pragma experimental ABIEncoderV2; for now).
- General: Support pragma experimental "v0.5.0"; to activate upcoming breaking changes.
- General: Added .selector member on external function types to retrieve their signature.
- Optimizer: Add new optimization step to remove unused JUMPDESTs.
- Static Analyzer: Warn when using deprecated builtins sha3 and suicide
(replaced by keccak256 and selfdestruct, introduced in 0.4.2 and 0.2.0, respectively). - Syntax Checker: Warn if no visibility is specified on contract functions.
- Type Checker: Display helpful warning for unused function arguments/return parameters.
- Type Checker: Do not show the same error multiple times for events.
- Type Checker: Greatly reduce the number of duplicate errors shown for duplicate constructors and functions.
- Type Checker: Warn on using literals as tight packing parameters in keccak256, sha3, sha256 and ripemd160.
- Type Checker: Enforce view and pure.
- Type Checker: Enforce view / constant with error as experimental 0.5.0 feature.
- Type Checker: Enforce fallback functions to be external as experimental 0.5.0 feature.
- Code Generator: Always use all available gas for calls as experimental 0.5.0 feature
(previously, some amount was retained in order to work in pre-Tangerine-Whistle
EVM versions) - Parser: Better error message for unexpected trailing comma in parameter lists.
- Standard JSON: Support the outputSelection field for selective compilation of supplied sources.
- Syntax Checker: Unary + is now a syntax error as experimental 0.5.0 feature.
- Type Checker: Disallow non-pure constant state variables as experimental 0.5.0 feature.
- Type Checker: Do not add members of address to contracts as experimental 0.5.0 feature.
- Type Checker: Force interface functions to be external as experimental 0.5.0 feature.
- Type Checker: Require storage or memory keyword for local variables as experimental 0.5.0 feature.
Binaries
https://github.com/elementrem/solc-bin/tree/master/bin