solidity/Changelog.md

513 lines
25 KiB
Markdown
Raw Normal View History

2017-08-09 09:40:46 +00:00
### 0.4.16 (unreleased)
Features:
2017-07-17 09:38:29 +00:00
* ABI JSON: Include new field ``statemutability`` with values ``view``, ``nonpayable`` and ``payable``.
* Parser: Display previous visibility specifier in error if multiple are found.
* Syntax Checker: Support ``pragma experimental <feature>;`` to turn on experimental features.
2017-08-07 13:44:35 +00:00
* Static Analyzer: Warn about large storage structures.
* Metadata: Store experimental flag in metadata CBOR.
* Type Checker: More detailed error message for invalid overrides.
2017-08-09 09:40:46 +00:00
Bugfixes:
2017-08-08 21:58:06 +00:00
* Parser: Enforce commas between array and tuple elements.
2017-08-14 16:59:17 +00:00
* Parser: Limit maximum recursion depth.
2017-08-09 09:40:46 +00:00
2017-08-08 13:56:39 +00:00
### 0.4.15 (2017-08-08)
2017-07-31 15:57:21 +00:00
Features:
* Type Checker: Show unimplemented function if trying to instantiate an abstract class.
2017-07-31 15:57:21 +00:00
Bugfixes:
* Code Generator: ``.delegatecall()`` should always return execution outcome.
* Code Generator: Provide "new account gas" for low-level ``callcode`` and ``delegatecall``.
* Type Checker: Constructors must be implemented if declared.
* Type Checker: Disallow the ``.gas()`` modifier on ``ecrecover``, ``sha256`` and ``ripemd160``.
* Type Checker: Do not mark overloaded functions as shadowing other functions.
* Type Checker: Internal library functions must be implemented if declared.
2017-07-31 15:57:21 +00:00
2017-07-31 10:05:59 +00:00
### 0.4.14 (2017-07-31)
2017-07-06 12:13:00 +00:00
Features:
* 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.
2017-07-02 10:22:46 +00:00
* Inline Assembly: Support variable declaration without initial value (defaults to 0).
2017-07-12 23:47:15 +00:00
* 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.
2017-02-05 19:06:04 +00:00
* Type checker: Warn if using ``this`` in a constructor.
2017-02-02 11:39:12 +00:00
* Type checker: Warn when existing symbols, including builtins, are overwritten.
2017-07-06 12:13:00 +00:00
Bugfixes:
2017-07-28 10:05:43 +00:00
* Code Generator: Properly clear return memory area for ecrecover.
2017-07-27 09:51:01 +00:00
* Type Checker: Fix crash for some assignment to non-lvalue.
* Type Checker: Fix invalid "specify storage keyword" warning for reference members of structs.
2017-07-18 21:58:48 +00:00
* Type Checker: Mark modifiers as internal.
* Type Checker: Re-allow multiple mentions of the same modifier per function.
2017-07-06 12:13:00 +00:00
2017-07-06 09:06:13 +00:00
### 0.4.13 (2017-07-06)
2017-07-03 12:28:21 +00:00
Features:
2017-07-05 17:45:12 +00:00
* 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``.
2017-07-04 16:58:11 +00:00
Bugfixes:
* Code Generator: Correctly unregister modifier variables.
2017-07-05 17:45:12 +00:00
* Compiler Interface: Only output AST if analysis was successful.
2017-07-05 15:02:02 +00:00
* Error Output: Do not omit the error type.
2017-07-04 16:58:11 +00:00
2017-07-03 11:45:30 +00:00
### 0.4.12 (2017-07-03)
Features:
* Assembly: Add ``CREATE2`` (EIP86), ``STATICCALL`` (EIP214), ``RETURNDATASIZE`` and ``RETURNDATACOPY`` (EIP211) instructions.
* Assembly: Display auxiliary data in the assembly output.
* Assembly: Renamed ``SHA3`` to ``KECCAK256``.
2017-05-17 11:27:04 +00:00
* 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.
2017-06-13 18:10:26 +00:00
* Inline Assembly: Warn when using ``jump``s.
2017-05-30 08:17:02 +00:00
* Remove obsolete Why3 output.
2017-06-16 16:13:18 +00:00
* 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.
2017-06-30 14:37:08 +00:00
* Static Analyzer: Warn about deprecation of ``callcode``.
2017-05-04 09:57:34 +00:00
Bugfixes:
* Assembly: mark ``MLOAD`` to have side effects in the optimiser.
* Code Generator: Fix ABI encoding of empty literal string.
* Code Generator: Fix negative stack size checks.
* Code generator: Use ``REVERT`` instead of ``INVALID`` for generated input validation routines.
* Inline Assembly: Enforce function arguments when parsing functional instructions.
* Optimizer: Disallow optimizations involving ``MLOAD`` because it changes ``MSIZE``.
2017-07-03 11:45:30 +00:00
* Static Analyzer: Unused variable warnings no longer issued for variables used inside inline assembly.
* Type Checker: Fix address literals not being treated as compile-time constants.
2017-07-03 11:34:13 +00:00
* Type Checker: Fixed crash concerning non-callable types.
* Type Checker: Fixed segfault with constant function parameters
* Type Checker: Disallow comparisons between mapping and non-internal function types.
* Type Checker: Disallow invoking the same modifier multiple times.
2017-06-22 14:43:25 +00:00
* Type Checker: Do not treat strings that look like addresses as addresses.
2017-06-16 16:13:18 +00:00
* Type Checker: Support valid, but incorrectly rejected UTF-8 sequences.
### 0.4.11 (2017-05-03)
2017-03-15 17:53:12 +00:00
2017-02-11 03:14:21 +00:00
Features:
2017-04-19 17:56:05 +00:00
* Implement the Standard JSON Input / Output API
2017-02-11 03:14:21 +00:00
* Support ``interface`` contracts.
2017-04-19 17:56:05 +00:00
* 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.
2017-04-19 15:59:03 +00:00
* Commandline interface: Support ``--allow-paths`` to define trusted import paths. Note: the
path(s) of the supplied source file(s) is always trusted.
2017-04-25 11:21:54 +00:00
* 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 '+'
2017-02-11 03:14:21 +00:00
2017-03-21 17:13:36 +00:00
Bugfixes:
* Assembly output: Implement missing AssemblyItem types.
* Compiler interface: Fix a bug where source indexes could be inconsistent between Solidity compiled
with different compilers (clang vs. gcc) or compiler settings. The bug was visible in AST
and source mappings.
2017-04-26 10:48:19 +00:00
* Gas Estimator: Reflect the most recent fee schedule.
* Type system: Contract inheriting from base with unimplemented constructor should be abstract.
2017-04-03 12:40:17 +00:00
* Optimizer: Number representation bug in the constant optimizer fixed.
2017-03-21 17:13:36 +00:00
2017-03-15 16:04:16 +00:00
### 0.4.10 (2017-03-15)
2017-01-31 18:37:55 +00:00
Features:
2017-03-09 16:03:53 +00:00
* Add ``assert(condition)``, which throws if condition is false (meant for internal errors).
* Add ``require(condition)``, which throws if condition is false (meant for invalid input).
2017-03-10 18:11:01 +00:00
* Commandline interface: Do not overwrite files unless forced.
2017-02-05 20:21:14 +00:00
* Introduce ``.transfer(value)`` for sending Ether.
2017-02-06 22:47:05 +00:00
* Code generator: Support ``revert()`` to abort with rolling back, but not consuming all gas.
* Inline assembly: Support ``revert`` (EIP140) as an opcode.
* Parser: Support scientific notation in numbers (e.g. ``2e8`` and ``200e-2``).
* Type system: Support explicit conversion of external function to address.
* Type system: Warn if base of exponentiation is literal (result type might be unexpected).
2017-03-15 16:04:16 +00:00
* Type system: Warn if constant state variables are not compile-time constants.
2017-02-02 00:24:45 +00:00
Bugfixes:
2017-02-05 19:19:29 +00:00
* Commandline interface: Always escape filenames (replace ``/``, ``:`` and ``.`` with ``_``).
2017-02-05 19:39:30 +00:00
* Commandline interface: Do not try creating paths ``.`` and ``..``.
2017-03-14 10:58:43 +00:00
* Commandline interface: Allow long library names.
2017-03-07 11:35:42 +00:00
* Parser: Disallow octal literals.
2017-02-16 11:36:43 +00:00
* Type system: Fix a crash caused by continuing on fatal errors in the code.
2017-03-06 13:50:31 +00:00
* Type system: Disallow compound assignment for tuples.
2017-03-03 13:34:39 +00:00
* Type system: Detect cyclic dependencies between constants.
2017-02-02 00:24:45 +00:00
* Type system: Disallow arrays with negative length.
* Type system: Fix a crash related to invalid binary operators.
2017-03-01 14:47:25 +00:00
* Type system: Disallow ``var`` declaration with empty tuple type.
2017-03-01 15:09:19 +00:00
* Type system: Correctly convert function argument types to pointers for member functions.
2017-03-06 13:16:06 +00:00
* Type system: Move privateness of constructor into AST itself.
* Inline assembly: Charge one stack slot for non-value types during analysis.
2017-02-24 07:25:01 +00:00
* Assembly output: Print source location before the operation it refers to instead of after.
2017-03-03 16:12:07 +00:00
* Optimizer: Stop trying to optimize tricky constants after a while.
2017-02-02 00:24:45 +00:00
2017-01-31 16:54:03 +00:00
### 0.4.9 (2017-01-31)
2017-01-13 12:56:55 +00:00
2017-01-17 09:31:09 +00:00
Features:
* Compiler interface: Contracts and libraries can be referenced with a ``file:`` prefix to make them unique.
* Compiler interface: Report source location for "stack too deep" errors.
2017-01-17 09:31:09 +00:00
* AST: Use deterministic node identifiers.
* Inline assembly: introduce ``invalid`` (EIP141) as an opcode.
2017-01-17 09:47:44 +00:00
* Type system: Introduce type identifier strings.
* Type checker: Warn about invalid checksum for addresses and deduce type from valid ones.
* Metadata: Do not include platform in the version number.
* Metadata: Add option to store sources as literal content.
2017-01-20 13:44:44 +00:00
* Code generator: Extract array utils into low-level functions.
2017-01-27 09:18:53 +00:00
* Code generator: Internal errors (array out of bounds, etc.) now cause a reversion by using an invalid
instruction (0xfe - EIP141) instead of an invalid jump. Invalid jump is still kept for explicit throws.
2017-01-20 13:44:44 +00:00
Bugfixes:
* Code generator: Allow recursive structs.
2017-01-25 16:24:25 +00:00
* Inline assembly: Disallow variables named like opcodes.
2017-01-02 17:00:32 +00:00
* Type checker: Allow multiple events of the same name (but with different arities or argument types)
2017-01-27 13:09:19 +00:00
* Natspec parser: Fix error with ``@param`` parsing and whitespace.
2017-01-17 09:31:09 +00:00
2017-01-13 11:18:22 +00:00
### 0.4.8 (2017-01-13)
2016-12-15 13:03:31 +00:00
2017-01-11 15:20:13 +00:00
Features:
2017-01-12 16:52:23 +00:00
* Optimiser: Performance improvements.
2017-01-11 15:20:13 +00:00
* Output: Print assembly in new standardized Solidity assembly format.
2017-01-11 09:25:48 +00:00
Bugfixes:
* Remappings: Prefer longer context over longer prefix.
* Type checker, code generator: enable access to events of base contracts' names.
2017-01-06 15:21:16 +00:00
* Imports: ``import ".dir/a"`` is not a relative path. Relative paths begin with directory ``.`` or ``..``.
2017-01-09 17:32:02 +00:00
* Type checker, disallow inheritances of different kinds (e.g. a function and a modifier) of members of the same name
2016-12-15 11:15:09 +00:00
### 0.4.7 (2016-12-15)
2016-11-23 13:53:59 +00:00
Features:
2016-04-29 23:15:22 +00:00
* Bitshift operators.
* Type checker: Warn when ``msg.value`` is used in non-payable function.
2016-11-30 10:12:28 +00:00
* Code generator: Inject the Swarm hash of a metadata file into the bytecode.
2016-12-11 16:58:22 +00:00
* Code generator: Replace expensive memcpy precompile by simple assembly loop.
2016-11-23 13:53:59 +00:00
* Optimizer: Some dead code elimination.
Bugfixes:
* Code generator: throw if calling the identity precompile failed during memory (array) copying.
* Type checker: string literals that are not valid UTF-8 cannot be converted to string type
* Code generator: any non-zero value given as a boolean argument is now converted into 1.
2016-12-15 11:15:09 +00:00
* AST Json Converter: replace ``VariableDefinitionStatement`` nodes with ``VariableDeclarationStatement``
* AST Json Converter: fix the camel case in ``ElementaryTypeNameExpression``
* AST Json Converter: replace ``public`` field with ``visibility`` in the function definition nodes
2016-11-22 13:55:09 +00:00
### 0.4.6 (2016-11-22)
Bugfixes:
2016-11-23 10:00:06 +00:00
* Optimizer: Knowledge about state was not correctly cleared for JUMPDESTs (introduced in 0.4.5)
2016-11-22 13:55:09 +00:00
2016-11-21 10:18:04 +00:00
### 0.4.5 (2016-11-21)
2016-11-01 08:58:02 +00:00
Features:
2016-10-19 14:39:16 +00:00
* Function types
2016-11-21 10:18:04 +00:00
* Do-while loops: support for a ``do <block> while (<expr>);`` control structure
* Inline assembly: support ``invalidJumpLabel`` as a jump label.
2016-11-09 10:58:48 +00:00
* Type checker: now more eagerly searches for a common type of an inline array with mixed types
* Code generator: generates a runtime error when an out-of-range value is converted into an enum type.
2016-11-09 13:08:51 +00:00
Bugfixes:
* Inline assembly: calculate stack height warning correctly even when local variables are used.
2016-11-21 10:18:04 +00:00
* Code generator: check for value transfer in non-payable constructors.
2016-11-09 13:08:51 +00:00
* Parser: disallow empty enum definitions.
* Type checker: disallow conversion between different enum types.
* Interface JSON: do not include trailing new line.
2016-11-09 13:08:51 +00:00
2016-10-31 17:37:08 +00:00
### 0.4.4 (2016-10-31)
2016-10-25 13:39:38 +00:00
Bugfixes:
2016-10-24 18:12:31 +00:00
* Type checker: forbid signed exponential that led to an incorrect use of EXP opcode.
2016-10-31 16:10:51 +00:00
* Code generator: properly clean higher order bytes before storing in storage.
2016-10-25 13:39:38 +00:00
2016-10-25 12:55:50 +00:00
### 0.4.3 (2016-10-25)
2016-09-17 13:27:46 +00:00
Features:
2016-10-06 11:08:25 +00:00
2016-10-13 10:17:52 +00:00
* Inline assembly: support both ``suicide`` and ``selfdestruct`` opcodes
(note: ``suicide`` is deprecated).
2016-10-15 15:19:59 +00:00
* Inline assembly: issue warning if stack is not balanced after block.
2016-10-13 10:17:52 +00:00
* Include ``keccak256()`` as an alias to ``sha3()``.
2016-10-19 19:28:14 +00:00
* Support shifting constant numbers.
2016-10-06 11:23:05 +00:00
Bugfixes:
2016-10-20 11:25:20 +00:00
* Commandline interface: Disallow unknown options in ``solc``.
* Name resolver: Allow inheritance of ``enum`` definitions.
* Type checker: Proper type checking for bound functions.
2016-10-21 10:30:58 +00:00
* Type checker: fixed crash related to invalid fixed point constants
* Type checker: fixed crash related to invalid literal numbers.
2016-10-25 12:55:50 +00:00
* Type checker: ``super.x`` does not look up ``x`` in the current contract.
2016-10-20 11:25:20 +00:00
* Code generator: expect zero stack increase after ``super`` as an expression.
2016-10-25 12:55:50 +00:00
* Code generator: fix an internal compiler error for ``L.Foo`` for ``enum Foo`` defined in library ``L``.
* Code generator: allow inheritance of ``enum`` definitions.
2016-10-13 10:17:52 +00:00
* Inline assembly: support the ``address`` opcode.
* Inline assembly: fix parsing of assignment after a label.
2016-10-13 10:17:52 +00:00
* Inline assembly: external variables of unsupported type (such as ``this``, ``super``, etc.)
are properly detected as unusable.
2016-10-20 22:29:27 +00:00
* Inline assembly: support variables within modifiers.
2016-10-20 11:25:20 +00:00
* Optimizer: fix related to stale knowledge about SHA3 operations
2016-10-06 11:23:05 +00:00
2016-09-17 13:04:16 +00:00
### 0.4.2 (2016-09-17)
Bugfixes:
2016-09-15 16:01:13 +00:00
* Code Generator: Fix library functions being called from payable functions.
2016-09-15 16:01:13 +00:00
* Type Checker: Fixed a crash about invalid array types.
2016-09-16 15:03:47 +00:00
* Code Generator: Fixed a call gas bug that became visible after
version 0.4.0 for calls where the output is larger than the input.
2016-09-15 16:01:13 +00:00
### 0.4.1 (2016-09-09)
* Build System: Fixes to allow library compilation.
2016-09-08 11:55:45 +00:00
### 0.4.0 (2016-09-08)
2016-08-11 14:37:11 +00:00
This release deliberately breaks backwards compatibility mostly to
2016-09-08 11:55:45 +00:00
enforce some safety features. The most important change is that you have
to explicitly specify if functions can receive ether via the ``payable``
modifier. Furthermore, more situations cause exceptions to be thrown.
Minimal changes to be made for upgrade:
- Add ``payable`` to all functions that want to receive Ether
(including the constructor and the fallback function).
- Change ``_`` to ``_;`` in modifiers.
- Add version pragma to each file: ``pragma solidity ^0.4.0;``
2016-08-11 14:37:11 +00:00
Breaking Changes:
2016-08-31 22:04:35 +00:00
* Source files have to specify the compiler version they are
2016-09-06 10:27:22 +00:00
compatible with using e.g. ``pragma solidity ^0.4.0;`` or
``pragma solidity >=0.4.0 <0.4.8;``
* Functions that want to receive Ether have to specify the
new ``payable`` modifier (otherwise they throw).
2016-09-06 10:34:53 +00:00
* Contracts that want to receive Ether with a plain "send"
have to implement a fallback function with the ``payable``
modifier. Contracts now throw if no payable fallback
function is defined and no function matches the signature.
2016-09-06 10:27:22 +00:00
* Failing contract creation through "new" throws.
2016-09-06 17:43:34 +00:00
* Division / modulus by zero throws.
2016-08-11 14:37:11 +00:00
* Function call throws if target contract does not have code
* Modifiers are required to contain ``_`` (use ``if (false) _`` as a workaround if needed).
2016-09-06 17:43:34 +00:00
* Modifiers: return does not skip part in modifier after ``_``.
2016-09-05 12:54:50 +00:00
* Placeholder statement `_` in modifier now requires explicit `;`.
2016-09-06 17:43:34 +00:00
* ``ecrecover`` now returns zero if the input is malformed (it previously returned garbage).
2016-09-06 13:44:46 +00:00
* The ``constant`` keyword cannot be used for constructors or the fallback function.
2016-08-11 14:37:11 +00:00
* Removed ``--interface`` (Solidity interface) output option
* JSON AST: General cleanup, renamed many nodes to match their C++ names.
2016-09-06 17:43:34 +00:00
* JSON output: ``srcmap-runtime`` renamed to ``srcmapRuntime``.
2016-08-11 14:37:11 +00:00
* Moved (and reworked) standard library contracts from inside the compiler to github.com/ethereum/solidity/std
(``import "std";`` or ``import owned;`` do not work anymore).
2016-09-06 17:43:34 +00:00
* Confusing and undocumented keyword ``after`` was removed.
* New reserved words: ``abstract``, ``hex``, ``interface``, ``payable``, ``pure``, ``static``, ``view``.
2016-08-11 14:37:11 +00:00
2016-08-08 17:19:58 +00:00
Features:
2016-08-11 14:37:11 +00:00
* Hexadecimal string literals: ``hex"ab1248fe"``
* Internal: Inline assembly usable by the code generator.
* Commandline interface: Using ``-`` as filename allows reading from stdin.
2016-09-06 17:43:34 +00:00
* Interface JSON: Fallback function is now part of the ABI.
* Interface: Version string now *semver* compatible.
* Code generator: Do not provide "new account gas" if we know the called account exists.
2016-08-08 17:19:58 +00:00
Bugfixes:
2016-09-06 17:43:34 +00:00
* JSON AST: Nodes were added at wrong parent
* Why3 translator: Crash fix for exponentiation
* Commandline Interface: linking libraries with underscores in their name.
2016-08-11 14:37:11 +00:00
* Type Checker: Fallback function cannot return data anymore.
2016-09-06 17:43:34 +00:00
* Code Generator: Fix crash when ``sha3()`` was used on unsupported types.
* Code Generator: Manually set gas stipend for ``.send(0)``.
2016-08-11 14:37:11 +00:00
Lots of changes to the documentation mainly by voluntary external contributors.
2016-08-10 19:04:14 +00:00
### 0.3.6 (2016-08-10)
2016-08-08 17:19:58 +00:00
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)