mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
188 lines
8.4 KiB
Markdown
188 lines
8.4 KiB
Markdown
|
Features:
|
||
|
|
||
|
* Fixed point types (in progress)
|
||
|
|
||
|
Bugfixes:
|
||
|
|
||
|
### 0.3.6 (2016-08-08)
|
||
|
|
||
|
Features:
|
||
|
|
||
|
* Formal verification: Take external effects on a contract into account.
|
||
|
* Type Checker: Warning about unused return value of low-level calls and send.
|
||
|
* Output: Source location and node id as part of AST output
|
||
|
* Output: Source location mappings for bytecode
|
||
|
* Output: Formal verification as part of json compiler output.
|
||
|
|
||
|
Bugfixes:
|
||
|
|
||
|
* Commandline Interface: Do not crash if input is taken from stdin.
|
||
|
* Scanner: Correctly support unicode escape codes in strings.
|
||
|
* JSON output: Fix error about relative / absolute source file names.
|
||
|
* JSON output: Fix error about invalid utf8 strings.
|
||
|
* Code Generator: Dynamic allocation of empty array caused infinite loop.
|
||
|
* Code Generator: Correctly calculate gas requirements for memcpy precompile.
|
||
|
* Optimizer: Clear known state if two code paths are joined.
|
||
|
|
||
|
### 0.3.5 (2016-06-10)
|
||
|
|
||
|
Features:
|
||
|
|
||
|
* Context-dependent path remappings (different modules can use the same library in different versions)
|
||
|
|
||
|
Bugfixes:
|
||
|
|
||
|
* Type Checking: Dynamic return types were removed when fetching data from external calls, now they are replaced by an "unusable" type.
|
||
|
* Type Checking: Overrides by constructors were considered making a function non-abstract.
|
||
|
|
||
|
### 0.3.4 (2016-05-31)
|
||
|
|
||
|
No change outside documentation.
|
||
|
|
||
|
### 0.3.3 (2016-05-27)
|
||
|
|
||
|
* Allow internal library functions to be called (by "inlining")
|
||
|
* Fractional/rational constants (only usable with fixed point types, which are still in progress)
|
||
|
* Inline assembly has access to internal functions (as jump labels)
|
||
|
* Running `solc` without arguments on a terminal will print help.
|
||
|
* Bugfix: Remove some non-determinism in code generation.
|
||
|
* Bugfix: Corrected usage of not / bnot / iszero in inline assembly
|
||
|
* Bugfix: Correctly clean bytesNN types before comparison
|
||
|
|
||
|
### 0.3.2 (2016-04-18)
|
||
|
|
||
|
* Bugfix: Inline assembly parser: `byte` opcode was unusable
|
||
|
* Bugfix: Error reporting: tokens for variably-sized types were not converted to string properly
|
||
|
* Bugfix: Dynamic arrays of structs were not deleted correctly.
|
||
|
* Bugfix: Static arrays in constructor parameter list were not decoded correctly.
|
||
|
|
||
|
### 0.3.1 (2016-03-31)
|
||
|
|
||
|
* Inline assembly
|
||
|
* Bugfix: Code generation: array access with narrow types did not clean higher order bits
|
||
|
* Bugfix: Error reporting: error reporting with unknown source location caused a crash
|
||
|
|
||
|
### 0.3.0 (2016-03-11)
|
||
|
|
||
|
BREAKING CHANGES:
|
||
|
|
||
|
* Added new keywords `assembly`, `foreign`, `fixed`, `ufixed`, `fixedNxM`, `ufixedNxM` (for various values of M and N), `timestamp`
|
||
|
* Number constant division does not round to integer, but to a fixed point type (e.g. `1 / 2 != 1`, but `1 / 2 == 0.5`).
|
||
|
* Library calls now default to use DELEGATECALL (e.g. called library functions see the same value as the calling function for `msg.value` and `msg.sender`).
|
||
|
* `<address>.delegatecall` as a low-level calling interface
|
||
|
|
||
|
Bugfixes:
|
||
|
* Fixed a bug in the optimizer that resulted in comparisons being wrong.
|
||
|
|
||
|
|
||
|
### 0.2.2 (2016-02-17)
|
||
|
|
||
|
* Index access for types `bytes1`, ..., `bytes32` (only read access for now).
|
||
|
* Bugfix: Type checker crash for wrong number of base constructor parameters.
|
||
|
|
||
|
### 0.2.1 (2016-01-30)
|
||
|
|
||
|
* Inline arrays, i.e. `var y = [1,x,f()];` if there is a common type for `1`, `x` and `f()`. Note that the result is always a fixed-length memory array and conversion to dynamic-length memory arrays is not yet possible.
|
||
|
* Import similar to ECMAScript6 import (`import "abc.sol" as d` and `import {x, y} from "abc.sol"`).
|
||
|
* Commandline compiler solc automatically resolves missing imports and allows for "include directories".
|
||
|
* Conditional: `x ? y : z`
|
||
|
* Bugfix: Fixed several bugs where the optimizer generated invalid code.
|
||
|
* Bugfix: Enums and structs were not accessible to other contracts.
|
||
|
* Bugfix: Fixed segfault connected to function paramater types, appeared during gas estimation.
|
||
|
* Bugfix: Type checker crash for wrong number of base constructor parameters.
|
||
|
* Bugfix: Allow function overloads with different array types.
|
||
|
* Bugfix: Allow assignments of type `(x) = 7`.
|
||
|
* Bugfix: Type `uint176` was not available.
|
||
|
* Bugfix: Fixed crash during type checking concerning constructor calls.
|
||
|
* Bugfix: Fixed crash during code generation concerning invalid accessors for struct types.
|
||
|
* Bugfix: Fixed crash during code generating concerning computing a hash of a struct type.
|
||
|
|
||
|
### 0.2.0 (2015-12-02)
|
||
|
|
||
|
* **Breaking Change**: `new ContractName.value(10)()` has to be written as `(new ContractName).value(10)()`
|
||
|
* Added `selfdestruct` as an alias for `suicide`.
|
||
|
* Allocation of memory arrays using `new`.
|
||
|
* Binding library functions to types via `using x for y`
|
||
|
* `addmod` and `mulmod` (modular addition and modular multiplication with arbitrary intermediate precision)
|
||
|
* Bugfix: Constructor arguments of fixed array type were not read correctly.
|
||
|
* Bugfix: Memory allocation of structs containing arrays or strings.
|
||
|
* Bugfix: Data location for explicit memory parameters in libraries was set to storage.
|
||
|
|
||
|
### 0.1.7 (2015-11-17)
|
||
|
|
||
|
* Improved error messages for unexpected tokens.
|
||
|
* Proof-of-concept transcompilation to why3 for formal verification of contracts.
|
||
|
* Bugfix: Arrays (also strings) as indexed parameters of events.
|
||
|
* Bugfix: Writing to elements of `bytes` or `string` overwrite others.
|
||
|
* Bugfix: "Successor block not found" on Windows.
|
||
|
* Bugfix: Using string literals in tuples.
|
||
|
* Bugfix: Cope with invalid commit hash in version for libraries.
|
||
|
* Bugfix: Some test framework fixes on windows.
|
||
|
|
||
|
### 0.1.6 (2015-10-16)
|
||
|
|
||
|
* `.push()` for dynamic storage arrays.
|
||
|
* Tuple expressions (`(1,2,3)` or `return (1,2,3);`)
|
||
|
* Declaration and assignment of multiple variables (`var (x,y,) = (1,2,3,4,5);` or `var (x,y) = f();`)
|
||
|
* Destructuring assignment (`(x,y,) = (1,2,3)`)
|
||
|
* Bugfix: Internal error about usage of library function with invalid types.
|
||
|
* Bugfix: Correctly parse `Library.structType a` at statement level.
|
||
|
* Bugfix: Correctly report source locations of parenthesized expressions (as part of "tuple" story).
|
||
|
|
||
|
### 0.1.5 (2015-10-07)
|
||
|
|
||
|
* Breaking change in storage encoding: Encode short byte arrays and strings together with their length in storage.
|
||
|
* Report warnings
|
||
|
* Allow storage reference types for public library functions.
|
||
|
* Access to types declared in other contracts and libraries via `.`.
|
||
|
* Version stamp at beginning of runtime bytecode of libraries.
|
||
|
* Bugfix: Problem with initialized string state variables and dynamic data in constructor.
|
||
|
* Bugfix: Resolve dependencies concerning `new` automatically.
|
||
|
* Bugfix: Allow four indexed arguments for anonymous events.
|
||
|
* Bugfix: Detect too large integer constants in functions that accept arbitrary parameters.
|
||
|
|
||
|
### 0.1.4 (2015-09-30)
|
||
|
|
||
|
* Bugfix: Returning fixed-size arrays.
|
||
|
* Bugfix: combined-json output of solc.
|
||
|
* Bugfix: Accessing fixed-size array return values.
|
||
|
* Bugfix: Disallow assignment from literal strings to storage pointers.
|
||
|
* Refactoring: Move type checking into its own module.
|
||
|
|
||
|
### 0.1.3 (2015-09-25)
|
||
|
|
||
|
* `throw` statement.
|
||
|
* Libraries that contain functions which are called via CALLCODE.
|
||
|
* Linker stage for compiler to insert other contract's addresses (used for libraries).
|
||
|
* Compiler option to output runtime part of contracts.
|
||
|
* Compile-time out of bounds check for access to fixed-size arrays by integer constants.
|
||
|
* Version string includes libevmasm/libethereum's version (contains the optimizer).
|
||
|
* Bugfix: Accessors for constant public state variables.
|
||
|
* Bugfix: Propagate exceptions in clone contracts.
|
||
|
* Bugfix: Empty single-line comments are now treated properly.
|
||
|
* Bugfix: Properly check the number of indexed arguments for events.
|
||
|
* Bugfix: Strings in struct constructors.
|
||
|
|
||
|
### 0.1.2 (2015-08-20)
|
||
|
|
||
|
* Improved commandline interface.
|
||
|
* Explicit conversion between `bytes` and `string`.
|
||
|
* Bugfix: Value transfer used in clone contracts.
|
||
|
* Bugfix: Problem with strings as mapping keys.
|
||
|
* Bugfix: Prevent usage of some operators.
|
||
|
|
||
|
### 0.1.1 (2015-08-04)
|
||
|
|
||
|
* Strings can be used as mapping keys.
|
||
|
* Clone contracts.
|
||
|
* Mapping members are skipped for structs in memory.
|
||
|
* Use only a single stack slot for storage references.
|
||
|
* Improved error message for wrong argument count. (#2456)
|
||
|
* Bugfix: Fix comparison between `bytesXX` types. (#2087)
|
||
|
* Bugfix: Do not allow floats for integer literals. (#2078)
|
||
|
* Bugfix: Some problem with many local variables. (#2478)
|
||
|
* Bugfix: Correctly initialise `string` and `bytes` state variables.
|
||
|
* Bugfix: Correctly compute gas requirements for callcode.
|
||
|
|
||
|
### 0.1.0 (2015-07-10)
|