This release fixes quite some bugs and also adds several new features.
Things to look out for:
- To disambiguate contracts and libraries of the same name in different files, everything is now prefixed by "filename:". This applies to the compiler output, the linker input and other things.
- Internal exceptions are now thrown by using an invalid opcode (0xfe), manual exceptions still use an invalid jump.
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.
- AST: Use deterministic node identifiers.
- Inline assembly: introduce invalid (EIP141) as an opcode.
- 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.
- Code generator: Extract array utils into low-level functions.
- 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.
Bugfixes:
- Code generator: Allow recursive structs.
- Inline assembly: Disallow variables named like opcodes.
- Type checker: Allow multiple events of the same name (but with different arities or argument types)
- Natspec parser: Fix error with @param parsing and whitespace.
A big thank you to all contributors who helped make this release possible!
Download the new version of Solidity here.