Skip to content

Instantly share code, notes, and snippets.

@sambacha
Last active April 26, 2024 08:24
Show Gist options
  • Save sambacha/116b0dfc5c99cc8905545d63002b8f94 to your computer and use it in GitHub Desktop.
Save sambacha/116b0dfc5c99cc8905545d63002b8f94 to your computer and use it in GitHub Desktop.
Every Solidity Release and its description
{
repository(owner: "ethereum", name: "solidity") {
description
id
sshUrl
url
releases(last: 100) {
totalCount
nodes {
id
releaseAssets(last: 50) {
edges {
node {
downloadUrl
release {
publishedAt
url
id
name
description
}
}
}
}
url
name
}
}
}
}
{
"data": {
"viewer": {
"grapql": "github"
},
"repository": {
"releases": {
"edges": [
{
"node": {
"id": "MDc6UmVsZWFzZTE3MDQyOTU=",
"description": "Changes:\n- Improved commandline interface (breaking change).\n- Explicit conversion between bytes and string.\n- Bugfix: Value transfer used in clone contracts.\n- Bugfix: Problem with strings as mapping keys.\n- Bugfix: Prevent usage of some operators.\n",
"createdAt": "2015-08-20T00:12:37Z",
"name": "Version 0.1.2",
"publishedAt": "2015-08-21T11:03:14Z",
"resourcePath": "/ethereum/solidity/releases/tag/v0.1.2",
"tagName": "v0.1.2",
"url": "https://github.com/ethereum/solidity/releases/tag/v0.1.2"
}
},
{
"node": {
"id": "MDc6UmVsZWFzZTE4NTI2NzQ=",
"description": "Changes:\n- `throw` statement.\n- Libraries that contain functions which are called via CALLCODE.\n- Linker stage for compiler to insert other contract's addresses (used for libraries).\n- Compiler option to output runtime part of contracts.\n- Compile-time out of bounds check for access to fixed-size arrays by integer constants.\n- Version string includes libevmasm/libethereum's version (contains the optimizer).\n- Bugfix: Accessors for constant public state variables.\n- Bugfix: Propagate exceptions in clone contracts.\n- Bugfix: Empty single-line comments are now treated properly.\n- Bugfix: Properly check the number of indexed arguments for events.\n- Bugfix: Strings in struct constructors.\n",
"createdAt": "2015-09-22T22:34:37Z",
"name": "Version 0.1.3",
"publishedAt": "2015-09-22T23:25:01Z",
"resourcePath": "/ethereum/solidity/releases/tag/v0.1.3",
"tagName": "v0.1.3",
"url": "https://github.com/ethereum/solidity/releases/tag/v0.1.3"
}
},
{
"node": {
"id": "MDc6UmVsZWFzZTE4OTA3MTA=",
"description": "Changes:\n- Bugfix: combined-json output of solc incorrectly returned the runtime binary instead of the binary.\n- Bugfix: Accessing fixed-size array return values.\n- Bugfix: Disallow assignment from literal strings to storage pointers.\n- Refactoring: Move type checking into its own module.\n",
"createdAt": "2015-09-30T15:03:00Z",
"name": "Version 0.1.4",
"publishedAt": "2015-09-30T15:05:20Z",
"resourcePath": "/ethereum/solidity/releases/tag/v0.1.4",
"tagName": "v0.1.4",
"url": "https://github.com/ethereum/solidity/releases/tag/v0.1.4"
}
},
{
"node": {
"id": "MDc6UmVsZWFzZTE5MjUzMTY=",
"description": "Changes:\n- Breaking change in storage encoding: Encode short byte arrays and strings together with their length in storage.\n- Report warnings.\n- Allow storage reference types for public library functions.\n- Access to types declared in other contracts and libraries via `.`.\n- Version stamp at beginning of runtime bytecode of libraries.\n- Bugfix: Problem with initialized string state variables and dynamic data in constructor.\n- Bugfix: Resolve dependencies concerning `new` automatically.\n- Bugfix: Allow four indexed arguments for anonymous events.\n- Bugfix: Detect too large integer constants in functions that accept arbitrary parameters.\n",
"createdAt": "2015-10-07T16:43:52Z",
"name": "Version 0.1.5",
"publishedAt": "2015-10-07T16:45:17Z",
"resourcePath": "/ethereum/solidity/releases/tag/v0.1.5",
"tagName": "v0.1.5",
"url": "https://github.com/ethereum/solidity/releases/tag/v0.1.5"
}
},
{
"node": {
"id": "MDc6UmVsZWFzZTE5NzI2Mjc=",
"description": "Features:\n- `.push()` for dynamic storage arrays.\n- Tuple expressions (`(1,2,3)` or `return (1,2,3);`)\n- Declaration and assignment of multiple variables (`var (x,y,) = (1,2,3,4,5);` or `var (x,y) = f();`)\n- Destructuring assignment (`(x,y,) = (1,2,3)`)\n- Handling of multiple source files in the json compiler.\n\nBugfixes:\n- Internal error about usage of library function with invalid types.\n- Correctly parse `Library.structType a` at statement level.\n- Correctly report source locations of parenthesized expressions (as part of \"tuple\" story).\n",
"createdAt": "2015-10-16T15:00:38Z",
"name": "Version 0.1.6",
"publishedAt": "2015-10-16T15:02:04Z",
"resourcePath": "/ethereum/solidity/releases/tag/v0.1.6",
"tagName": "v0.1.6",
"url": "https://github.com/ethereum/solidity/releases/tag/v0.1.6"
}
},
{
"node": {
"id": "MDc6UmVsZWFzZTIxMzk4MjE=",
"description": "Features:\n- Improved error messages for unexpected tokens.\n- Proof-of-concept transcompilation to why3 for formal verification of contracts.\n\nBugfixes:\n- Writing to elements of `bytes` or `string` overwrite others.\n- Arrays (also strings) as indexed parameters of events.\n- \"Successor block not found\" on Windows.\n- Using string literals in tuples.\n- Cope with invalid commit hash in version for libraries.\n- Some test framework fixes on windows.\n\nNote: The source code download automatically generated by github below is not usable due to the way the repositories are laid out.\n",
"createdAt": "2015-11-17T15:09:29Z",
"name": "Version 0.1.7",
"publishedAt": "2015-11-17T15:12:49Z",
"resourcePath": "/ethereum/solidity/releases/tag/v0.1.7",
"tagName": "v0.1.7",
"url": "https://github.com/ethereum/solidity/releases/tag/v0.1.7"
}
},
{
"node": {
"id": "MDc6UmVsZWFzZTIyMTM3NTk=",
"description": "Features:\n- Allocation of memory arrays using `new`.\n- Binding library functions to types via `using x for y`\n- **Breaking Change**: `new ContractName.value(10)()` has to be written as `(new ContractName).value(10)()`\n- Added `selfdestruct` as an alias for `suicide`.\n\nBugfixes:\n- Constructor arguments of fixed array type were not read correctly.\n- Memory allocation of structs containing arrays or strings.\n- Data location for explicit memory parameters in libraries was set to storage.\n\nThe two main features of this release is the ability to create memory arrays (of dynamic length) and to\n[attach library functions to types](https://ethereum.github.io/solidity//docs/using-for/). The latter provides a way to make elegant use of complex data types in the way we are used to from other languages and paves the way to creating an extensive and easy to use standard library. The next step into that direction is the introduction of a clean module system.\n\n_note_: The source below cannot be used without the dependent repositories.\n",
"createdAt": "2015-12-01T15:20:49Z",
"name": "Version 0.2.0 (breaking change)",
"publishedAt": "2015-12-01T15:21:29Z",
"resourcePath": "/ethereum/solidity/releases/tag/v0.2.0",
"tagName": "v0.2.0",
"url": "https://github.com/ethereum/solidity/releases/tag/v0.2.0"
}
},
{
"node": {
"id": "MDc6UmVsZWFzZTI1MjI1NDc=",
"description": "This release includes three major features and one very important bugfix in the optimizer.\n\nIn some situations, the optimizer generated incorrect code. Please always test your code before you use it, unfortunately, we can never guarantee 100% correctness.\n\nWe are especially grateful about the many voluntary community contributions this release received.\nTwo fearless individuals dived deep into the solidity code and delivered two major features: Thanks a lot to @VoR0220 for the inline arrays and to @guanqun for the ternary operator!\nFurthermore, @bobsummerwill spent a lot of free time handling build issues on MacOS and other platforms.\nOther contributions came from @axic, @chfast, @ethers, @janx, @pipermerriam and @u2.\n\nFeatures:\n- **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.\n- **Import** similar to ECMAScript6 import (`import \"abc.sol\" as d` and `import {x, y} from \"abc.sol\"`). [Documentation](https://solidity.readthedocs.org/en/latest/layout-of-source-files.html#importing-other-source-files) \n- Commandline compiler solc automatically resolves missing imports and allows for \"include directories\". [Documentation](https://solidity.readthedocs.org/en/latest/layout-of-source-files.html#use-in-actual-compilers)\n- **Conditional** / ternary operator: `x ? y : z`\n\nFixed bugs:\n- Several bugs where the optimizer generated invalid code.\n- Enums and structs were not accessible to other contracts.\n- Fixed segfault connected to function paramater types, appeared during gas estimation.\n- Type checker crash for wrong number of base constructor parameters.\n- Allow function overloads with different array types.\n- Allow assignments of type `(x) = 7`.\n- Type `uint176` was not available.\n- Fixed crash during type checking concerning constructor calls.\n- Fixed crash during code generation concerning invalid accessors for struct types.\n- Fixed crash during code generating concerning computing a hash of a struct type.\n\nnote: The source below cannot be used without the dependent repositories.\n",
"createdAt": "2016-01-30T15:40:13Z",
"name": "Version 0.2.1",
"publishedAt": "2016-01-30T15:40:59Z",
"resourcePath": "/ethereum/solidity/releases/tag/v0.2.1",
"tagName": "v0.2.1",
"url": "https://github.com/ethereum/solidity/releases/tag/v0.2.1"
}
},
{
"node": {
"id": "MDc6UmVsZWFzZTI2MzQzNDQ=",
"description": "Features:\n- Index access for types `bytes1`, ..., `bytes32` (only read access for now).\n\nBugfixes:\n- Type checker crash for wrong number of base constructor parameters.\n\nnote: The source below cannot be used without the dependent repositories.\n",
"createdAt": "2016-02-17T16:33:20Z",
"name": "Version 0.2.2",
"publishedAt": "2016-02-17T18:27:35Z",
"resourcePath": "/ethereum/solidity/releases/tag/v0.2.2",
"tagName": "v0.2.2",
"url": "https://github.com/ethereum/solidity/releases/tag/v0.2.2"
}
},
{
"node": {
"id": "MDc6UmVsZWFzZTI3ODUwMzk=",
"description": "This version is synchronized to the Homestead changes on the main Ethereum network and introduces various breaking changes.\n\nBREAKING CHANGES:\n- You should not rely on division for literals resulting in a (truncated) integer. This is still the case but will change once we implement fixed point types, i.e. in the future `1/2 == 0.5` will be true, currently we have `1/2 == 0`. Note that this only applies to literals (`(2 + 7) / 2`) and not variables (`x / 2`).\n- 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`).\n- Added new keywords `assembly`, `fixed`, `ufixed`, `fixedNxM`, `ufixedNxM` (for various values of M and N), `inline` in preparation for future features.\n\nFeatures:\n- `<address>.delegatecall` is provided as a low-level calling interface for DELEGATECALL\n\nBugfixes:\n- Fixed a bug in the optimizer that resulted in comparisons being wrong.\n\nnote: The source below cannot be used without the dependent repositories.\n",
"createdAt": "2016-03-11T16:53:33Z",
"name": "Version 0.3.0 (includes breaking changes)",
"publishedAt": "2016-03-11T16:58:49Z",
"resourcePath": "/ethereum/solidity/releases/tag/v0.3.0",
"tagName": "v0.3.0",
"url": "https://github.com/ethereum/solidity/releases/tag/v0.3.0"
}
},
{
"node": {
"id": "MDc6UmVsZWFzZTI5MjM0MTI=",
"description": "This release mainly introduces inline assembly ([documentation](https://solidity.readthedocs.org/en/latest/control-structures.html#inline-assembly)). Inline assembly provides a way to write low-level but still well readable code. Together with the coming features of inline library functions and templates, it allows to move much of the development that had to be done in the compiler itself into libraries written in Solidity. In the future, it will be possible to introduce new versatile types that still look like builtins.\n\n**Features:**\n- inline assembly\n\n**Fixes:**\n- Code generation: array access with narrow types did not clean higher order bits\n- Error reporting: error reporting with unknown source location caused a crash\n\nnote: The source below cannot be used without the dependent repositories.\n",
"createdAt": "2016-03-31T16:47:56Z",
"name": "Version 0.3.1",
"publishedAt": "2016-03-31T16:49:39Z",
"resourcePath": "/ethereum/solidity/releases/tag/v0.3.1",
"tagName": "v0.3.1",
"url": "https://github.com/ethereum/solidity/releases/tag/v0.3.1"
}
},
{
"node": {
"id": "MDc6UmVsZWFzZTMwNDQwMjg=",
"description": "This is mainly a bugfix release. Under the hood, we are in the process of separating the Solidity source code from the rest of the cpp-ethereum source code so that it can soon be built (and released) in isolation.\n\n**Fixes:**\n- Code generation: Dynamic arrays of structs were not deleted correctly.\n- Code generation: Static arrays in constructor parameter list were not decoded correctly.\n- Parser: Inline assembly parser: `byte` opcode was unusable\n- Error reporting: tokens for variably-sized types were not converted to string properly\n\nnote: The source below cannot be used without the dependent repositories.\n",
"createdAt": "2016-04-18T15:33:11Z",
"name": "Version 0.3.2",
"publishedAt": "2016-04-18T17:34:41Z",
"resourcePath": "/ethereum/solidity/releases/tag/v0.3.2",
"tagName": "v0.3.2",
"url": "https://github.com/ethereum/solidity/releases/tag/v0.3.2"
}
},
{
"node": {
"id": "MDc6UmVsZWFzZTMzMjI2ODQ=",
"description": "This release mainly makes libraries more flexible in that it allows internal functions to be called.\n\n**Features**\n- Allow internal library functions to be called (by \"inlining\")\n- Fractional/rational constants (only usable with fixed point types, which are still in progress)\n- Inline assembly has access to internal functions (as jump labels)\n- Running `solc` without arguments on a terminal will print help.\n\n**Fixes**\n- Code Generation: Remove some non-determinism in code generation.\n- Code Generation: Corrected usage of not / bnot / iszero in inline assembly\n- Code Generation: Correctly clean bytesNN types before comparison\n\nnote: The source below cannot be used without the dependent repositories.\n",
"createdAt": "2016-05-27T15:38:36Z",
"name": "Version 0.3.3",
"publishedAt": "2016-05-27T17:02:12Z",
"resourcePath": "/ethereum/solidity/releases/tag/v0.3.3",
"tagName": "v0.3.3",
"url": "https://github.com/ethereum/solidity/releases/tag/v0.3.3"
}
},
{
"node": {
"id": "MDc6UmVsZWFzZTMzNDQyMTc=",
"description": "This release contains no changes outside of the documentation.\n\nnote: The source below cannot be used without the dependent repositories.\n",
"createdAt": "2016-05-31T18:01:48Z",
"name": "Version 0.3.4",
"publishedAt": "2016-05-31T21:23:23Z",
"resourcePath": "/ethereum/solidity/releases/tag/v0.3.4",
"tagName": "v0.3.4",
"url": "https://github.com/ethereum/solidity/releases/tag/v0.3.4"
}
},
{
"node": {
"id": "MDc6UmVsZWFzZTM0MTkyMjU=",
"description": "**Features:**\n- Context-dependent path remappings (different modules can use the same library in different versions)\n\n**Bugfixes:**\n- Type Checking: Dynamic return types were removed when fetching data from external calls, now they are replaced by an \"unusable\" type.\n- Type Checking: Overrides by constructors were considered making a function non-abstract.\n\nnote: The source below cannot be used without the dependent repositories.\n",
"createdAt": "2016-06-10T16:00:49Z",
"name": "Version 0.3.5",
"publishedAt": "2016-06-10T16:02:13Z",
"resourcePath": "/ethereum/solidity/releases/tag/v0.3.5",
"tagName": "v0.3.5",
"url": "https://github.com/ethereum/solidity/releases/tag/v0.3.5"
}
},
{
"node": {
"id": "MDc6UmVsZWFzZTM4NTkyMTk=",
"description": "This is the first release from the new \"solidity-standalone\" repository. It does not have dependencies to cpp-ethereum anymore and can be built just from the solidity github repository.\n\nNote that the optimizer was disabled in some situations which could lead to larger (but correcter) code.\n\nFeatures:\n- Formal verification: Take external effects on a contract into account.\n- Type Checker: Warning about unused return value of low-level calls and send.\n- Output: Source location and node id as part of AST output\n- Output: Source location mappings for bytecode\n- Output: Formal verification as part of json compiler output.\n\nBugfixes:\n- Commandline Interface: Do not crash if input is taken from stdin.\n- Scanner: Correctly support unicode escape codes in strings.\n- JSON output: Fix error about relative / absolute source file names.\n- JSON output: Fix error about invalid utf8 strings.\n- Code Generator: Dynamic allocation of empty array caused infinite loop.\n- Code Generator: Correctly calculate gas requirements for memcpy precompile.\n- Optimizer: Clear known state if two code paths are joined.\n\nNote regarding the PPA: This version of the solc package conflicts with the cpp-ethereum package (because that still contains solidity). Please uninstall cpp-ethereum before installing solc until we also have a new cpp-ethereum release.\n\nThe source below cannot be used without the dependent repositories.\n",
"createdAt": "2016-08-10T19:07:15Z",
"name": "Version 0.3.6",
"publishedAt": "2016-08-10T19:09:12Z",
"resourcePath": "/ethereum/solidity/releases/tag/v0.3.6",
"tagName": "v0.3.6",
"url": "https://github.com/ethereum/solidity/releases/tag/v0.3.6"
}
},
{
"node": {
"id": "MDc6UmVsZWFzZTQwODExMjY=",
"description": "**Note:** Version 0.4.0 is unable to compile libraries. Please upgrade to 0.4.1.\n\nThis release deliberately breaks backwards compatibility mostly to 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.\n\nMinimal changes to be made for upgrade:\n- Add `payable` to all functions that want to receive Ether (including the constructor and the fallback function).\n- Change `_` to `_;` in modifiers.\n- Add version pragma to each file: `pragma solidity ^0.4.0;`\n\nBreaking Changes:\n- Source files have to specify the compiler version they are compatible with using e.g. `pragma solidity ^0.4.0;` or\n `pragma solidity >=0.4.0 <0.4.8;`\n- Functions that want to receive Ether have to specify the\n new `payable` modifier (otherwise they throw).\n- Contracts that want to receive Ether with a plain \"send\"\n have to implement a fallback function with the `payable`\n modifier. Contracts now throw if no payable fallback\n function is defined and no function matches the signature.\n- Failing contract creation through \"new\" throws.\n- Division / modulus by zero throws.\n- Function call throws if target contract does not have code\n- Modifiers are required to contain `_` (use `if (false) _` as a workaround if needed).\n- Modifiers: return does not skip part in modifier after `_`.\n- Placeholder statement `_` in modifier now requires explicit `;`.\n- `ecrecover` now returns zero if the input is malformed (it previously returned garbage).\n- The `constant` keyword cannot be used for constructors or the fallback function.\n- Removed `--interface` (Solidity interface) output option\n- JSON AST: General cleanup, renamed many nodes to match their C++ names.\n- JSON output: `srcmap-runtime` renamed to `srcmapRuntime`.\n- Moved (and reworked) standard library contracts from inside the compiler to github.com/ethereum/solidity/std\n (`import \"std\";` or `import owned;` do not work anymore).\n- Confusing and undocumented keyword `after` was removed.\n- New reserved words: `abstract`, `hex`, `interface`, `payable`, `pure`, `static`, `view`.\n\nFeatures:\n- Hexadecimal string literals: `hex\"ab1248fe\"`\n- Internal: Inline assembly usable by the code generator.\n- Commandline interface: Using `-` as filename allows reading from stdin.\n- Interface JSON: Fallback function is now part of the ABI.\n- Interface: Version string now _semver_ compatible.\n- Code generator: Do not provide \"new account gas\" if we know the called account exists.\n\nBugfixes:\n- JSON AST: Nodes were added at wrong parent\n- Why3 translator: Crash fix for exponentiation\n- Commandline Interface: linking libraries with underscores in their name.\n- Type Checker: Fallback function cannot return data anymore.\n- Code Generator: Fix crash when `sha3()` was used on unsupported types.\n- Code Generator: Manually set gas stipend for `.send(0)`.\n\nLots of changes to the documentation mainly by voluntary external contributors.\n",
"createdAt": "2016-09-08T12:38:10Z",
"name": "Version 0.4.0",
"publishedAt": "2016-09-08T14:22:32Z",
"resourcePath": "/ethereum/solidity/releases/tag/v0.4.0",
"tagName": "v0.4.0",
"url": "https://github.com/ethereum/solidity/releases/tag/v0.4.0"
}
},
{
"node": {
"id": "MDc6UmVsZWFzZTQwODg5MDY=",
"description": "This is a bugfix release that fixes an error when compiling libraries with the latest version 0.4.0.\n",
"createdAt": "2016-09-09T10:23:50Z",
"name": "Version 0.4.1",
"publishedAt": "2016-09-09T10:38:32Z",
"resourcePath": "/ethereum/solidity/releases/tag/v0.4.1",
"tagName": "v0.4.1",
"url": "https://github.com/ethereum/solidity/releases/tag/v0.4.1"
}
},
{
"node": {
"id": "MDc6UmVsZWFzZTQxNTkwODI=",
"description": "Bugfixes:\n- Code Generator: Fix library functions being called from payable functions.\n- Type Checker: Fixed a crash about invalid array types.\n- Code Generator: Fixed a call gas bug that became visible after\n version 0.4.0 for calls where the output is larger than the input.\n",
"createdAt": "2016-09-17T13:25:54Z",
"name": "Version 0.4.2",
"publishedAt": "2016-09-17T13:36:22Z",
"resourcePath": "/ethereum/solidity/releases/tag/v0.4.2",
"tagName": "v0.4.2",
"url": "https://github.com/ethereum/solidity/releases/tag/v0.4.2"
}
},
{
"node": {
"id": "MDc6UmVsZWFzZTQ0NzgyMTY=",
"description": "This is a real bugfix release as you can see from the changelog below. The most important fix concerns the optimizer which generated invalid code connected to the `SHA3` opcode in certain situations.\n\nFeatures:\n- Inline assembly: support both `suicide` and `selfdestruct` opcodes\n (note: `suicide` is deprecated).\n- Inline assembly: issue warning if stack is not balanced after block.\n- Include `keccak256()` as an alias to `sha3()`.\n- Support shifting constant numbers.\n\nBugfixes:\n- Commandline interface: Disallow unknown options in `solc`.\n- Name resolver: Allow inheritance of `enum` definitions.\n- Type checker: Proper type checking for bound functions.\n- Type checker: fixed crash related to invalid fixed point constants\n- Type checker: fixed crash related to invalid literal numbers.\n- Type checker: `super.x` does not look up `x` in the current contract.\n- Code generator: expect zero stack increase after `super` as an expression.\n- Code generator: fix an internal compiler error for `L.Foo` for `enum Foo` defined in library `L`.\n- Code generator: allow inheritance of `enum` definitions.\n- Inline assembly: support the `address` opcode.\n- Inline assembly: fix parsing of assignment after a label.\n- Inline assembly: external variables of unsupported type (such as `this`, `super`, etc.)\n are properly detected as unusable.\n- Inline assembly: support variables within modifiers.\n- Optimizer: fix related to stale knowledge about SHA3 operations\n",
"createdAt": "2016-10-25T13:32:37Z",
"name": "Version 0.4.3",
"publishedAt": "2016-10-25T13:53:29Z",
"resourcePath": "/ethereum/solidity/releases/tag/v0.4.3",
"tagName": "v0.4.3",
"url": "https://github.com/ethereum/solidity/releases/tag/v0.4.3"
}
},
{
"node": {
"id": "MDc6UmVsZWFzZTQ1MzQ3MDA=",
"description": "This is a bugfix release that fixes a storage corruption that appears when multiple variables are stored in the same slot ([details](https://blog.ethereum.org/2016/11/01/security-alert-solidity-variables-can-overwritten-storage/)).\n\nBugfixes:\n- Type checker: forbid signed exponential that led to an incorrect use of EXP opcode.\n- Code generator: properly clean higher order bytes before storing in storage.\n",
"createdAt": "2016-10-31T18:21:04Z",
"name": "Version 0.4.4",
"publishedAt": "2016-11-01T08:53:28Z",
"resourcePath": "/ethereum/solidity/releases/tag/v0.4.4",
"tagName": "v0.4.4",
"url": "https://github.com/ethereum/solidity/releases/tag/v0.4.4"
}
},
{
"node": {
"id": "MDc6UmVsZWFzZTQ3MTU3MzA=",
"description": "This Solidity release adds [function types](https://solidity.readthedocs.io/en/develop/types.html#function-types). Use-cases include supplying callbacks for asynchronous or off-chain operations or generic library features (for example map-reduce-style programming). This release also improves the safety of enums and sending Ether to a contract constructor.\n\nFeatures:\n- Function types\n- Do-while loops: support for a `do <block> while (<expr>);` control structure\n- Inline assembly: support `invalidJumpLabel` as a jump label.\n- Type checker: now more eagerly searches for a common type of an inline array with mixed types\n- Code generator: generates a runtime error when an out-of-range value is converted into an enum type.\n\nBugfixes:\n- Inline assembly: calculate stack height warning correctly even when local variables are used.\n- Code generator: check for value transfer in non-payable constructors.\n- Parser: disallow empty enum definitions.\n- Type checker: disallow conversion between different enum types.\n- Interface JSON: do not include trailing new line.\n\nSwarm hash of js compiler: bzzr://de94c41f727124a5b02bd1db087e6bcba19a682c5d89bf3cdaa650e9fdd08403\n",
"createdAt": "2016-11-21T10:42:38Z",
"name": "Version 0.4.5",
"publishedAt": "2016-11-21T11:26:06Z",
"resourcePath": "/ethereum/solidity/releases/tag/v0.4.5",
"tagName": "v0.4.5",
"url": "https://github.com/ethereum/solidity/releases/tag/v0.4.5"
}
},
{
"node": {
"id": "MDc6UmVsZWFzZTQ3MzAyNDc=",
"description": "Bugfixes:\n- Optimizer: Knowledge about state was not correctly cleared for JUMPDESTs\n\nSwarm hash of js compiler: bzzr:/b873fa122233c91b1531527c390f6ca49df4d2a2c5f75706f4b612a0c813cb6a\n",
"createdAt": "2016-11-22T14:34:17Z",
"name": "Version 0.4.6",
"publishedAt": "2016-11-22T14:35:16Z",
"resourcePath": "/ethereum/solidity/releases/tag/v0.4.6",
"tagName": "v0.4.6",
"url": "https://github.com/ethereum/solidity/releases/tag/v0.4.6"
}
},
{
"node": {
"id": "MDc6UmVsZWFzZTQ5MjkzNjg=",
"description": "Features:\n- Bitshift operators.\n- Type checker: Warn when `msg.value` is used in non-payable function.\n- Code generator: Inject the Swarm hash of a metadata file into the bytecode.\n- Code generator: Replace expensive memcpy precompile by simple assembly loop.\n- Optimizer: Some dead code elimination.\n\nBugfixes:\n- Code generator: throw if calling the identity precompile failed during memory (array) copying.\n- Type checker: string literals that are not valid UTF-8 cannot be converted to string type\n- Code generator: any non-zero value given as a boolean argument is now converted into 1.\n- AST Json Converter: replace `VariableDefinitionStatement` nodes with `VariableDeclarationStatement`\n- AST Json Converter: fix the camel case in `ElementaryTypeNameExpression`\n- AST Json Converter: replace `public` field with `visibility` in the function definition nodes\n\nSwarm hash of javascript binary: bzzr://de00cf8d235867a00d831e0055b376420789977d276c02e6ff0d1d5b00f5d84d\n",
"createdAt": "2016-12-15T11:16:56Z",
"name": "Version 0.4.7",
"publishedAt": "2016-12-15T13:00:34Z",
"resourcePath": "/ethereum/solidity/releases/tag/v0.4.7",
"tagName": "v0.4.7",
"url": "https://github.com/ethereum/solidity/releases/tag/v0.4.7"
}
},
{
"node": {
"id": "MDc6UmVsZWFzZTUxNTE4NTY=",
"description": "Features:\n- Optimiser: Performance improvements.\n- Output: Print assembly in new standardized Solidity assembly format.\n\nBugfixes:\n- Remappings: Prefer longer context over longer prefix.\n- Type checker, code generator: enable access to events of base contracts' names.\n- Imports: `import \".dir/a\"` is not a relative path. Relative paths begin with directory `.` or `..`.\n- Type checker: disallow inheritances of different kinds (e.g. a function and a modifier) of members of the same name\n\nIf you want to perform a source build, please only use solidity_0.4.8.tar.gz and not the zip provided by github directly.\n",
"createdAt": "2017-01-13T12:05:02Z",
"name": "Version 0.4.8",
"publishedAt": "2017-01-13T12:40:58Z",
"resourcePath": "/ethereum/solidity/releases/tag/v0.4.8",
"tagName": "v0.4.8",
"url": "https://github.com/ethereum/solidity/releases/tag/v0.4.8"
}
},
{
"node": {
"id": "MDc6UmVsZWFzZTUzMTgxNzg=",
"description": "This release fixes quite some bugs and also adds several new features.\n\nThings to look out for:\n- 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.\n- Internal exceptions are now thrown by using an invalid opcode (0xfe), manual exceptions still use an invalid jump.\n\nFeatures:\n- Compiler interface: Contracts and libraries can be referenced with a `file:` prefix to make them unique.\n- Compiler interface: Report source location for \"stack too deep\" errors.\n- AST: Use deterministic node identifiers.\n- Inline assembly: introduce `invalid` (EIP141) as an opcode.\n- Type system: Introduce type identifier strings.\n- Type checker: Warn about invalid checksum for addresses and deduce type from valid ones.\n- Metadata: Do not include platform in the version number.\n- Metadata: Add option to store sources as literal content.\n- Code generator: Extract array utils into low-level functions.\n- Code generator: Internal errors (array out of bounds, etc.) now cause a reversion by using an invalid\n instruction (0xfe - EIP141) instead of an invalid jump. Invalid jump is still kept for explicit throws.\n\nBugfixes:\n- Code generator: Allow recursive structs.\n- Inline assembly: Disallow variables named like opcodes.\n- Type checker: Allow multiple events of the same name (but with different arities or argument types)\n- Natspec parser: Fix error with `@param` parsing and whitespace.\n",
"createdAt": "2017-01-31T17:29:51Z",
"name": "Version 0.4.9",
"publishedAt": "2017-01-31T18:33:43Z",
"resourcePath": "/ethereum/solidity/releases/tag/v0.4.9",
"tagName": "v0.4.9",
"url": "https://github.com/ethereum/solidity/releases/tag/v0.4.9"
}
},
{
"node": {
"id": "MDc6UmVsZWFzZTU3NTU4NzY=",
"description": "This release is focused on stability and also introduces some new smart contract safety features: ``require``, ``assert`` and ``transfer``. Note that the new ``revert`` function will only be gas-efficient starting from homestead.\r\n\r\n**Features:**\r\n * Add ``assert(condition)``, which throws if condition is false (meant for internal errors).\r\n * Add ``require(condition)``, which throws if condition is false (meant for invalid input).\r\n * Commandline interface: Do not overwrite files unless forced.\r\n * Introduce ``.transfer(value)`` for sending Ether.\r\n * Code generator: Support ``revert()`` to abort with rolling back, but not consuming all gas.\r\n * Inline assembly: Support ``revert`` (EIP140) as an opcode.\r\n * Parser: Support scientific notation in numbers (e.g. ``2e8`` and ``200e-2``).\r\n * Type system: Support explicit conversion of external function to address.\r\n * Type system: Warn if base of exponentiation is literal (result type might be unexpected).\r\n * Type system: Warn if constant state variables are not compile-time constants.\r\n\r\n**Bugfixes:**\r\n * Commandline interface: Always escape filenames (replace ``/``, ``:`` and ``.`` with ``_``).\r\n * Commandline interface: Do not try creating paths ``.`` and ``..``.\r\n * Commandline interface: Allow long library names.\r\n * Parser: Disallow octal literals.\r\n * Type system: Fix a crash caused by continuing on fatal errors in the code.\r\n * Type system: Disallow compound assignment for tuples.\r\n * Type system: Detect cyclic dependencies between constants.\r\n * Type system: Disallow arrays with negative length.\r\n * Type system: Fix a crash related to invalid binary operators.\r\n * Type system: Disallow ``var`` declaration with empty tuple type.\r\n * Type system: Correctly convert function argument types to pointers for member functions.\r\n * Type system: Move privateness of constructor into AST itself.\r\n * Inline assembly: Charge one stack slot for non-value types during analysis.\r\n * Assembly output: Print source location before the operation it refers to instead of after.\r\n * Optimizer: Stop trying to optimize tricky constants after a while.\r\n\r\nIf you want to perform a source build, please only use solidity_0.4.10.tar.gz and not the zip provided by github directly.",
"createdAt": "2017-03-15T17:07:52Z",
"name": "Version 0.4.10",
"publishedAt": "2017-03-15T17:22:12Z",
"resourcePath": "/ethereum/solidity/releases/tag/v0.4.10",
"tagName": "v0.4.10",
"url": "https://github.com/ethereum/solidity/releases/tag/v0.4.10"
}
},
{
"node": {
"id": "MDc6UmVsZWFzZTYyNjMyOTU=",
"description": "This release fixes a bug in the optimizer (more about this on the [blog](https://blog.ethereum.org/2017/05/03/solidity-optimizer-bug/)), introduces the standard JSON interface, adds ``interface`` contracts and implements some additional safety checks.\r\n\r\nThe standard [JSON interface](https://solidity.readthedocs.io/en/develop/using-the-compiler.html#compiler-input-and-output-json-description) provides a unified way to invoke the Solidity compiler in order to ease cross-platform adoption and compilation verification.\r\n\r\n**Features:**\r\n * Implement the Standard JSON Input / Output API\r\n * Support ``interface`` contracts.\r\n * C API (``jsonCompiler``): Add the ``compileStandard()`` method to process a Standard JSON I/O.\r\n * Commandline interface: Add the ``--standard-json`` parameter to process a Standard JSON I/O.\r\n * Commandline interface: Support ``--allow-paths`` to define trusted import paths. Note: the\r\n path(s) of the supplied source file(s) is always trusted.\r\n * Inline Assembly: Storage variable access using ``_slot`` and ``_offset`` suffixes.\r\n * Inline Assembly: Disallow blocks with unbalanced stack.\r\n * Static analyzer: Warn about statements without effects.\r\n * Static analyzer: Warn about unused local variables, parameters, and return parameters.\r\n * Syntax checker: issue deprecation warning for unary '+'\r\n\r\n**Bugfixes:**\r\n * Assembly output: Implement missing AssemblyItem types.\r\n * Compiler interface: Fix a bug where source indexes could be inconsistent between Solidity compiled\r\n with different compilers (clang vs. gcc) or compiler settings. The bug was visible in AST\r\n and source mappings.\r\n * Gas Estimator: Reflect the most recent fee schedule.\r\n * Type system: Contract inheriting from base with unimplemented constructor should be abstract.\r\n * Optimizer: Number representation bug in the constant optimizer fixed.\r\n\r\n\r\nWe especially thank all our open source community contributors:\r\n\r\nAbraham Sangha, AdrianClv, Andy Milenius, Chandan Kumar, Federico Bond, FedericoCapello, JohnAllen, Matt Searle, Matt Wisniewski, Morgan, Omkara and Rhett Aultman\r\n\r\n\r\nIf you want to perform a source build, please only use solidity_0.4.11.tar.gz and not the zip provided by github directly.\r\n\r\n**Update**: the original release on 3rd of May contained the wrong version numbers (it included the pre-release tag). This has been rectified today, the 4th of May, and all the linked binaries have been updated.\r\n\r\nThe files should have the following SHA-256 hashes:\r\n- `solc-static-linux`: `0a8d138ee245039e6f8312edc024ba3c4739cc3c013b47dc7fc9196a2e327fea`\r\n- `solidity-windows.zip`: `4387ef9733643ed387e5975d2241e423bd8d79c54db90d07a70c62c8c3e1be77`\r\n- `solidity_0.4.11.tar.gz`: `5a96a3ba4d0d6457ad8101d6219152610e46b384bfbd48244e3474573f7a6d47`\r\n- `soljson.js`: `49fa27e6e70e08ddc7ba3790325e07c07902d9e855362d03fb908757ac14b4e5`",
"createdAt": "2017-05-03T12:36:32Z",
"name": "Version 0.4.11",
"publishedAt": "2017-05-03T12:59:37Z",
"resourcePath": "/ethereum/solidity/releases/tag/v0.4.11",
"tagName": "v0.4.11",
"url": "https://github.com/ethereum/solidity/releases/tag/v0.4.11"
}
},
{
"node": {
"id": "MDc6UmVsZWFzZTY5MTEyNDk=",
"description": "This release introduces the AST export, solidifies inline assembly, introduces some more warnings and fixes several bugs.\r\n\r\nManual jumps in assembly are deprecated in favour of the structured constructs `switch`, `for` and function calls also to provide better portability in the future.\r\n\r\nFeatures:\r\n * Assembly: Add ``CREATE2`` (EIP86), ``STATICCALL`` (EIP214), ``RETURNDATASIZE`` and ``RETURNDATACOPY`` (EIP211) instructions.\r\n * Assembly: Display auxiliary data in the assembly output.\r\n * Assembly: Renamed ``SHA3`` to ``KECCAK256``.\r\n * AST: export all attributes to JSON format.\r\n * C API (``jsonCompiler``): Use the Standard JSON I/O internally.\r\n * Code Generator: Added the Whiskers template system.\r\n * Inline Assembly: ``for`` and ``switch`` statements.\r\n * Inline Assembly: Function definitions and function calls.\r\n * Inline Assembly: Introduce ``keccak256`` as an opcode. ``sha3`` is still a valid alias.\r\n * Inline Assembly: Present proper error message when not supplying enough arguments to a functional\r\n instruction.\r\n * Inline Assembly: Warn when instructions shadow Solidity variables.\r\n * Inline Assembly: Warn when using ``jump``s.\r\n * Remove obsolete Why3 output.\r\n * Type Checker: Enforce strict UTF-8 validation.\r\n * Type Checker: Warn about copies in storage that might overwrite unexpectedly.\r\n * Type Checker: Warn about type inference from literal numbers.\r\n * Static Analyzer: Warn about deprecation of ``callcode``.\r\n\r\nBugfixes:\r\n * Assembly: mark ``MLOAD`` to have side effects in the optimiser.\r\n * Code Generator: Fix ABI encoding of empty literal string.\r\n * Code Generator: Fix negative stack size checks.\r\n * Code generator: Use ``REVERT`` instead of ``INVALID`` for generated input validation routines.\r\n * Inline Assembly: Enforce function arguments when parsing functional instructions.\r\n * Optimizer: Disallow optimizations involving ``MLOAD`` because it changes ``MSIZE``.\r\n * Static Analyzer: Unused variable warnings no longer issued for variables used inside inline assembly.\r\n * Type Checker: Fix address literals not being treated as compile-time constants.\r\n * Type Checker: Fixed crash concerning non-callable types.\r\n * Type Checker: Fixed segfault with constant function parameters\r\n * Type Checker: Disallow comparisons between mapping and non-internal function types.\r\n * Type Checker: Disallow invoking the same modifier multiple times.\r\n * Type Checker: Do not treat strings that look like addresses as addresses.\r\n * Type Checker: Support valid, but incorrectly rejected UTF-8 sequences.\r\n\r\nWe especially thank all our open source community contributors:\r\n\r\nAlexey Alexeyeff, Andre Miras, Ben Che, benjaminion, Dillon Arevalo, Edward Ruchevits, Erik Quenon Steggall, ethers, Federico Bond, gregg dourgarian, James Ray, Jonathan Brown, Julius Faber, Lefteris Karapetsas, Marius Kjærstad, Micah Zoltu, Paul Stadig, RJ Catalano, Rhett Aultman, Ron Gross, seusher and Travis Jacobs.\r\n\r\nIf you want to perform a source build, please only use solidity_0.4.12.tar.gz and not the zip provided by github directly.",
"createdAt": "2017-07-03T16:45:11Z",
"name": "Version 0.4.12",
"publishedAt": "2017-07-03T16:47:17Z",
"resourcePath": "/ethereum/solidity/releases/tag/v0.4.12",
"tagName": "v0.4.12",
"url": "https://github.com/ethereum/solidity/releases/tag/v0.4.12"
}
},
{
"node": {
"id": "MDc6UmVsZWFzZTY5NDk1MzI=",
"description": "This is a small bugfix release that fixes several trivial but very annoying bugs that were introduced with 0.4.12. We also deprecate some old features in preparation of the breaking release 0.5.0.\r\n\r\nFeatures:\r\n * Syntax Checker: Deprecated ``throw`` in favour of ``require()``, ``assert()`` and ``revert()``.\r\n * Type Checker: Warn if a local storage reference variable does not explicitly use the keyword ``storage``.\r\n\r\nBugfixes:\r\n * Code Generator: Correctly unregister modifier variables.\r\n * Compiler Interface: Only output AST if analysis was successful.\r\n * Error Output: Do not omit the error type.\r\n\r\nWe especially thank all our open source community contributors:\r\n\r\nLeo Arias and Patrick Walters.\r\n\r\nIf you want to perform a source build, please only use solidity_0.4.13.tar.gz and not the zip provided by github directly.",
"createdAt": "2017-07-06T10:45:11Z",
"name": "Version 0.4.13",
"publishedAt": "2017-07-06T11:13:25Z",
"resourcePath": "/ethereum/solidity/releases/tag/v0.4.13",
"tagName": "v0.4.13",
"url": "https://github.com/ethereum/solidity/releases/tag/v0.4.13"
}
},
{
"node": {
"id": "MDc6UmVsZWFzZTcyMjk0MDQ=",
"description": "This release contains several new features and bugfixes and also an important security fix: The ``ecrecover`` function can be forced to return invalid data, which can be used to bypass authentication in very special circumstances.\r\n\r\nFeatures:\r\n * C API (``jsonCompiler``): Export the ``license`` method.\r\n * Code Generator: Optimise the fallback function, by removing a useless jump.\r\n * Inline Assembly: Show useful error message if trying to access calldata variables.\r\n * Inline Assembly: Support variable declaration without initial value (defaults to 0).\r\n * Metadata: Only include files which were used to compile the given contract.\r\n * Type Checker: Disallow value transfers to contracts without a payable fallback function.\r\n * Type Checker: Include types in explicit conversion error message.\r\n * Type Checker: Raise proper error for arrays too large for ABI encoding.\r\n * Type checker: Warn if using ``this`` in a constructor.\r\n * Type checker: Warn when existing symbols, including builtins, are overwritten.\r\n\r\nBugfixes:\r\n * Code Generator: Properly clear return memory area for ecrecover.\r\n * Type Checker: Fix crash for some assignment to non-lvalue.\r\n * Type Checker: Fix invalid \"specify storage keyword\" warning for reference members of structs.\r\n * Type Checker: Mark modifiers as internal.\r\n * Type Checker: Re-allow multiple mentions of the same modifier per function.\r\n\r\nWe especially thank all our open source community contributors:\r\n\r\nAntonio Tenerio-Fornés, benjaminion, Federico Bond, Harry Wright, hh3755, James Ray, Juaj Bednar, Luke Schoen, Loa Arias, maurelian, Nathan Hernandez, NIC619, Rhett Aultman, Skiral Inc and VoR0220.\r\n\r\nIf you want to perform a source build, please only use solidity_0.4.14.tar.gz and not the zip provided by github directly.",
"createdAt": "2017-07-31T14:14:46Z",
"name": "Version 0.4.14",
"publishedAt": "2017-07-31T14:55:14Z",
"resourcePath": "/ethereum/solidity/releases/tag/v0.4.14",
"tagName": "v0.4.14",
"url": "https://github.com/ethereum/solidity/releases/tag/v0.4.14"
}
},
{
"node": {
"id": "MDc6UmVsZWFzZTczMjE3MjE=",
"description": "This is mainly a bugfix release that corrects a problem with the return value of the low-level ``delegatecall`` function and removes some invalid warning messages.\r\n\r\nFeatures:\r\n * Type Checker: Show unimplemented function if trying to instantiate an abstract class.\r\n\r\nBugfixes:\r\n * Code Generator: ``.delegatecall()`` should always return execution outcome.\r\n * Code Generator: Provide \"new account gas\" for low-level ``callcode`` and ``delegatecall``.\r\n * Type Checker: Constructors must be implemented if declared.\r\n * Type Checker: Disallow the ``.gas()`` modifier on ``ecrecover``, ``sha256`` and ``ripemd160``.\r\n * Type Checker: Do not mark overloaded functions as shadowing other functions.\r\n * Type Checker: Internal library functions must be implemented if declared.\r\n\r\nWe especially thank all our open source community contributors:\r\n\r\nLeo Arias, Adrián Calvo and SaadSurya\r\n\r\nIf you want to perform a source build, please only use solidity_0.4.15.tar.gz and not the zip provided by github directly.",
"createdAt": "2017-08-08T14:41:39Z",
"name": "Version 0.4.15",
"publishedAt": "2017-08-08T17:02:57Z",
"resourcePath": "/ethereum/solidity/releases/tag/v0.4.15",
"tagName": "v0.4.15",
"url": "https://github.com/ethereum/solidity/releases/tag/v0.4.15"
}
},
{
"node": {
"id": "MDc6UmVsZWFzZTc1MTIyODU=",
"description": "This release introduces several new features, some of which have to be\r\nexplicitly activated using `pragma experimental <feature name>;`.\r\n\r\nWe split the ``constant`` keyword for functions into ``pure`` (neither reads from nor writes to the state)\r\nand ``view`` (does not modify the state). They are not enforced yet, but will most likely make use\r\nof the the new STATIC_CALL feature after Metropolis.\r\n\r\nFurthermore, 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.\r\n\r\nFinally, 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).\r\n\r\n**Features:**\r\n * ABI JSON: Include new field ``stateMutability`` with values ``pure``, ``view``, ``nonpayable`` and ``payable``.\r\n * Analyzer: Experimental partial support for Z3 SMT checker (\"SMTChecker\").\r\n * Build System: Shared libraries (``libdevcore``, ``libevmasm``, ``libsolidity`` and ``liblll``) are no longer produced during the build process.\r\n * Code generator: Experimental new implementation of ABI encoder that can encode arbitrarily nested arrays (\"ABIEncoderV2\")\r\n * Metadata: Store experimental flag in metadata CBOR.\r\n * Parser: Display previous visibility specifier in error if multiple are found.\r\n * Parser: Introduce ``pure`` and ``view`` keyword for functions, ``constant`` remains an alias for ``view`` and pureness is not enforced yet, so use with care.\r\n * Static Analyzer: Warn about large storage structures.\r\n * Syntax Checker: Support ``pragma experimental <feature>;`` to turn on experimental features.\r\n * Type Checker: More detailed error message for invalid overrides.\r\n * Type Checker: Warn about shifting a literal.\r\n\r\n**Bugfixes:**\r\n * Assembly Parser: Be more strict about number literals.\r\n * Assembly Parser: Limit maximum recursion depth.\r\n * Parser: Enforce commas between array and tuple elements.\r\n * Parser: Limit maximum recursion depth.\r\n * Type Checker: Crash fix related to ``using``.\r\n * Type Checker: Disallow constructors in libraries.\r\n * Type Checker: Reject the creation of interface contracts using the ``new`` statement.\r\n\r\n\r\nWe especially thank all our open source community contributors:\r\n\r\nChim Kan, Federico Bond, feliam, gubatron, Isaac Ibiapina, James Ray, Joshua Hannan, Lea Arias, Nick Savers, Stu West, Vladislav Ankudinov and Zhen Zhang\r\n\r\nIf you want to perform a source build, please only use solidity_0.4.16.tar.gz and not the zip provided by github directly.",
"createdAt": "2017-08-24T18:50:37Z",
"name": "Version 0.4.16",
"publishedAt": "2017-08-24T20:31:12Z",
"resourcePath": "/ethereum/solidity/releases/tag/v0.4.16",
"tagName": "v0.4.16",
"url": "https://github.com/ethereum/solidity/releases/tag/v0.4.16"
}
},
{
"node": {
"id": "MDc6UmVsZWFzZTc4NDEzMTY=",
"description": "As we are getting closer to the next breaking release, we want to give everyone a heads up by introducing `pragma experimental \"v0.5.0\"` which already enables some of the new safety features of the 0.5.0 release.\r\n\r\nFurthermore, this release finally checks the modifiers ``view`` (used to be named ``constant``) and ``pure`` on functions. As a rule of thumb, use ``view`` if your function does not modify storage and ``pure`` if it does not even read any state information - but the compiler will also suggest the tightest restriction itself.\r\n\r\nWe also worked further on the new ABI encoder: Functions can now return structs. Switch it on using `pragma experimental ABIEncoderV2`. It should already work, but still generates more expensive code.\r\n\r\nFinally, many new warnings were introduced and error messages improved.\r\n\r\n**Features:**\r\n * Assembly Parser: Support multiple assignment (``x, y := f()``).\r\n * Code Generator: Keep a single copy of encoding functions when using the experimental \"ABIEncoderV2\".\r\n * Code Generator: Partial support for passing ``structs`` as arguments and return parameters (requires ``pragma experimental ABIEncoderV2;`` for now).\r\n * General: Support ``pragma experimental \"v0.5.0\";`` to activate upcoming breaking changes.\r\n * General: Added ``.selector`` member on external function types to retrieve their signature.\r\n * Optimizer: Add new optimization step to remove unused ``JUMPDEST``s.\r\n * Static Analyzer: Warn when using deprecated builtins ``sha3`` and ``suicide``\r\n (replaced by ``keccak256`` and ``selfdestruct``, introduced in 0.4.2 and 0.2.0, respectively).\r\n * Syntax Checker: Warn if no visibility is specified on contract functions.\r\n * Type Checker: Display helpful warning for unused function arguments/return parameters.\r\n * Type Checker: Do not show the same error multiple times for events.\r\n * Type Checker: Greatly reduce the number of duplicate errors shown for duplicate constructors and functions.\r\n * Type Checker: Warn on using literals as tight packing parameters in ``keccak256``, ``sha3``, ``sha256`` and ``ripemd160``.\r\n * Type Checker: Enforce ``view`` and ``pure``.\r\n * Type Checker: Enforce ``view`` / ``constant`` with error as experimental 0.5.0 feature.\r\n * Type Checker: Enforce fallback functions to be ``external`` as experimental 0.5.0 feature.\r\n\r\n**Bugfixes:**\r\n * ABI JSON: Include all overloaded events.\r\n * Parser: Crash fix related to parseTypeName.\r\n * Type Checker: Allow constant byte arrays.\r\n\r\n\r\nWe especially thank all our open source community contributors:\r\n\r\nAli92hm, Aaron Colaço, Lefteris Karapetsas, Matthieu Caneill, Robert Edström and Suman\r\n\r\nIf you want to perform a source build, please only use solidity_0.4.17.tar.gz and not the zip provided by github directly.",
"createdAt": "2017-09-21T14:56:16Z",
"name": "Version 0.4.17",
"publishedAt": "2017-09-21T15:40:43Z",
"resourcePath": "/ethereum/solidity/releases/tag/v0.4.17",
"tagName": "v0.4.17",
"url": "https://github.com/ethereum/solidity/releases/tag/v0.4.17"
}
},
{
"node": {
"id": "MDc6UmVsZWFzZTgxNjQ4OTY=",
"description": "This release adds further backwards-incompatible security measures enabled via ``pragma experimental \"v0.5.0\";`` and contains another important feature: You can now select to compile only certain contracts using the ``outputSelection`` field of the [standard-json-io](https://solidity.readthedocs.io/en/develop/using-the-compiler.html#input-description) compiler interface, which should speed up tools like truffle tremendously.\r\n\r\nThere are also two important bug fixes: One was an oversight in the way `bytes` variables are allocated in memory and can reduce the memory requirements 32-fold. The second is a security fix: In extremely specific circumstances, it can happen that a regular function is called instead of the fallback function for an Ether transfer without data. These circumstances are: The function has to have a zero signature (one out of 4294967296), it has to be payable, the contract cannot have more than five (external) functions and it cannot have a fallback function.\r\n\r\n**Features:**\r\n * Code Generator: Always use all available gas for calls as experimental 0.5.0 feature\r\n (previously, some amount was retained in order to work in pre-Tangerine-Whistle\r\n EVM versions)\r\n * Parser: Better error message for unexpected trailing comma in parameter lists.\r\n * Standard JSON: Support the ``outputSelection`` field for selective compilation of supplied sources.\r\n * Syntax Checker: Unary ``+`` is now a syntax error as experimental 0.5.0 feature.\r\n * Type Checker: Disallow non-pure constant state variables as experimental 0.5.0 feature.\r\n * Type Checker: Do not add members of ``address`` to contracts as experimental 0.5.0 feature.\r\n * Type Checker: Force interface functions to be external as experimental 0.5.0 feature.\r\n * Type Checker: Require ``storage`` or ``memory`` keyword for local variables as experimental 0.5.0 feature.\r\n\r\n**Bugfixes:**\r\n * Code Generator: Allocate one byte per memory byte array element instead of 32.\r\n * Code Generator: Do not accept data with less than four bytes (truncated function\r\n signature) for regular function calls - fallback function is invoked instead.\r\n * Optimizer: Remove unused stack computation results.\r\n * Parser: Fix source location of VariableDeclarationStatement.\r\n * Type Checker: Allow ``gas`` in view functions.\r\n * Type Checker: Do not mark event parameters as shadowing state variables.\r\n * Type Checker: Prevent duplicate event declarations.\r\n * Type Checker: Properly check array length and don't rely on an assertion in code generation.\r\n * Type Checker: Properly support overwriting members inherited from ``address`` in a contract\r\n (such as ``balance``, ``transfer``, etc.)\r\n * Type Checker: Validate each number literal in tuple expressions even if they are not assigned from.\r\n\r\nWe especially thank all our open source community contributors:\r\n\r\nbenjaminion, bernard peh, Boris Kostenko, Dave Hoover, David Au, Federico Bond, Gianfranco Cecconi, Giovanni Casinelli, Ilya Drabenia, Martín Triay, Rhett Aultman, Sergiusz Bazanski, wadeAlexC, Walter Weinmann and Zetherz.\r\n\r\nIf you want to perform a source build, please only use solidity_0.4.18.tar.gz and not the zip provided by github directly.",
"createdAt": "2017-10-18T12:53:45Z",
"name": "Version 0.4.18",
"publishedAt": "2017-10-18T13:39:27Z",
"resourcePath": "/ethereum/solidity/releases/tag/v0.4.18",
"tagName": "v0.4.18",
"url": "https://github.com/ethereum/solidity/releases/tag/v0.4.18"
}
},
{
"node": {
"id": "MDc6UmVsZWFzZTg3MTg1MDk=",
"description": "In the last weeks, we have mainly been working on big internal changes. One of them is the new ABI decoder, which is still in experimental mode, but will hopefully be production-usable soon. External contributions like allowing constant variables for array lengths and improved error messages should make your life as a programmer easier. Finally, the standard-json-io-system now allows to select certain artifacts from a contract which should speed up your code-compile-test-cycle even more!\r\n\r\n**Features:**\r\n * Code Generator: New ABI decoder which supports structs and arbitrarily nested\r\n arrays and checks input size (activate using ``pragma experimental ABIEncoderV2;``).\r\n * General: Allow constant variables to be used as array length.\r\n * Inline Assembly: ``if`` statement.\r\n * Standard JSON: Support the ``outputSelection`` field for selective compilation of target artifacts.\r\n * Syntax Checker: Turn the usage of ``callcode`` into an error as experimental 0.5.0 feature.\r\n * Type Checker: Improve address checksum warning.\r\n * Type Checker: More detailed errors for invalid array lengths (such as division by zero).\r\n\r\nWe especially thank all our open source community contributors:\r\n\r\nBalajiganapathi S, Boris Kostenko, Christian Pamidov, Chua Chee Wee, Ezra Epstein, Federico Bond, Francisco Giordano, Guanqun Lu, Isaac van Bakel, Jared Wasinger, Kwang Yul Seo, Liana Husikyan, Sami Mäkel Svetlin Nakov, William Morriss, rivenhk, wadeAlexC, walter-weinmann and wbt.\r\n\r\nIf you want to perform a source build, please only use solidity_0.4.19.tar.gz and not the zip provided by github directly.\r\n\r\n",
"createdAt": "2017-11-30T15:08:09Z",
"name": "Version 0.4.19",
"publishedAt": "2017-11-30T16:48:14Z",
"resourcePath": "/ethereum/solidity/releases/tag/v0.4.19",
"tagName": "v0.4.19",
"url": "https://github.com/ethereum/solidity/releases/tag/v0.4.19"
}
},
{
"node": {
"id": "MDc6UmVsZWFzZTk2NjQ1MDU=",
"description": "This release includes some usability and security improvements and a further evolution of the SMT component. The ``var`` keyword has been deprecated for security reasons.\r\n\r\nSignificant steps were made in writing optimisation stages for the intermediate language, which will be used by the new ABI encoder to produce highly optimised output. The main goal is to have a resulting bytecode size similar to the old ABI encoder, while having more runtime checks for a stricter decoding process. This is not yet enabled in this release.\r\n\r\n**Features:**\r\n * Code Generator: Prevent non-view functions in libraries from being called\r\n directly (as opposed to via delegatecall).\r\n * Commandline interface: Support strict mode of assembly (disallowing jumps,\r\n instructional opcodes, etc) with the ``--strict-assembly`` switch.\r\n * Inline Assembly: Issue warning for using jump labels (already existed for jump instructions).\r\n * Inline Assembly: Support some restricted tokens (return, byte, address) as identifiers in IULIA mode.\r\n * Optimiser: Replace ``x % 2**i`` by ``x & (2**i-1)``.\r\n * Resolver: Continue resolving references after the first error.\r\n * Resolver: Suggest alternative identifiers if a given identifier is not found.\r\n * SMT Checker: Take if-else branch conditions into account in the SMT encoding of the program\r\n variables.\r\n * Syntax Checker: Deprecate the ``var`` keyword (and mark it an error as experimental 0.5.0 feature).\r\n * Type Checker: Allow `this.f.selector` to be a pure expression.\r\n * Type Checker: Issue warning for using ``public`` visibility for interface functions.\r\n * Type Checker: Limit the number of warnings raised for creating abstract contracts.\r\n\r\n**Bugfixes:**\r\n * Error Output: Truncate huge number literals in the middle to avoid output blow-up.\r\n * Parser: Disallow event declarations with no parameter list.\r\n * Standard JSON: Populate the ``sourceLocation`` field in the error list.\r\n * Standard JSON: Properly support contract and library file names containing a colon (such as URLs).\r\n * Type Checker: Suggest the experimental ABI encoder if using ``struct``s as function parameters\r\n (instead of an internal compiler error).\r\n * Type Checker: Improve error message for wrong struct initialization.\r\n\r\n\r\nWe especially thank all our open source community contributors:\r\n\r\nAlexander Arlt, Balajiganapathi S, ChenQuan, Chuck LeDuc Díaz, Evgeny Medvedev, Ezra Epstein, Federico Bond, Gonçalo Sá, Jim McDonald, Jimmy Vogel, Kamuela Franco, Kevin Wu, Leonardo Alt, Li Xuanji, Manus, Matthew Halpern, Maurelian, Raghav Dua, Sawyer, Steve Waldman, William Entriken, YuShuangqi, Yuriy Kashnikov, Zhen Zhang, ZoOgY-DoOgY, chenquan, Elena Dimitrova, hyperfekt, mekkanik and wbt.\r\n\r\n\r\nIf you want to perform a source build, please only use solidity_0.4.20.tar.gz and not the zip provided by github directly.\r\n\r\n",
"createdAt": "2018-02-14T04:00:41Z",
"name": "Version 0.4.20",
"publishedAt": "2018-02-14T07:44:49Z",
"resourcePath": "/ethereum/solidity/releases/tag/v0.4.20",
"tagName": "v0.4.20",
"url": "https://github.com/ethereum/solidity/releases/tag/v0.4.20"
}
},
{
"node": {
"id": "MDc6UmVsZWFzZTk5ODUxODU=",
"description": "We again introduced several changes that are scheduled for version 0.5.0 and can be activated using `pragma experimental \"v0.5.0\";`. In this release, this pragma does not generate a warning anymore, so you can (and should) use it in production code.\r\n\r\nIn addition to that, you can now specify which EVM version the contract should be compiled for. Valid values are \"homestead\", \"tangerineWhistle\", \"spuriousDragon\", \"byzantium\" (the default) and \"constantinople\". Depending on this setting, different opcodes will be used in some cases. The only place where this is currently used by default is that all gas is forwarded with calls starting from \"tangerineWhistle\" (in homestead, some gas has to be retained for the ``call`` opcode itself). Also, the gas estimator reports different costs for the opcodes depending on the version and thus the optimizer might generate different code.\r\n\r\nThe new \"0.5.0\" features are explained in more detail below the list of features and bugfixes.\r\n\r\nIf you want to perform a source build, please only use solidity_0.4.21.tar.gz and not the zip provided by github directly.\r\n\r\n\r\n**Features:**\r\n\r\n * Code Generator: Assert that ``k != 0`` for ``mulmod(a, b, k)`` and ``addmod(a, b, k)`` as experimental 0.5.0 feature.\r\n * Code Generator: Do not retain any gas in calls (except if EVM version is set to homestead).\r\n * Code Generator: Use ``STATICCALL`` opcode for calling ``view`` and ``pure`` functions as experimenal 0.5.0 feature.\r\n * General: C99/C++-style scoping rules (instead of JavaScript function scoping) take effect as experimental v0.5.0 feature.\r\n * General: Improved messaging when error spans multiple lines of a sourcefile\r\n * General: Support and recommend using ``emit EventName();`` to call events explicitly.\r\n * Inline Assembly: Enforce strict mode as experimental 0.5.0 feature.\r\n * Interface: Provide ability to select target EVM version (homestead or byzantium, with byzantium being the default).\r\n * Standard JSON: Reject badly formatted invalid JSON inputs.\r\n * Type Checker: Disallow uninitialized storage pointers as experimental 0.5.0 feature.\r\n * Syntax Analyser: Do not warn about experimental features if they do not concern code generation.\r\n * Syntax Analyser: Do not warn about ``pragma experimental \"v0.5.0\"`` and do not set the experimental flag in the bytecode for this.\r\n * Syntax Checker: Mark ``throw`` as an error as experimental 0.5.0 feature.\r\n * Syntax Checker: Issue error if no visibility is specified on contract functions as experimental 0.5.0 feature.\r\n * Syntax Checker: Issue warning when using overloads of ``address`` on contract instances.\r\n * Type Checker: disallow combining hex numbers and unit denominations as experimental 0.5.0 feature.\r\n\r\n**Bugfixes:**\r\n\r\n * Assembly: Raise error on oversized number literals in assembly.\r\n * JSON-AST: Add \"documentation\" property to function, event and modifier definition.\r\n * Resolver: Properly determine shadowing for imports with aliases.\r\n * Standalone Assembly: Do not ignore input after closing brace of top level block.\r\n * Standard JSON: Catch errors properly when invalid \"sources\" are passed.\r\n * Standard JSON: Ensure that library addresses supplied are of correct length and hex prefixed.\r\n * Type Checker: Properly detect which array and struct types are unsupported by the old ABI encoder.\r\n * Type Checker: Properly warn when using ``_offset`` and ``_slot`` for constants in inline assembly.\r\n * Commandline interface: throw error if option is unknown\r\n\r\nWe especially thank all our open source community contributors:\r\n\r\nAlexander Arlt, Dax Bondye, Emilio Almansi, Evgeny Medvedev, Federico Bond, Hongbin Zuo, Oleksii Matiiasevych, Raghav Dua, William Entriken, bernard peh, Aaron Colaço, Alexandre Bezroutchko, Anthony Broad-Crawford, DYLAN BECKWITH, Elena Dimitrova, Furkan Ayhan, Jordi Baylina, Li Xuanji, Zhen Zhang, ankit raj, janat08, mirgj, wbt.\r\n\r\n\r\n**Details:**\r\n\r\n * Code Generator: Use ``STATICCALL`` opcode for calling ``view`` and ``pure`` functions as experimenal 0.5.0 feature.\r\n\r\nThis ensures that functions marked as ``view`` or ``pure`` (previously ``constant``) cannot modify the state. This is especially important if you call unknown code via a generic interface and you cannot be sure whether the function modifies the state or not. This way, ``view`` and ``pure`` functions cannot have reentrancy effects.\r\n\r\n * General: C99/C++-style scoping rules (instead of JavaScript function scoping) take effect as experimental v0.5.0 feature.\r\n\r\nVariables are no longer valid in the whole function and even before they were declared as in JavaScript, but instead only in the ``{``/``}``-enclosed block where they are declared and only starting after their declaration. These are the rules also used by C++ or Java. There is a common exception where variables declared in the initializing part of the ``for`` header are also valid in the rest of the ``for`` loop construct which we also use in Solidity. Currently, the stack slot reserved for the variable still spans the whole function, but this is planned to be improved for the next release.\r\n\r\n * General: Support and recommend using ``emit EventName();`` to call events explicitly.\r\n\r\nIn order to make events stand out with regards to regular function calls, ``emit EventName()`` as opposed to just ``EventName()`` should now be used to \"call\" events.\r\n\r\n * Inline Assembly: Enforce strict mode as experimental 0.5.0 feature.\r\n\r\nStrict mode disallows labels, jumps and opcodes that directly modify the stack. It is much safer than non-strict mode, since you do not have to keep track of the current state of the stack. Furthermore, it allows an optimizer stage (to be finished soon) to be created much more easily. Because of that, the optimizer will refuse to work on non-strict assembly.\r\n\r\n * Type Checker: Disallow uninitialized storage pointers as experimental 0.5.0 feature.\r\n\r\nStorage pointers (e.g. ``StructType storage x;``) can lead to severe storage corruption if used without being assigned. In 0.5.0 it will be illegal to declare a storage pointer without directly initializing it.\r\n\r\n * Syntax Checker: Mark ``throw`` as an error as experimental 0.5.0 feature.\r\n\r\nThe ``throw`` keyword creates the impression that exceptions are a feature of Solidity, while in reality, it only supports state-reversion that can soon also include error data. Because of that, ``throw`` is deprecated.\r\n\r\n * Syntax Checker: Issue error if no visibility is specified on contract functions as experimental 0.5.0 feature.\r\n\r\nSince there were bugs where people did not realize that the default visibility of functions is ``public``, specifying a visibility was made mandatory.\r\n\r\n * Syntax Checker: Issue warning when using overloads of ``address`` on contract instances.\r\n\r\nCollisions between native members of the ``address`` type and user-defined members of contracts can easily deceive users. Because of that, address members are no longer available in contracts. If you want to use an address member (``transfer`` is one of them!), then convert it to address: ``address(contractInstance).transfer(2 wei)``.\r\n\r\n * Type Checker: disallow combining hex numbers and unit denominations as experimental 0.5.0 feature.\r\n\r\nWe could not think of any situation where unit denominations like ``seconds`` or ``ether`` combined with hexadecimal literals would be meaningful (``0x1234 ether`` or ``0x20 minutes``) and thus deprecated this combination.",
"createdAt": "2018-03-07T19:20:57Z",
"name": "Version 0.4.21",
"publishedAt": "2018-03-08T06:45:05Z",
"resourcePath": "/ethereum/solidity/releases/tag/v0.4.21",
"tagName": "v0.4.21",
"url": "https://github.com/ethereum/solidity/releases/tag/v0.4.21"
}
},
{
"node": {
"id": "MDc6UmVsZWFzZTEwNTY5NjM3",
"description": "This release features several major and long-awaited changes:\r\n\r\n - It is now possible to access dynamic data (arrays, strings, etc) returned by function calls.\r\n - You can specify error reason strings for ``revert`` and ``require`` (support by tooling is still pending).\r\n - We added the global functions ``abi.encode()``, ``abi.encodePacked()``, ``abi.encodeWithSelector()`` and ``abi.encodeWithSignature()`` which expose the ABI encoding functions and each return a ``bytes`` value.\r\n - Constructors should now be defined using ``constructor(uint arg1, uint arg2) { ... }`` to make them stand out and avoid bugs when contracts are renamed but not their constructors.\r\n - Some array operations got cheaper, especially the ``push`` function and initialization of memory arrays.\r\n\r\nIf you want to perform a source build, please only use solidity_0.4.22.tar.gz and not the zip provided by github directly.\r\n\r\n**Features:**\r\n\r\n * Code Generator: Initialize arrays without using ``msize()``.\r\n * Code Generator: More specialized and thus optimized implementation for ``x.push(...)``\r\n * Commandline interface: Error when missing or inaccessible file detected. Suppress it with the ``--ignore-missing`` flag.\r\n * Constant Evaluator: Fix evaluation of single element tuples.\r\n * General: Add encoding routines ``abi.encodePacked``, ``abi.encode``, ``abi.encodeWithSelector`` and ``abi.encodeWithSignature``.\r\n * General: Add global function ``gasleft()`` and deprecate ``msg.gas``.\r\n * General: Add global function ``blockhash(uint)`` and deprecate ``block.hash(uint)``.\r\n * General: Allow providing reason string for ``revert()`` and ``require()``.\r\n * General: Allow and recommend new constructor syntax using the ``constructor`` keyword (generate error as experimental 0.5.0 feature).\r\n * General: Limit the number of errors output in a single run to 256.\r\n * General: Support accessing dynamic return data in post-byzantium EVMs.\r\n * Inheritance: Error when using empty parentheses for base class constructors that require arguments as experimental 0.5.0 feature.\r\n * Inheritance: Error when using no parentheses in modifier-style constructor calls as experimental 0.5.0 feature.\r\n * Interfaces: Allow overriding external functions in interfaces with public in an implementing contract.\r\n * Optimizer: Optimize ``SHL`` and ``SHR`` only involving constants (Constantinople only).\r\n * Optimizer: Remove useless ``SWAP1`` instruction preceding a commutative instruction (such as ``ADD``, ``MUL``, etc).\r\n * Optimizer: Replace comparison operators (``LT``, ``GT``, etc) with opposites if preceded by ``SWAP1``, e.g. ``SWAP1 LT`` is replaced with ``GT``.\r\n * Optimizer: Optimize across ``mload`` if ``msize()`` is not used.\r\n * Static Analyzer: Error on duplicated super constructor calls as experimental 0.5.0 feature.\r\n * Syntax Checker: Issue warning for empty structs (or error as experimental 0.5.0 feature).\r\n * Syntax Checker: Warn about modifiers on functions without implementation (this will turn into an error with version 0.5.0).\r\n * Syntax Tests: Add source locations to syntax test expectations.\r\n * Type Checker: Improve documentation and warnings for accessing contract members inherited from ``address``.\r\n\r\n\r\n**Bugfixes:**\r\n\r\n * Code Generator: Allow ``block.blockhash`` without being called.\r\n * Code Generator: Do not include internal functions in the runtime bytecode which are only referenced in the constructor.\r\n * Code Generator: Properly skip unneeded storage array cleanup when not reducing length.\r\n * Code Generator: Bugfix in modifier lookup in libraries.\r\n * Code Generator: Implement packed encoding of external function types.\r\n * Code Generator: Treat empty base constructor argument list as not provided.\r\n * Code Generator: Properly force-clean bytesXX types for shortening conversions.\r\n * Commandline interface: Fix error messages for imported files that do not exist.\r\n * Commandline interface: Support ``--evm-version constantinople`` properly.\r\n * DocString Parser: Fix error message for empty descriptions.\r\n * Gas Estimator: Correctly ignore costs of fallback function for other functions.\r\n * JSON AST: Remove storage qualifier for type name strings.\r\n * Parser: Fix internal compiler error when parsing ``var`` declaration without identifier.\r\n * Parser: Fix parsing of getters for function type variables.\r\n * Standard JSON: Support ``constantinople`` as ``evmVersion`` properly.\r\n * Static Analyzer: Fix non-deterministic order of unused variable warnings.\r\n * Static Analyzer: Invalid arithmetic with constant expressions causes errors.\r\n * Type Checker: Fix detection of recursive structs.\r\n * Type Checker: Fix asymmetry bug when comparing with literal numbers.\r\n * Type System: Improve error message when attempting to shift by a fractional amount.\r\n * Type System: Make external library functions accessible.\r\n * Type System: Prevent encoding of weird types.\r\n * Type System: Restrict rational numbers to 4096 bits.\r\n\r\nWe especially thank all our open source community contributors:\r\n\r\nSergiusz Bazanski, Federico Bond, Anthony Broad-Crawford, Jason Cobb, dongsamb, Robbie Ferguson, Kevin Florenzano, Grzegorz Hasse, hydai, Lefteris Karapetsas, kevinflo, NetX, Daniel R, Matías A. Ré Medina, Roman, Yosyp Schwab, wbt, Li Xuanji, Haoliang Yu",
"createdAt": "2018-04-16T21:03:49Z",
"name": "Version 0.4.22",
"publishedAt": "2018-04-17T05:11:56Z",
"resourcePath": "/ethereum/solidity/releases/tag/v0.4.22",
"tagName": "v0.4.22",
"url": "https://github.com/ethereum/solidity/releases/tag/v0.4.22"
}
},
{
"node": {
"id": "MDc6UmVsZWFzZTEwNjI2MzI3",
"description": "Bugfix release: In the previous release, it was possible to define two constructors (one using the new constructor-keyword syntax, another one with the old syntax) for a contract, but only one of them got used in the end. We also included other bugfixes.\r\n\r\nIf you want to perform a source build, please only use solidity_0.4.23.tar.gz and not the zip provided by github directly.\r\n\r\n**Features:**\r\n * Build system: Support Ubuntu Bionic.\r\n * SMTChecker: Integration with CVC4 SMT solver\r\n * Syntax Checker: Warn about functions named \"constructor\".\r\n\r\n**Bugfixes:**\r\n * Type Checker: Improve error message for failed function overload resolution.\r\n * Type Checker: Do not complain about new-style constructor and fallback function to have the same name.\r\n * Type Checker: Detect multiple constructor declarations in the new syntax and old syntax.\r\n * Type Checker: Explicit conversion of ``bytesXX`` to ``contract`` is properly disallowed.\r\n\r\n\r\nWe especially thank all our open source community contributors: Thomas Sauvajon",
"createdAt": "2018-04-19T17:24:01Z",
"name": "Version 0.4.23",
"publishedAt": "2018-04-19T21:18:27Z",
"resourcePath": "/ethereum/solidity/releases/tag/v0.4.23",
"tagName": "v0.4.23",
"url": "https://github.com/ethereum/solidity/releases/tag/v0.4.23"
}
},
{
"node": {
"id": "MDc6UmVsZWFzZTExMDI3ODg1",
"description": "All remaining breaking changes planned for version 0.5.0 that can be implemented in a backwards-compatible way made it into this release. Solidity can now detect uninitialized storage pointers using control-flow analysis. It is again possible to assign multiple return values from a function to newly declared variables and the SMT checker is able to work with simple storage variables.\r\n\r\nIf you want to perform a source build, please only use solidity_0.4.24.tar.gz and not the zip provided by github directly.\r\n\r\n**Language Features:**\r\n * Code Generator: Use native shift instructions on target Constantinople.\r\n * General: Allow multiple variables to be declared as part of a tuple assignment, e.g. ``(uint a, uint b) = ...``.\r\n * General: Remove deprecated ``constant`` as function state modifier from documentation and tests (but still leave it as a valid feature).\r\n * Type Checker: Deprecate the ``years`` unit denomination and raise a warning for it (or an error as experimental 0.5.0 feature).\r\n * Type Checker: Make literals (without explicit type casting) an error for tight packing as experimental 0.5.0 feature.\r\n * Type Checker: Warn about wildcard tuple assignments (this will turn into an error with version 0.5.0).\r\n * Type Checker: Warn when ``keccak256``, ``sha256`` and ``ripemd160`` are not used with a single bytes argument (suggest to use ``abi.encodePacked(...)``). This will turn into an error with version 0.5.0.\r\n\r\n**Compiler Features:**\r\n * Build System: Update internal dependency of jsoncpp to 1.8.4, which introduces more strictness and reduces memory usage.\r\n * Control Flow Graph: Add Control Flow Graph as analysis structure.\r\n * Control Flow Graph: Warn about returning uninitialized storage pointers.\r\n * Gas Estimator: Only explore paths with higher gas costs. This reduces accuracy but greatly improves the speed of gas estimation.\r\n * Optimizer: Remove unnecessary masking of the result of known short instructions (``ADDRESS``, ``CALLER``, ``ORIGIN`` and ``COINBASE``).\r\n * Parser: Display nicer error messages by showing the actual tokens and not internal names.\r\n * Parser: Use the entire location of the token instead of only its starting position as source location for parser errors.\r\n * SMT Checker: Support state variables of integer and bool type.\r\n\r\n**Bugfixes:**\r\n * Code Generator: Fix ``revert`` with reason coming from a state or local string variable.\r\n * Type Checker: Show proper error when trying to ``emit`` a non-event.\r\n * Type Checker: Warn about empty tuple components (this will turn into an error with version 0.5.0).\r\n * Type Checker: The ABI encoding functions are pure and thus can be used for constants.\r\n\r\nWe especially thank all our open source community contributors:\r\n\r\nAlexander Arlt, Andreas Olofsson, Arun Kumar, daniel, David Sanders, GuessWho, Jason Cobb, Jonny Burger, Leo Arias, Luca Ban, Magicking, Matthew Ludwig, mingchuan, nisdas, njwest, Omar Boukli-Hacene, Rafiudeen Chozhan Kumarasamy, sledrho, Wenbin Wu\r\n",
"createdAt": "2018-05-16T12:43:57Z",
"name": "Version 0.4.24",
"publishedAt": "2018-05-16T14:09:50Z",
"resourcePath": "/ethereum/solidity/releases/tag/v0.4.24",
"tagName": "v0.4.24",
"url": "https://github.com/ethereum/solidity/releases/tag/v0.4.24"
}
},
{
"node": {
"id": "MDc6UmVsZWFzZTEyODY3MjQy",
"description": "This release fixed a cleanup error concerning the exponentiation operator. It is a bugfix-only release\r\nand does not contain any features. A more detailed description of the bugs fixed can be found\r\non the [ethereum blog](https://blog.ethereum.org/2018/09/13/solidity-bugfix-release/).\r\n\r\nNote that nightly builds of Solidity currently contain changes unrelated to this bugfix release.\r\n\r\nIf you want to perform a source build, please only use solidity_0.4.25.tar.gz and not the zip provided by github directly.\r\n\r\n**Important Bugfixes:**\r\n * Code Generator: Properly perform cleanup for exponentiation and non-256 bit types.\r\n * Type Checker: Report error when using indexed structs in events with experimental ABIEncoderV2. This used to log wrong values.\r\n * Type Checker: Report error when using structs in events without experimental ABIEncoderV2. This used to crash or log the wrong values.\r\n * Parser: Consider all unicode line terminators (LF, VF, FF, CR, NEL, LS, PS) for single-line comments\r\n and string literals. They are invalid in strings and will end comments.\r\n * Parser: Disallow unterminated multi-line comments at the end of input.\r\n * Parser: Treat ``/** /`` as unterminated multi-line comment.\r\n\r\n\r\nWe especially thank all our open source community contributors:\r\n\r\nmingchuan and Guido Vranken",
"createdAt": "2018-09-13T16:38:41Z",
"name": "Version 0.4.25",
"publishedAt": "2018-09-13T18:03:38Z",
"resourcePath": "/ethereum/solidity/releases/tag/v0.4.25",
"tagName": "v0.4.25",
"url": "https://github.com/ethereum/solidity/releases/tag/v0.4.25"
}
},
{
"node": {
"id": "MDc6UmVsZWFzZTEzOTc3OTAw",
"description": "This is a major breaking release of the Solidity language and compiler that includes many new safety features. In general, programmers have to be more explicit, some weird edge-cases are removed from the language and the low-level compiler interface is much simpler.\r\n\r\nThis release was long overdue and as a result has amassed an incredibly long list of changes. Please refer to the [\"Solidity v0.5.0 Breaking Changes”](https://solidity.readthedocs.io/en/latest/050-breaking-changes.html) section in the documentation about a good description of what has changed and how to update your code, or if you are courageous, check out the [changelog](https://github.com/ethereum/solidity/blob/v0.5.0/Changelog.md)!\r\n\r\nIf you want to perform a source build, please only use solidity_0.5.0.tar.gz and not the zip provided by github directly.\r\n\r\n\r\n\r\n\r\nWe especially thank all the contributors that made this release possible:\r\n\r\na4nkit, ajs, Alexander Arlt, Alex Beregszaszi, alibabe, Ankit Raj, Anurag Dashputre, Arindam Mondal, Asif Mallik, Augusto F. Hack, bakaoh, Balajiganapathi S, Berk Erol, Bhargava Shastry, Chase McDermott, Christian Parpart, Chris Ward, Crypto Jerônimo, Cryptomental, Daniel Kirchner, Daniel Kronovet, Dimitry, dm4, D-Nice, Dominik Harz, Dylan Wilson, Eitan Levin, Eric Ren, Erik Kundt, Evgeniy Filatov, f-daniel, Federico Bond, feliam, Flash Sheridan, Florian Antony, Franco Victorio, gftea, Guido Vranken, Harry Moreno, herrBez, hydai, Jared Wasinger, Jason Cobb, Jeffrey Anthony, Jesse Busman, João Vítor, Jordan Last, J Quinn, Julius Huelsmann, Kevin Azoulay, Khan M Rashedun-Naby, Kristofer Peterson, Lazaridis, Leanne, Lefteris Karapetsas, Leo Arias, Leonardo Alt, liangdzou, Li Xuanji, Luke Schoen, Martin Diz, Matías Aereal Aeón, Matías A. Ré Medina, Matthew Little, Matt Little, mestorlx, Michał Załęcki, Mike, mingchuan, mordax, Nicolás Venturo, Noel Maersk, Paweł Bylica, Pritam Roy, Richard Littauer, ritzdorf, Rytis Slatkevičius, Shadab Khan, Simon Chen, taitt, Tim Holland, Timofey Solonin, Tomasz Drwięga, Vutsal Singhal, wbt, William Entriken, William Morriss, wpank, xinbenlv",
"createdAt": "2018-11-13T18:33:35Z",
"name": "Version 0.5.0",
"publishedAt": "2018-11-13T19:36:55Z",
"resourcePath": "/ethereum/solidity/releases/tag/v0.5.0",
"tagName": "v0.5.0",
"url": "https://github.com/ethereum/solidity/releases/tag/v0.5.0"
}
},
{
"node": {
"id": "MDc6UmVsZWFzZTE0MzE1Mzk4",
"description": "This release improves the usability of interfaces, fixes some bugs, extends the SMT checker and provides an early preview of the Yul optimizer.\r\n\r\nIf you want to perform a source build, please only use solidity_0.5.1.tar.gz and not the zip provided by github directly.\r\n\r\n**Language Features:**\r\n * Allow mapping type for parameters and return variables of public and external library functions.\r\n * Allow public functions to override external functions.\r\n\r\n**Compiler Features:**\r\n * Code generator: Do not perform redundant double cleanup on unsigned integers when loading from calldata.\r\n * Commandline interface: Experimental ``--optimize`` option for assembly mode (``--strict-assembly`` and ``--yul``).\r\n * SMTChecker: SMTLib2 queries and responses passed via standard JSON compiler interface.\r\n * SMTChecker: Support ``msg``, ``tx`` and ``block`` member variables.\r\n * SMTChecker: Support ``gasleft()`` and ``blockhash()`` functions.\r\n * SMTChecker: Support internal bound function calls.\r\n * Yul: Support Yul objects in ``--assemble``, ``--strict-assembly`` and ``--yul`` commandline options.\r\n\r\n**Bugfixes:**\r\n * Assembly output: Do not mix in/out jump annotations with arguments.\r\n * Commandline interface: Fix crash when using ``--ast`` on empty runtime code.\r\n * Code Generator: Annotate jump from calldata decoder to function as \"jump in\".\r\n * Code Generator: Fix internal error related to state variables of function type access via base contract name.\r\n * Optimizer: Fix nondeterminism bug related to the boost version and constants representation. The bug only resulted in less optimal but still correct code because the generated routine is always verified to be correct.\r\n * Type Checker: Properly detect different return types when overriding an external interface function with a public contract function.\r\n * Type Checker: Disallow struct return types for getters of public state variables unless the new ABI encoder is active.\r\n * Type Checker: Fix internal compiler error when a field of a struct used as a parameter in a function type has a non-existent type.\r\n * Type Checker: Disallow functions ``sha3`` and ``suicide`` also without a function call.\r\n * Type Checker: Fix internal compiler error with ``super`` when base contract function is not implemented.\r\n * Type Checker: Fixed internal error when trying to create abstract contract in some cases.\r\n * Type Checker: Fixed internal error related to double declaration of events.\r\n * Type Checker: Disallow inline arrays of mapping type.\r\n * Type Checker: Consider abstract function to be implemented by public state variable.\r\n\r\n**Build System:**\r\n * CMake: LLL is not built anymore by default. Must configure it with CMake as `-DLLL=ON`.\r\n * Docker: Includes both Scratch and Alpine images.\r\n * Emscripten: Upgrade to Emscripten SDK 1.37.21 and boost 1.67.\r\n\r\n**Solc-Js:**\r\n * Fix handling of standard-json in the commandline executable.\r\n * Remove support of nodejs 4.\r\n\r\nWe especially thank all the contributors that made this release possible:\r\n\r\nAlbert, Alex Beregszaszi, Anurag Dashputre, Chris Purta, Christian Parpart, Chris Ward, Daniel Kirchner, David Lozano Jarque, Erik Kundt, hydai, Javier Tarazaga, Justin Wilson, Lazaridis, Leonardo Alt, liangdzou, mordax, Robert Chung, William Entriken, Yet another codejunkie\r\n",
"createdAt": "2018-12-03T14:48:03Z",
"name": "Version 0.5.1",
"publishedAt": "2018-12-03T15:32:38Z",
"resourcePath": "/ethereum/solidity/releases/tag/v0.5.1",
"tagName": "v0.5.1",
"url": "https://github.com/ethereum/solidity/releases/tag/v0.5.1"
}
},
{
"node": {
"id": "MDc6UmVsZWFzZTE0NTkwNTA3",
"description": "This release of the Solidity compiler includes several performance optimizations. These include faster compilation time but also cheaper contracts in some situations. This version also checks for all instances of uninitialized storage references, has some improved error messages and other checks.\r\n\r\nYou can now create complete contracts in Yul through the support of the Yul object format and the special functions ``datasize``, ``dataoffset`` and ``datacopy``.\r\n\r\nIf you want to perform a source build, please only use solidity_0.5.2.tar.gz and not the zip provided by github directly.\r\n\r\n\r\n**Language Features:**\r\n * Control Flow Graph: Detect every access to uninitialized storage pointers.\r\n\r\n\r\n**Compiler Features:**\r\n * Inline Assembly: Improve error messages around invalid function argument count.\r\n * Code Generator: Only check callvalue once if all functions are non-payable.\r\n * Code Generator: Use codecopy for string constants more aggressively.\r\n * Code Generator: Use binary search for dispatch function if more efficient. The size/speed tradeoff can be tuned using ``--optimize-runs``.\r\n * SMTChecker: Support mathematical and cryptographic functions in an uninterpreted way.\r\n * SMTChecker: Support one-dimensional mappings.\r\n * Standard JSON Interface: Disallow unknown keys in standard JSON input.\r\n * Standard JSON Interface: Only run code generation if it has been requested. This could lead to unsupported feature errors only being reported at the point where you request bytecode.\r\n * Static Analyzer: Do not warn about unused variables or state mutability for functions with an empty body.\r\n * Type Checker: Add an additional reason to be displayed when type conversion fails.\r\n * Yul: Support object access via ``datasize``, ``dataoffset`` and ``datacopy`` in standalone assembly mode.\r\n\r\n\r\n**Bugfixes:**\r\n * Standard JSON Interface: Report specific error message for json input errors instead of internal compiler error.\r\n\r\n\r\n**Build System:**\r\n * Replace the trusty PPA build by a static build on cosmic that is used for the trusty package instead.\r\n * Remove support for Visual Studio 2015.\r\n\r\n\r\nWe especially thank all the contributors that made this release possible:\r\n\r\nAlbert, Alex Beregszaszi, Christian Parpart, Chris Ward, Daniel Kirchner, Erik Kundt, Kevin Kelley, Leonardo Alt, liangdzou, Lionello Lunesu, Mathias Baumann, Ricardo Guilherme Schmidt, Yi Huang, Zacharius\r\n",
"createdAt": "2018-12-19T17:06:13Z",
"name": "Version 0.5.2",
"publishedAt": "2018-12-19T18:25:01Z",
"resourcePath": "/ethereum/solidity/releases/tag/v0.5.2",
"tagName": "v0.5.2",
"url": "https://github.com/ethereum/solidity/releases/tag/v0.5.2"
}
},
{
"node": {
"id": "MDc6UmVsZWFzZTE1MTA1NDY0",
"description": "This release adds support for accessing the code of a contract type, which will hopefully make the new `CREATE2` opcode easier to use. We also added some static analysis features to the compiler, but most changes were done \"under the hood\" to pave the way for using the new Yul-based optimizer with ABIEncoderV2.\r\n\r\n**Language Features:**\r\n * Provide access to creation and runtime code of contracts via ``type(C).creationCode`` / ``type(C).runtimeCode``.\r\n\r\n\r\n**Compiler Features:**\r\n * Control Flow Graph: Warn about unreachable code.\r\n * SMTChecker: Support basic typecasts without truncation.\r\n * SMTChecker: Support external function calls and erase all knowledge regarding storage variables and references.\r\n\r\n\r\n**Bugfixes:**\r\n * Emscripten: Split simplification rule initialization up further to work around issues with soljson.js in some browsers.\r\n * Type Checker: Disallow calldata structs until implemented.\r\n * Type Checker: Return type error if fixed point encoding is attempted instead of throwing ``UnimplementedFeatureError``.\r\n * Yul: Check that arguments to ``dataoffset`` and ``datasize`` are literals at parse time and properly take this into account in the optimizer.\r\n * Yul: Parse number literals for detecting duplicate switch cases.\r\n * Yul: Require switch cases to have the same type.\r\n\r\n\r\n**Build System:**\r\n * Emscripten: Upgrade to emscripten 1.38.8 on travis and circleci.\r\n\r\nIf you want to perform a source build, please only use solidity_0.5.3.tar.gz and not the zip provided by github directly.\r\n\r\nWe especially thank all the contributors that made this release possible:\r\n\r\nAlex Beregszaszi, androlo, Asher, chandan kumar mandal, Christian Parpart, Chris Ward, Daniel Kirchner, Erik Kundt, Evan Saulpaugh, Leonardo Alt, Nick Barry, Paweł Bylica, poiresel, spmvg, Tomek Kopczynski, William Entriken\r\n",
"createdAt": "2019-01-22T12:49:41Z",
"name": "Version 0.5.3",
"publishedAt": "2019-01-22T14:40:55Z",
"resourcePath": "/ethereum/solidity/releases/tag/v0.5.3",
"tagName": "v0.5.3",
"url": "https://github.com/ethereum/solidity/releases/tag/v0.5.3"
}
},
{
"node": {
"id": "MDc6UmVsZWFzZTE1NTA1NDUz",
"description": "This release adds support for calldata structs and packed encoding with ABIEncoderV2. We also introduced some changes to the C API and added support for continuous fuzzing via Google oss-fuzz. In addition to that, we added a new commandline option for improved (colorized) diagnostics formatting.\r\n\r\n**Language Features:**\r\n * Allow calldata structs without dynamically encoded members with ABIEncoderV2.\r\n\r\n\r\n**Compiler Features:**\r\n * ABIEncoderV2: Implement packed encoding.\r\n * C API (``libsolc`` / raw ``soljson.js``): Introduce ``solidity_free`` method which releases all internal buffers to save memory.\r\n * Commandline Interface: Adds new option ``--new-reporter`` for improved diagnostics formatting\r\n along with ``--color`` and ``--no-color`` for colorized output to be forced (or explicitly disabled).\r\n\r\n\r\n**Bugfixes:**\r\n * Code Generator: Defensively pad allocation of creationCode and runtimeCode to multiples of 32 bytes.\r\n * Commandline Interface: Allow yul optimizer only for strict assembly.\r\n * Parser: Disallow empty import statements.\r\n * Type Checker: Disallow mappings with data locations other than ``storage``.\r\n * Type Checker: Fix internal error when a struct array index does not fit into a uint256.\r\n * Type System: Properly report packed encoded size for arrays and structs (mostly unused until now).\r\n\r\n\r\n**Build System:**\r\n * Add support for continuous fuzzing via Google oss-fuzz\r\n * SMT: If using Z3, require version 4.6.0 or newer.\r\n * Soltest: Add parser that is used in the file-based unit test environment.\r\n * Ubuntu PPA Packages: Use CVC4 as SMT solver instead of Z3\r\n\r\nWe especially thank all the contributors that made this release possible:\r\n\r\nAlex Beregszaszi, Bhargava Shastry, Christian Reitwiessner, Christian Parpart, Chris Ward, Daniel Kirchner, Erik Kundt, Leo Arias, Leonardo Alt, Mathias Baumann, Mudit Gupta, Shelly Grossman\r\n\r\n",
"createdAt": "2019-02-12T13:20:45Z",
"name": "Version 0.5.4",
"publishedAt": "2019-02-12T13:52:07Z",
"resourcePath": "/ethereum/solidity/releases/tag/v0.5.4",
"tagName": "v0.5.4",
"url": "https://github.com/ethereum/solidity/releases/tag/v0.5.4"
}
},
{
"node": {
"id": "MDc6UmVsZWFzZTE1OTIwNDE1",
"description": "This release focuses on the stabilization of the ABIEncoderV2 and the optimizer. We also prepared for the Petersburg release which is the default EVM now and improved the SMT checker, such that it now reports less false positives when using ``SafeMath``.\r\nYou can now activate the experimental Yul optimizer using `settings: {optimizer: {enabled: true, details: {yul: true}}}` or in the commandline via `solc --optimize-yul`.\r\n\r\n**Language Features:**\r\n\r\n * Add support for getters of mappings with ``string`` or ``bytes`` key types.\r\n * Meta programming: Provide access to the name of contracts via ``type(C).name``.\r\n\r\n**Compiler Features:**\r\n\r\n * Support ``petersburg`` as ``evmVersion`` and set as default.\r\n * Commandline Interface: Option to activate the experimental yul optimizer using ``-optimize-yul``.\r\n * Inline Assembly: Consider ``extcodehash`` as part of Constantinople.\r\n * Inline Assembly: Instructions unavailable to the currently configured EVM are errors now.\r\n * SMTChecker: Do not report underflow/overflow if they always revert. This removes false positives when using ``SafeMath``.\r\n * Standard JSON Interface: Allow retrieving metadata without triggering bytecode generation.\r\n * Standard JSON Interface: Provide fine-grained control over the optimizer via the settings.\r\n * Static Analyzer: Warn about expressions with custom types when they have no effect.\r\n * Optimizer: Add new rules with constants including ``LT``, ``GT``, ``AND`` and ``BYTE``.\r\n * Optimizer: Add rule for shifts with constants for Constantinople.\r\n * Optimizer: Combine multiple shifts with constant shift-by values into one.\r\n * Optimizer: Do not mask with 160-bits after ``CREATE`` and ``CREATE2`` as they are guaranteed to return an address or 0.\r\n * Optimizer: Support shifts in the constant optimiser for Constantinople.\r\n * Yul Optimizer: Add rule to replace switch statements with literals by matching case body.\r\n\r\n**Bugfixes:**\r\n\r\n * ABIEncoderV2: Fix internal error related to bare delegatecall.\r\n * ABIEncoderV2: Fix internal error related to ecrecover.\r\n * ABIEncoderV2: Fix internal error related to mappings as library parameters.\r\n * ABIEncoderV2: Fix invalid signature for events containing structs emitted in libraries.\r\n * Inline Assembly: Proper error message for missing variables.\r\n * Optimizer: Fix internal error related to unused tag removal across assemblies. This never generated any invalid code.\r\n * SMTChecker: Fix crash related to statically-sized arrays.\r\n * TypeChecker: Fix internal error and disallow index access on contracts and libraries.\r\n * Yul: Properly detect name clashes with functions before their declaration.\r\n * Yul: Take built-in functions into account in the compilability checker.\r\n * Yul Optimizer: Properly take reassignments to variables in sub-expressions into account when replacing in the ExpressionSimplifier.\r\n\r\n**Build System:**\r\n\r\n * Soltest: Add support for left-aligned, padded hex literals.\r\n * Soltest: Add support for right-aligned, padded boolean literals.\r\n\r\nWe especially thank all the contributors that made this release possible:\r\n\r\nAlex Beregszaszi, Bhargava Shastry, Christian Parpart, Chris Ward, Daniel Kirchner, David Terry, Erik Kundt, Leo Arias, Leonardo Alt, Mathias Baumann\r\n\r\nIf you want to perform a source build, please only use solidity_0.5.5.tar.gz and not the zip provided by github directly.\r\n",
"createdAt": "2019-03-05T15:22:00Z",
"name": "Version 0.5.5",
"publishedAt": "2019-03-05T15:53:53Z",
"resourcePath": "/ethereum/solidity/releases/tag/v0.5.5",
"tagName": "v0.5.5",
"url": "https://github.com/ethereum/solidity/releases/tag/v0.5.5"
}
},
{
"node": {
"id": "MDc6UmVsZWFzZTE2MDgzNTE1",
"description": "This release mainly fixes an optimizer bug related to multiple shift opcodes that was introduced in the previous release. It is unlikely that any existing contracts are affected, but you should still not use Solidity 0.5.5.\r\n\r\nApart from that, the support for calldata structs and arrays by ABIEncoderV2 is almost finished now, we added some more optimizer rules and added enums and one-dimensional arrays to the SMT checker.\r\n\r\n**Important Bugfixes:**\r\n * Yul Optimizer: Fix visitation order bug for the structural simplifier.\r\n * Optimizer: Fix overflow in optimization rule that simplifies double shift by constant.\r\n\r\n**Language Features:**\r\n * Allow calldata arrays with dynamically encoded base types with ABIEncoderV2.\r\n * Allow dynamically encoded calldata structs with ABIEncoderV2.\r\n\r\n\r\n**Compiler Features:**\r\n * Optimizer: Add rules for ``lt``-comparisons with constants.\r\n * Peephole Optimizer: Remove double ``iszero`` before ``jumpi``.\r\n * SMTChecker: Support enums without typecast.\r\n * SMTChecker: Support one-dimensional arrays.\r\n * Type Checker: Provide better error messages for some literal conversions.\r\n * Yul Optimizer: Add rule to remove empty default switch cases.\r\n * Yul Optimizer: Add rule to remove empty cases if no default exists.\r\n * Yul Optimizer: Add rule to replace a switch with no cases with ``pop(expression)``.\r\n\r\n\r\n**Bugfixes:**\r\n * JSON ABI: Json description of library ABIs no longer contains functions with internal types like storage structs.\r\n * SMTChecker: Fix internal compiler error when contract contains too large rational number.\r\n * Type system: Detect if a contract's base uses types that require the experimental abi encoder while the contract still uses the old encoder.\r\n\r\n\r\n**Build System:**\r\n * Soltest: Add support for arrays in function signatures.\r\n * Soltest: Add support for struct arrays in function signatures.\r\n\r\nIf you want to perform a source build, please only use solidity_0.5.6.tar.gz and not the zip provided by github directly.\r\n",
"createdAt": "2019-03-13T16:49:55Z",
"name": "Version 0.5.6",
"publishedAt": "2019-03-13T16:51:47Z",
"resourcePath": "/ethereum/solidity/releases/tag/v0.5.6",
"tagName": "v0.5.6",
"url": "https://github.com/ethereum/solidity/releases/tag/v0.5.6"
}
},
{
"node": {
"id": "MDc6UmVsZWFzZTE2MzUwMjg1",
"description": "This release mainly fixes bugs in the optimizer and in the experimental ABI encoder. For details about the bug, please see the [official announcement](https://blog.ethereum.org/2019/03/26/solidity-optimizer-and-abiencoderv2-bug/).\r\n\r\nFurthermore, this release also allows you to use Yul as a language option (instead of \"Solidity\") in the [standard-json-interface](https://solidity.readthedocs.io/en/v0.5.7/using-the-compiler.html#compiler-input-and-output-json-description).\r\n\r\n**Important Bugfixes:**\r\n * ABIEncoderV2: Fix bugs related to loading short value types from storage when encoding an array or struct from storage.\r\n * ABIEncoderV2: Fix buffer overflow problem when encoding packed array from storage.\r\n * Optimizer: Fix wrong ordering of arguments in byte optimization rule for constants.\r\n\r\n\r\n**Language Features:**\r\n * Function calls with named arguments now work with overloaded functions.\r\n\r\n\r\n**Compiler Features:**\r\n * Inline Assembly: Issue error when using ``callvalue()`` inside nonpayable function (in the same way that ``msg.value`` already does).\r\n * Standard JSON Interface: Support \"Yul\" as input language.\r\n * SMTChecker: Show callstack together with model if applicable.\r\n * SMTChecker: Support modifiers.\r\n * Yul Optimizer: Enable stack allocation optimization by default if Yul optimizer is active (disable in ``yulDetails``).\r\n\r\n\r\n**Bugfixes:**\r\n * Code Generator: Defensively pad memory for ``type(Contract).name`` to multiples of 32.\r\n * Type System: Detect and disallow internal function pointers as parameters for public/external library functions, even when they are nested/wrapped in structs, arrays or other types.\r\n * Yul Optimizer: Properly determine whether a variable can be eliminated during stack compression pass.\r\n * Yul / Inline Assembly Parser: Disallow more than one case statement with the same label inside a switch based on the label's integer value.\r\n\r\n\r\n**Build System:**\r\n * Install scripts: Fix boost repository URL for CentOS 6.\r\n * Soltest: Fix hex string update in soltest.\r\n\r\n\r\nWe especially thank all the contributors that made this release possible:\r\n\r\nAlex Beregszaszi, Bhargava Shastry, Christian Parpart, Chris Ward, Constantin Kloecker, Daniel Kirchner, Erik Kundt, Leonardo Alt, Mathias Baumann, SystemGlitch, Taariq Levack\r\n\r\nIf you want to perform a source build, please only use solidity_0.5.7.tar.gz and not the zip provided by github directly.",
"createdAt": "2019-03-26T12:19:56Z",
"name": "Version 0.5.7",
"publishedAt": "2019-03-26T12:59:32Z",
"resourcePath": "/ethereum/solidity/releases/tag/v0.5.7",
"tagName": "v0.5.7",
"url": "https://github.com/ethereum/solidity/releases/tag/v0.5.7"
}
},
{
"node": {
"id": "MDc6UmVsZWFzZTE3MDQwNDAy",
"description": "This is a bugfix release for the 0.4.x series that contains backported fixes for important bugs that affected code generation. It also contains a fix that makes the emscripten target compatible with newer browser versions.\r\n\r\nImportant Bugfixes:\r\n * Code Generator: Fix initialization routine of uninitialized internal function pointers in constructor context.\r\n * Type System: Use correct type name for contracts in event parameters when used in libraries. This affected code generation.\r\n\r\nBugfixes:\r\n * ABIEncoderV2: Refuse to generate code that is known to be potentially buggy.\r\n * General: Split rule list such that JavaScript environments with small stacks can use the compiler.\r\n\r\nIf you want to perform a source build, please only use solidity_0.4.26.tar.gz and not the zip provided by github directly.",
"createdAt": "2019-04-29T14:28:45Z",
"name": "Version 0.4.26",
"publishedAt": "2019-04-29T14:52:24Z",
"resourcePath": "/ethereum/solidity/releases/tag/v0.4.26",
"tagName": "v0.4.26",
"url": "https://github.com/ethereum/solidity/releases/tag/v0.4.26"
}
},
{
"node": {
"id": "MDc6UmVsZWFzZTE3MDY0ODgy",
"description": "This release fixes important but very unlikely bugs and further completes ABIEncoderV2, SMTChecker and Yul and improves the optimizer.\r\n\r\nNotably, if ABIEncoderV2 is activated, the ABI decoder will now revert on input with dirty higher order bits instead of ignoring those bits.\r\n\r\n\r\n**Important Bugfixes:**\r\n * Code Generator: Fix initialization routine of uninitialized internal function pointers in constructor context.\r\n * Type System: Use correct type name for contracts in event parameters when used in libraries. This affected code generation.\r\n * Yul Optimizer: Fix SSA transform for multi-assignments.\r\n\r\n\r\n**Language Features:**\r\n * ABIEncoderV2: Implement encoding of calldata arrays and structs.\r\n * Code Generation: Implement copying recursive structs from storage to memory.\r\n * Yul: Disallow function definitions inside for-loop init blocks.\r\n\r\n\r\n**Compiler Features:**\r\n * ABI Decoder: Raise a runtime error on dirty inputs when using the experimental decoder.\r\n * Optimizer: Add rule for shifts by constants larger than 255 for Constantinople.\r\n * Optimizer: Add rule to simplify certain ANDs and SHL combinations\r\n * SMTChecker: Support arithmetic compound assignment operators.\r\n * SMTChecker: Support unary increment and decrement for array and mapping access.\r\n * SMTChecker: Show unsupported warning for inline assembly blocks.\r\n * SMTChecker: Support mod.\r\n * SMTChecker: Support ``contract`` type.\r\n * SMTChecker: Support ``this`` as address.\r\n * SMTChecker: Support address members.\r\n * Standard JSON Interface: Metadata settings now re-produce the original ``\"useLiteralContent\"`` setting from the compilation input.\r\n * Yul: Adds break and continue keywords to for-loop syntax.\r\n * Yul: Support ``.`` as part of identifiers.\r\n * Yul Optimizer: Adds steps for detecting and removing of dead code.\r\n\r\n\r\n**Bugfixes:**\r\n * SMTChecker: Implement Boolean short-circuiting.\r\n * SMTChecker: SSA control-flow did not take into account state variables that were modified inside inlined functions that were called inside branches.\r\n * Type System: Allow direct call to base class functions that have overloads.\r\n * Yul: Properly register functions and disallow shadowing between function variables and variables in the outside scope.\r\n\r\n\r\n**Build System:**\r\n * Soltest: Add commandline option `--test` / `-t` to isoltest which takes a string that allows filtering unit tests.\r\n * soltest.sh: allow environment variable ``SOLIDITY_BUILD_DIR`` to specify build folder and add ``--help`` usage.\r\n\r\nWe especially thank all the contributors that made this release possible:\r\n\r\nAlex Beregszaszi, Bhargava Shastry, Christian Parpart, Chris Ward, Constantin Kloecker, Daniel Kirchner, dm4, Erik Kundt, fnatic, Grant Wuerker, hydai, Ilya Ostrovskiy, Leonardo Alt, Mathias Baumann, mingchuan, rocky, William Entriken\r\n\r\nIf you want to perform a source build, please only use solidity_0.5.8.tar.gz and not the zip provided by github directly.",
"createdAt": "2019-04-30T13:10:18Z",
"name": "Version 0.5.8",
"publishedAt": "2019-04-30T14:49:46Z",
"resourcePath": "/ethereum/solidity/releases/tag/v0.5.8",
"tagName": "v0.5.8",
"url": "https://github.com/ethereum/solidity/releases/tag/v0.5.8"
}
},
{
"node": {
"id": "MDc6UmVsZWFzZTE3NjI5MzU4",
"description": "As in previous releases, we spent most of the time making Solidity future-proof by further working on the Yul optimizer, the Solidity to Yul (and eWasm) translator and the SMT Checker.\r\n\r\nCode generated from Solidity now always includes the version number in the CBOR metadata so that it becomes possible to quickly assess whether a contract might be affected by a compiler bug or not.\r\n\r\n**Language Features:**\r\n * Inline Assembly: Revert change introduced in 0.5.7: The ``callvalue()`` instruction does not require ``payable`` anymore.\r\n * Static Analyzer: Disallow libraries calling themselves externally.\r\n\r\n\r\n**Compiler Features:**\r\n * Assembler: Encode the compiler version in the deployed bytecode.\r\n * Code Generator: Fix handling of structs of dynamic size as constructor parameters.\r\n * Inline Assembly: Disallow the combination of ``msize()`` and the Yul optimizer.\r\n * Metadata: Add IPFS hashes of source files.\r\n * Optimizer: Add rule to simplify SHL/SHR combinations.\r\n * Optimizer: Add rules for multiplication and division by left-shifted one.\r\n * SMTChecker: Support inherited state variables.\r\n * SMTChecker: Support tuples and function calls with multiple return values.\r\n * SMTChecker: Support ``delete``.\r\n * SMTChecker: Inline external function calls to ``this``.\r\n * Yul Optimizer: Simplify single-run ``for`` loops to ``if`` statements.\r\n * Yul Optimizer: Optimize representation of numbers.\r\n * Yul Optimizer: Do not inline recursive functions.\r\n * Yul Optimizer: Do not remove instructions that affect ``msize()`` if ``msize()`` is used.\r\n\r\n**Bugfixes:**\r\n * Code Generator: Explicitly turn uninitialized internal function pointers into invalid functions when loaded from storage.\r\n * Code Generator: Fix assertion failure when assigning structs containing array of mapping.\r\n * Compiler Internals: Reset the Yul string repository before each compilation, freeing up memory.\r\n * SMTChecker: Fix bad cast in base constructor modifier.\r\n * SMTChecker: Fix internal error when visiting state variable inherited from base class.\r\n * SMTChecker: Fix internal error in fixed point operations.\r\n * SMTChecker: Fix internal error in assignment to unsupported type.\r\n * SMTChecker: Fix internal error in branching when inlining function calls that modify local variables.\r\n\r\n\r\nWe especially thank all the contributors that made this release possible:\r\n\r\nAlex Beregszaszi, Andrey Bronin, asymmetric, Bhargava Shastry, Christian Parpart, Chris Ward, Daniel Kirchner, Erik Kundt, Guy Lando, Isaac Ibiapina, Jorropo, Leonardo Alt, Mathias Baumann, mingchuan, Rocky, Vedant Agarwala.\r\n\r\n\r\nIf you want to perform a source build, please only use solidity_0.5.9.tar.gz and not the zip provided by github directly.",
"createdAt": "2019-05-28T16:49:01Z",
"name": "Version 0.5.9",
"publishedAt": "2019-05-28T18:25:35Z",
"resourcePath": "/ethereum/solidity/releases/tag/v0.5.9",
"tagName": "v0.5.9",
"url": "https://github.com/ethereum/solidity/releases/tag/v0.5.9"
}
},
{
"node": {
"id": "MDc6UmVsZWFzZTE4MjA3ODk3",
"description": "Apart from further invisible work on the Yul optimizer, the Solidity to Yul code generation, the eWasm backend and the SMT checker, this release contains two important bug fixes related to storage arrays.\r\n\r\nFor details see https://blog.ethereum.org/2019/06/25/solidity-storage-array-bugs/\r\n\r\nIt also contains an experimental mode that allows recovery from parser error (implemented by @rocky, funded by ConsenSys) in the hope that this might be useful for IDE developers.\r\n\r\n**Important Bugfixes:**\r\n * ABIEncoderV2: Fix incorrect abi encoding of storage array of data type that occupy multiple storage slots\r\n * Code Generator: Properly zero out higher order bits in elements of an array of negative numbers when assigning to storage and converting the type at the same time.\r\n\r\n\r\n**Compiler Features:**\r\n * Commandline Interface: Experimental parser error recovery via the ``--error-recovery`` commandline switch.\r\n * Optimizer: Add rule to simplify ``SUB(~0, X)`` to ``NOT(X)``.\r\n * Yul Optimizer: Make the optimizer work for all dialects of Yul including eWasm.\r\n\r\n\r\n**Bugfixes:**\r\n * Type Checker: Set state mutability of the function type members ``gas`` and ``value`` to pure (while their return type inherits state mutability from the function type).\r\n * Yul / Inline Assembly Parser: Disallow trailing commas in function call arguments.\r\n\r\n\r\n**Build System:**\r\n * Attempt to use stock Z3 cmake files to find Z3 and only fall back to manual discovery.\r\n * CMake: use imported targets for boost.\r\n * Emscripten build: upgrade to boost 1.70.\r\n * Generate a cmake error for gcc versions older than 5.0.\r\n\r\n\r\nWe especially thank all the contributors that made this release possible:\r\n\r\nAlex Beregszaszi, Anurag Dashputre, Bhargava Shastry, Chris Ward, Christian Parpart, Daniel Kirchner, Fabio Bonfiglio, Leonardo Alt, Mathias Baumann, mingchuan, rocky, Vedant Agarwala, Vignesh Karthikeyan, William Entriken.\r\n\r\nIf you want to perform a source build, please only use solidity_0.5.10.tar.gz and not the zip provided by github directly.",
"createdAt": "2019-06-25T14:03:50Z",
"name": "Version 0.5.10",
"publishedAt": "2019-06-25T14:45:15Z",
"resourcePath": "/ethereum/solidity/releases/tag/v0.5.10",
"tagName": "v0.5.10",
"url": "https://github.com/ethereum/solidity/releases/tag/v0.5.10"
}
},
{
"node": {
"id": "MDc6UmVsZWFzZTE5MjI4MTc5",
"description": "This release fixes a bug related to calldata structs in ABIEncoderV2 and calldata decoding in V1. Several internal bugs of the SMT checker are fixed.\r\nFurthermore, internal types are added to the ABI output which allows you to see which struct type is behind an ABI tuple. Finally, Yul and web assembly support are progressing.\r\n\r\nWe also improved our testing framework which now allows for semantics tests to run in 4 seconds instead of 1 minute.\r\n\r\n**Language Features:**\r\n * Inline Assembly: Support direct constants of value type in inline assembly.\r\n\r\n**Compiler Features:**\r\n * ABI: Additional internal type info in the field ``internalType``.\r\n * eWasm: Highly experimental eWasm output using ``--ewasm`` in the commandline interface or output selection of ``ewasm.wast`` in standard-json.\r\n * Metadata: Update the swarm hash to the current specification, changes ``bzzr0`` to ``bzzr1`` and urls to use ``bzz-raw://``.\r\n * Standard JSON Interface: Compile only selected sources and contracts.\r\n * Standard JSON Interface: Provide secondary error locations (e.g. the source position of other conflicting declarations).\r\n * SMTChecker: Do not erase knowledge about storage pointers if another storage pointer is assigned.\r\n * SMTChecker: Support string literal type.\r\n * Standard JSON Interface: Provide AST even on errors if ``--error-recovery`` commandline switch or StandardCompiler `settings.parserErrorRecovery` is true.\r\n * Yul Optimizer: Do not inline function if it would result in expressions being duplicated that are not cheap.\r\n\r\n**Bugfixes:**\r\n * ABI decoder: Ensure that decoded arrays always point to distinct memory locations.\r\n * Code Generator: Treat dynamically encoded but statically sized arrays and structs in calldata properly.\r\n * SMTChecker: Fix internal error when inlining functions that contain tuple expressions.\r\n * SMTChecker: Fix pointer knowledge erasing in loops.\r\n * SMTChecker: Fix internal error when using compound bitwise assignment operators inside branches.\r\n * SMTChecker: Fix internal error when inlining a function that returns a tuple containing an unsupported type inside a branch.\r\n * SMTChecker: Fix internal error when inlining functions that use state variables and belong to a different source.\r\n * SMTChecker: Fix internal error when reporting counterexamples concerning state variables from different source files.\r\n * SMTChecker: Fix SMT sort mismatch when using string literals.\r\n * View/Pure Checker: Properly detect state variable access through base class.\r\n * Yul Analyzer: Check availability of data objects already in analysis phase.\r\n * Yul Optimizer: Fix an issue where memory-accessing code was removed even though ``msize`` was used in the program.\r\n\r\n\r\nWe especially thank all the contributors that made this release possible:\r\n\r\nAlex Beregszaszi, Bhargava Shastry, cgrigis, Chris Chinchilla, Chris Smith, Christian Parpart, Daniel Kirchner, djudjuu, dm4, Erik Kundt, Leonardo Alt, Mathias Baumann, mingchuan, Nimish Bongale, Rocky Bernstein (supported by ConsenSys), William Entriken.\r\n\r\nIf you want to perform a source build, please only use solidity_0.5.11.tar.gz and not the zip provided by github directly.",
"createdAt": "2019-08-12T19:44:45Z",
"name": "Version 0.5.11",
"publishedAt": "2019-08-12T21:41:55Z",
"resourcePath": "/ethereum/solidity/releases/tag/v0.5.11",
"tagName": "v0.5.11",
"url": "https://github.com/ethereum/solidity/releases/tag/v0.5.11"
}
},
{
"node": {
"id": "MDc6UmVsZWFzZTIwMzg2Njkz",
"description": "This is a small bugfix release that also includes loop support for the SMT solver and some improvements to the Yul optimizer. The reason for the smaller feature set is that we are mainly working on the upcoming 0.6.0 release.\r\n\r\n**Language Features:**\r\n * Type Checker: Allow assignment to external function arguments except for reference types.\r\n\r\n**Compiler Features:**\r\n * ABI Output: Change sorting order of functions from selector to kind, name.\r\n * Optimizer: Add rule that replaces the BYTE opcode by 0 if the first argument is larger than 31.\r\n * SMTChecker: Add loop support to the CHC engine.\r\n * Yul Optimizer: Take side-effect-freeness of user-defined functions into account.\r\n * Yul Optimizer: Remove redundant mload/sload operations.\r\n\r\n**Bugfixes:**\r\n * Code Generator: Fix internal error when popping a dynamic storage array of mappings.\r\n * Name Resolver: Fix wrong source location when warning on shadowed aliases in import declarations.\r\n * Scanner: Fix multi-line natspec comment parsing with triple slashes when file is encoded with CRLF instead of LF.\r\n * Type System: Fix arrays of recursive structs.\r\n * Yul Optimizer: Fix reordering bug in connection with shifted one and mul/div-instructions in for loop conditions.\r\n\r\n\r\nWe especially thank all the contributors that made this release possible:\r\n\r\nAlexander Arlt, Alex Beregszaszi, Ayrat Badykov, Balaji Pachai, Bhargava Shastry, Chris Chinchilla, Christian Parpart, Crawford Leeds, Daniel Kirchner, Dimitry, Erik Kundt, Flash Sheridan, Gois, Lauri Peltonen, Leo Arias, Leonardo Alt, Mathias Baumann, Micah Zoltu, mingchuan, rocky (supported by ConsenSys), Solexplorer, \r\n\r\nIf you want to perform a source build, please only use solidity_0.5.12.tar.gz and not the zip provided by github directly.",
"createdAt": "2019-10-01T15:59:34Z",
"name": "Version 0.5.12",
"publishedAt": "2019-10-01T18:59:51Z",
"resourcePath": "/ethereum/solidity/releases/tag/v0.5.12",
"tagName": "v0.5.12",
"url": "https://github.com/ethereum/solidity/releases/tag/v0.5.12"
}
},
{
"node": {
"id": "MDc6UmVsZWFzZTIxNDcxNjA2",
"description": "Solidity 0.5.13 provides Istanbul-EVM compatibility (default is still set to Petersburg), is the first version to generate Ethereum-Webassembly (EWasm) binary output (not fully working yet, though), improves the developer experience by listing potential overloads when resolution fails and can output the layout of the storage variables of a contract. As with all other releases, the coverage of the SMT checker is further improved.\r\n\r\n\r\n**Language Features:**\r\n * Allow to obtain the address of a linked library with ``address(LibraryName)``.\r\n\r\n\r\n**Compiler Features:**\r\n * Code Generator: Use SELFBALANCE opcode for ``address(this).balance`` if using Istanbul EVM.\r\n * EWasm: Experimental EWasm binary output via ``--ewasm`` and as documented in standard-json.\r\n * SMTChecker: Add break/continue support to the CHC engine.\r\n * SMTChecker: Support assignments to multi-dimensional arrays and mappings.\r\n * SMTChecker: Support inheritance and function overriding.\r\n * Standard JSON Interface: Output the storage layout of a contract when artifact ``storageLayout`` is requested.\r\n * TypeChecker: List possible candidates when overload resolution fails.\r\n\r\n\r\n**Bugfixes:**\r\n * Code Generator: Fixed a faulty assert that would wrongly trigger for array sizes exceeding unsigned integer.\r\n * SMTChecker: Fix internal error when accessing indices of fixed bytes.\r\n * SMTChecker: Fix internal error when using function pointers as arguments.\r\n * SMTChecker: Fix internal error when implicitly converting string literals to fixed bytes.\r\n * Type Checker: Disallow constructor of the same class to be used as modifier.\r\n * Type Checker: Treat magic variables as unknown identifiers in inline assembly.\r\n\r\nWe especially thank all the contributors that made this release possible:\r\n\r\nAlex Beregszaszi, Alexander Arlt, Bhargava Shastry, Chris Chinchilla, Christian Parpart, Daniel Kirchner, Erik Kundt, Gaith Hallak, hellraiserinchief , Henry Lee, Jochem Brouwer, Leonardo Alt, Mathias Baumann\r\n\r\nIf you want to perform a source build, please only use solidity_0.5.13.tar.gz and not the zip provided by github directly.",
"createdAt": "2019-11-14T13:55:21Z",
"name": "Version 0.5.13",
"publishedAt": "2019-11-14T15:21:01Z",
"resourcePath": "/ethereum/solidity/releases/tag/v0.5.13",
"tagName": "v0.5.13",
"url": "https://github.com/ethereum/solidity/releases/tag/v0.5.13"
}
},
{
"node": {
"id": "MDc6UmVsZWFzZTIyMDc2NTMx",
"description": "Solidity 0.5.14 sets the default EVM version to \"Istanbul\" and is targeted as the last release in the 0.5.x series.\r\n\r\nThe SMT checker supports constructors now and it is possible to directly translate EVM-flavoured Yul to Ewasm from the commandline interface.\r\n\r\n\r\n**Language Features:**\r\n * Allow to obtain the selector of public or external library functions via a member ``.selector``.\r\n * Parser: Allow splitting string and hexadecimal string literals into multiple parts.\r\n * Inline Assembly: Support constants that reference other constants.\r\n\r\n\r\n**Compiler Features:**\r\n * Commandline Interface: Allow translation from yul / strict assembly to EWasm using ``solc --yul --yul-dialect evm --machine eWasm``\r\n * Set the default EVM version to \"Istanbul\".\r\n * SMTChecker: Add support to constructors including constructor inheritance.\r\n * Yul: When compiling via Yul, string literals from the Solidity code are kept as string literals if every character is safely printable.\r\n * Yul Optimizer: Perform loop-invariant code motion.\r\n\r\n\r\n**Bugfixes:**\r\n * SMTChecker: Fix internal error when using ``abi.decode``.\r\n * SMTChecker: Fix internal error when using arrays or mappings of functions.\r\n * SMTChecker: Fix internal error in array of structs type.\r\n * Version Checker: ``^0`` should match ``0.5.0``, but no prerelease.\r\n * Yul: Consider infinite loops and recursion to be not removable.\r\n\r\n\r\n**Build System:**\r\n * Update to emscripten version 1.39.3.\r\n\r\n\r\nWe especially thank all the contributors that made this release possible:\r\n\r\nAlex Beregszaszi, Bhargava Shastry, Chris Chinchilla, Christian Parpart, Daniel Kirchner, Erik Kundt, Gaith Hallak, Henry Lee, Lefteris Karapetsas, Leonardo Alt, Mathias Baumann, mingchuan, Paweł Bylica, William Entriken\r\n\r\nIf you want to perform a source build, please only use solidity_0.5.14.tar.gz and not the zip provided by github directly.",
"createdAt": "2019-12-09T15:17:10Z",
"name": "Version 0.5.14",
"publishedAt": "2019-12-09T17:24:43Z",
"resourcePath": "/ethereum/solidity/releases/tag/v0.5.14",
"tagName": "v0.5.14",
"url": "https://github.com/ethereum/solidity/releases/tag/v0.5.14"
}
},
{
"node": {
"id": "MDc6UmVsZWFzZTIyMjk0OTg1",
"description": "This release fixes a bug that was introduced in 0.5.14 (the previous release). You are only affected if you manually enabled the Yul optimizer (not the regular optimizer) and either used Yul stand-alone or via ABIEncoderV2. For more details, please see buglist.json.\r\n\r\n**Bugfixes:**\r\n * Yul Optimizer: Fix incorrect redundant load optimization crossing user-defined functions that contain for-loops with memory / storage writes.\r\n\r\n\r\nIf you want to perform a source build, please only use solidity_0.5.15.tar.gz and not the zip provided by github directly.",
"createdAt": "2019-12-17T16:27:41Z",
"name": "Version 0.5.15",
"publishedAt": "2019-12-17T17:23:49Z",
"resourcePath": "/ethereum/solidity/releases/tag/v0.5.15",
"tagName": "v0.5.15",
"url": "https://github.com/ethereum/solidity/releases/tag/v0.5.15"
}
},
{
"node": {
"id": "MDc6UmVsZWFzZTIyMzAzNzk3",
"description": "This is a major breaking release of the Solidity compiler and language. Changes include explicit virtual and override keywords in inheritance, support for try/catch, splitting the fallback function into a receive Ether function and an actual fallback function and limitations on how the length of an array can be changed, among others. For a detailed explanation, please see the [documentation](https://solidity.readthedocs.io/en/latest/060-breaking-changes.html) or refer to the list below that shows every single change.\r\n\r\nFrom this release on, ABIEncoderV2 is not considered experimental any more, but you still have to activate it through the pragma.\r\n\r\nFurthermore, the Yul optimizer is automatically activated together with the regular optimizer, but you can still disable it through the detailed optimizer settings.\r\n\r\n**Breaking changes:**\r\n * ABI: Remove the deprecated ``constant`` and ``payable`` fields.\r\n * ABI: The ``type`` field is now required and no longer specified to default to ``function``.\r\n * AST: Inline assembly is exported as structured JSON instead of plain string.\r\n * C API (``libsolc``): Introduce context parameter to both ``solidity_compile`` and the callback.\r\n * C API (``libsolc``): The provided callback now takes two parameters, kind and data. The callback can then be used for multiple purposes, such has file imports and SMT queries.\r\n * C API (``libsolc``): ``solidity_free`` was renamed to ``solidity_reset``. Functions ``solidity_alloc`` and ``solidity_free`` were added.\r\n * C API (``libsolc``): ``solidity_compile`` now returns a string that must be explicitly freed via ``solidity_free()``\r\n * Commandline Interface: Remove the text-based AST printer (``--ast``).\r\n * Commandline Interface: Switch to the new error reporter by default. ``--old-reporter`` falls back to the deprecated old error reporter.\r\n * Commandline Interface: Add option to disable or choose hash method between IPFS and Swarm for the bytecode metadata.\r\n * General: Disallow explicit conversions from external function types to ``address`` and add a member called ``address`` to them as replacement.\r\n * General: Enable Yul optimizer as part of standard optimization.\r\n * General: New reserved keywords: ``override``, ``receive``, and ``virtual``.\r\n * General: ``private`` cannot be used together with ``virtual``.\r\n * General: Split unnamed fallback functions into two cases defined using ``fallback()`` and ``receive()``.\r\n * Inheritance: State variable shadowing is now disallowed.\r\n * Inline Assembly: Only strict inline assembly is allowed.\r\n * Inline Assembly: Variable declarations cannot shadow declarations outside the assembly block.\r\n * JSON AST: Replace ``superFunction`` attribute by ``baseFunctions``.\r\n * Natspec JSON Interface: Properly support multiple ``@return`` statements in ``@dev`` documentation and enforce named return parameters to be mentioned in the documentation.\r\n * Source mappings: Add \"modifier depth\" as a fifth field in the source mappings.\r\n * Standard JSON Interface: Add option to disable or choose hash method between IPFS and Swarm for the bytecode metadata.\r\n * Syntax: ``push(element)`` for dynamic storage arrays do not return the new length anymore.\r\n * Syntax: Abstract contracts need to be marked explicitly as abstract by using the ``abstract`` keyword.\r\n * Syntax: ``length`` member of arrays is now always read-only, even for storage arrays.\r\n * Type Checker: Resulting type of exponentiation is equal to the type of the base. Also allow signed types for the base.\r\n\r\n**Language Features:**\r\n * Allow explicit conversions from ``address`` to ``address payable`` via ``payable(...)``.\r\n * Allow global enums and structs.\r\n * Allow public variables to override external functions.\r\n * Allow underscores as delimiters in hex strings.\r\n * Introduce syntax for array slices and implement them for dynamic calldata arrays.\r\n * Introduce ``push()`` for dynamic storage arrays. It returns a reference to the newly allocated element, if applicable.\r\n * Introduce ``virtual`` and ``override`` keywords.\r\n * Introduce ``try``/``catch``-statement\r\n * Modify ``push(element)`` for dynamic storage arrays such that it does not return the new length anymore.\r\n * Yul: Introduce ``leave`` statement that exits the current function.\r\n * JSON AST: Add the function selector of each externally-visible FunctonDefinition to the AST JSON export.\r\n\r\n**Compiler Features:**\r\n * Allow revert strings to be stripped from the binary using the ``--revert-strings`` option or the ``settings.debug.revertStrings`` setting.\r\n * ABIEncoderV2: Do not warn about enabled ABIEncoderV2 anymore (the pragma is still needed, though).\r\n\r\n\r\nWe especially thank all the contributors that made this release possible:\r\n\r\nAlexander Arlt, Alex Beregszaszi, Bhargava Shastry, cd10012, Chris Chinchilla, Christian Parpart, Cory Dickson, Daniel Kirchner, djudjuu, Erik Kundt, Gaith Hallak, krk, Leo Arias, Leonardo Alt, Mathias Baumann, misterfoxy, rodiazet, William Entriken\r\n\r\nIf you want to perform a source build, please only use solidity_0.6.0.tar.gz and not the zip provided by github directly.",
"createdAt": "2019-12-17T21:32:51Z",
"name": "Version 0.6.0",
"publishedAt": "2019-12-17T22:12:29Z",
"resourcePath": "/ethereum/solidity/releases/tag/v0.6.0",
"tagName": "v0.6.0",
"url": "https://github.com/ethereum/solidity/releases/tag/v0.6.0"
}
},
{
"node": {
"id": "MDc6UmVsZWFzZTIyNTYwNDE2",
"description": "This release fixes a bug in the Yul optimizer. You are only affected if you manually enabled the Yul optimizer (not the regular optimizer) and either used Yul stand-alone or via ABIEncoderV2. For more details, please see buglist.json.\r\n\r\n**Bugfixes:**\r\n * Yul Optimizer: Fix bug in redundant assignment remover in combination with break and continue statements.\r\n\r\n\r\n\r\n\r\nIf you want to perform a source build, please only use solidity_0.5.16.tar.gz and not the zip provided by github directly.",
"createdAt": "2020-01-02T18:52:34Z",
"name": "Version 0.5.16",
"publishedAt": "2020-01-02T18:54:13Z",
"resourcePath": "/ethereum/solidity/releases/tag/v0.5.16",
"tagName": "v0.5.16",
"url": "https://github.com/ethereum/solidity/releases/tag/v0.5.16"
}
},
{
"node": {
"id": "MDc6UmVsZWFzZTIyNTY1NTA1",
"description": "This release fixes a bug in the Yul optimizer related to ``break`` and ``continue`` statements in loops. The Yul optimizer is part of the regular optimizer since version 0.6.0. In version 0.5.x, you had to explicitly activate the Yul optimizer in addition to the regular optimizer. The Yul optimizer only operates on the code generated by ABIEncoderV2 or if you use it in a stand-alone way. The code generated by ABIEncoderV2 does not make use of ``break`` and ``continue``, but these statements can be introduced by other optimizer steps. The Yul optimizer currently is not run on inline-assembly code.\r\n\r\n\r\n**Bugfixes:**\r\n * Yul Optimizer: Fix bug in redundant assignment remover in combination with break and continue statements.\r\n\r\n\r\nIf you want to perform a source build, please only use solidity_0.6.1.tar.gz and not the zip provided by github directly.",
"createdAt": "2020-01-02T23:35:39Z",
"name": "Version 0.6.1",
"publishedAt": "2020-01-02T23:36:04Z",
"resourcePath": "/ethereum/solidity/releases/tag/v0.6.1",
"tagName": "v0.6.1",
"url": "https://github.com/ethereum/solidity/releases/tag/v0.6.1"
}
},
{
"node": {
"id": "MDc6UmVsZWFzZTIzMTQyNDk3",
"description": "After long discussions, we finally enabled a high-level way to use the ``create2`` opcode introduced in Constantinople: When creating a contract, you can specify the salt as a \"function call option\": ``new Contract{salt: 0x1234}(arg1, arg2)``. We took this opportunity and also extended the use of these function call options to specifying the gas and value options in external function calls: ``c.f{value: 10, gas: 20000}(arg1, arg2)``.\r\n\r\nFurthermore, interfaces can now inherit from interfaces, making them even more useful for specification purposes.\r\n\r\nTo allow mutation testing and other uses, you can now export the AST, modify it and re-compile starting from the modified ast using `solc --import-ast`. Note that compiling from a modified AST is not meant for production.\r\n\r\nAnd last but not least, we are now building the javascript compiler solc-js / soljson.js using webassembly which should both provide a performance boost as well as reduce compatibility issues with browsers.\r\n\r\n\r\n## Changelog:\r\n\r\n**Language Features:**\r\n * Allow accessing external functions via contract and interface names to obtain their selector.\r\n * Allow interfaces to inherit from other interfaces\r\n * Allow gas and value to be set in external function calls using ``c.f{gas: 10000, value: 4 ether}()``.\r\n * Allow specifying the ``salt`` for contract creations and thus the ``create2`` opcode using ``new C{salt: 0x1234, value: 1 ether}(arg1, arg2)``.\r\n * Inline Assembly: Support literals ``true`` and ``false``.\r\n\r\n\r\n**Compiler Features:**\r\n * LLL: The LLL compiler has been removed.\r\n * General: Raise warning if runtime bytecode exceeds 24576 bytes (a limit introduced in Spurious Dragon).\r\n * General: Support compiling starting from an imported AST. Among others, this can be used for mutation testing.\r\n * Yul Optimizer: Apply penalty when trying to rematerialize into loops.\r\n\r\n\r\n**Bugfixes:**\r\n * Commandline interface: Only activate yul optimizer if ``--optimize`` is given.\r\n * Fixes internal compiler error on explicitly calling unimplemented base functions.\r\n\r\n\r\n**Build System:**\r\n * Switch to building soljson.js with an embedded base64-encoded wasm binary.\r\n\r\n---\r\n\r\nWe especially thank all the contributors that made this release possible:\r\n\r\nAlex Beregszaszi, Bhargava Shastry, cameel, Chris Chinchilla, Christian Parpart, Daniel Kirchner, djudjuu, Erik Kundt, Gonçalo Sá, Jason Cobb, Leonardo Alt, Mathias Baumann, Nicolás Venturo, Rafael Lorandi, rodiazet, Victor Baranov, William Entriken.\r\n\r\n\r\nIf you want to perform a source build, please only use solidity_0.6.2.tar.gz and not the zip provided by github directly.",
"createdAt": "2020-01-27T13:43:22Z",
"name": "Version 0.6.2",
"publishedAt": "2020-01-27T14:27:57Z",
"resourcePath": "/ethereum/solidity/releases/tag/v0.6.2",
"tagName": "v0.6.2",
"url": "https://github.com/ethereum/solidity/releases/tag/v0.6.2"
}
},
{
"node": {
"id": "MDc6UmVsZWFzZTIzNzY2OTEx",
"description": "This release adds reason strings for compiler-generated reverts if you specify ``--revert-strings debug`` or use the setting ``settings.debug.revertStrings = \"debug\"``. Furthermore, contract types and enums are now allowed as keys for mappings and the doxygen-style comments are better supported by the AST.\r\n\r\n\r\n**Language Features:**\r\n * Allow contract types and enums as keys for mappings.\r\n * Allow function selectors to be used as compile-time constants.\r\n\r\n**Compiler Features:**\r\n * AST: Add a new node for doxygen-style, structured documentation that can be received by contract, function, event and modifier definitions.\r\n * Code Generator: Use ``calldatacopy`` instead of ``codecopy`` to zero out memory past input.\r\n * Debug: Provide reason strings for compiler-generated internal reverts when using the ``--revert-strings`` option or the ``settings.debug.revertStrings`` setting on ``debug`` mode.\r\n * Structured Documentation: Report source locations for structured documentation errors.\r\n * Yul Optimizer: Prune functions that call each other but are otherwise unreferenced.\r\n\r\n\r\n**Bugfixes:**\r\n * Assembly Output: Added missing `source` field to legacy assembly json output to complete the source reference.\r\n * Parser: Fix an internal error for ``abstract`` without ``contract``.\r\n * Type Checker: Make invalid calls to uncallable types fatal errors instead of regular.\r\n\r\n---\r\n\r\nWe especially thank all the contributors that made this release possible:\r\n\r\na3d4, Alexander Arlt, Bhargava Shastry, Brian L. McMichael, cameel, Chris Chinchilla, Christian Parpart, Daniel Kirchner, Djordje Mijovic, Erik Kundt, Gaith Hallak, Jason Cobb, Kamil Śliwak, Leonardo Alt, Mathias Baumann, Nicolas, pinkiebell, rodiazet.\r\n\r\n\r\nIf you want to perform a source build, please only use solidity_0.6.3.tar.gz and not the zip provided by github directly.",
"createdAt": "2020-02-18T14:50:19Z",
"name": "Version 0.6.3",
"publishedAt": "2020-02-18T15:38:40Z",
"resourcePath": "/ethereum/solidity/releases/tag/v0.6.3",
"tagName": "v0.6.3",
"url": "https://github.com/ethereum/solidity/releases/tag/v0.6.3"
}
},
{
"node": {
"id": "MDc6UmVsZWFzZTI0MzgwNTQ3",
"description": "Version 0.6.4 of Solidity fixes a bug that did not allow calling base contract functions directly, another bug that caused issues with variable scoping in try/catch and it allows for greater flexibility with regards to storage: It is now possible to set storage slots for storage reference variables from inline assembly. We expect this to allow new patterns in connection to delegatecall proxies and upgradable contracts. Please be careful when using this feature!\r\n\r\n**Language Features:**\r\n * General: Deprecated `value(...)` and `gas(...)` in favor of `{value: ...}` and `{gas: ...}`\r\n * Inline Assembly: Allow assigning to `_slot` of local storage variable pointers.\r\n * Inline Assembly: Perform control flow analysis on inline assembly. Allows storage returns to be set in assembly only.\r\n\r\n\r\n**Compiler Features:**\r\n * AssemblyStack: Support for source locations (source mappings) and thus debugging Yul sources.\r\n * Commandline Interface: Enable output of experimental optimized IR via ``--ir-optimized``.\r\n\r\n\r\n\r\n**Bugfixes:**\r\n * Inheritance: Fix incorrect error on calling unimplemented base functions.\r\n * Reference Resolver: Fix scoping issue following try/catch statements.\r\n * Standard-JSON-Interface: Fix a bug related to empty filenames and imports.\r\n * SMTChecker: Fix internal errors when analysing tuples.\r\n * Yul AST Import: correctly import blocks as statements, switch statements and string literals.\r\n\r\n\r\n---\r\n\r\nWe especially thank all the contributors that made this release possible:\r\n\r\na3d4, Bhargava Shastry, Chris Chinchilla, Christian Parpart, Daniel Kirchner, Djordje Mijovic, Erik Kundt, Kamil Śliwak, Leonardo Alt\r\n\r\nIf you want to perform a source build, please only use solidity_0.6.4.tar.gz and not the zip provided by github directly.",
"createdAt": "2020-03-10T14:24:17Z",
"name": "Version 0.6.4",
"publishedAt": "2020-03-10T15:26:16Z",
"resourcePath": "/ethereum/solidity/releases/tag/v0.6.4",
"tagName": "v0.6.4",
"url": "https://github.com/ethereum/solidity/releases/tag/v0.6.4"
}
},
{
"node": {
"id": "MDc6UmVsZWFzZTI0NjAzMTk5",
"description": "This maintenance release of the 0.5.x series fixes a bug that was always present in the compiler. Some people do not even consider it a bug, though, which might explain why it was undiscovered for so long:\r\n\r\nA private function can be overridden in a derived contract by a private function of the same name and types. In other words, the virtual function calling mechanism does not respect visibility.\r\nThe same applies to two private functions of the same name and type that are declared in two unrelated base contracts (diamond inheritance).\r\n\r\nThis bug has been fixed in the 0.6.x series already in version 0.6.0 by making the override mechanism more strict in general.\r\n\r\n**Bugfixes:**\r\n * Type Checker: Disallow overriding of private functions.\r\n\r\n\r\nThanks to @k06a for reporting the bug!\r\n\r\nIf you want to perform a source build, please only use solidity_0.5.17.tar.gz and not the zip provided by github directly.\r\n",
"createdAt": "2020-03-17T16:45:53Z",
"name": "Version 0.5.17",
"publishedAt": "2020-03-17T16:46:46Z",
"resourcePath": "/ethereum/solidity/releases/tag/v0.5.17",
"tagName": "v0.5.17",
"url": "https://github.com/ethereum/solidity/releases/tag/v0.5.17"
}
},
{
"node": {
"id": "MDc6UmVsZWFzZTI1MjMzMzY4",
"description": "Version 0.6.5 of Solidity fixes an important bug and introduces ``immutable`` as a major feature.\r\n\r\nThe bug concerns the allocation of dynamic memory arrays using e.g. `new uint[](...)`. The bug is considered to have a severity level of \"low\" but is present in all prior versions of Solidity. Therefore, please read more about how check if your contract is vulnerable in this [blog post](https://solidity.ethereum.org/2020/04/06/memory-creation-overflow-bug/).\r\n\r\nThe immutable feature supports setting contract-level variables at construction time if they do not change later on. These variables are stored directly in the code instead of storage, which makes them extremely cheap to use. For now, only value types are supported.\r\n\r\n**Important Bugfixes:**\r\n * Code Generator: Restrict the length of dynamic memory arrays to 64 bits during creation at runtime fixing a possible overflow.\r\n\r\n\r\n**Language Features:**\r\n * Allow local storage variables to be declared without initialization, as long as they are assigned before they are accessed.\r\n * State variables can be marked ``immutable`` which causes them to be read-only, but assignable in the constructor. The value will be stored directly in the code.\r\n\r\n\r\n**Compiler Features:**\r\n * Commandline Interface: Enable output of storage layout with `--storage-layout`.\r\n * Metadata: Added support for IPFS hashes of large files that need to be split in multiple chunks.\r\n\r\n\r\n**Bugfixes:**\r\n * Inheritance: Allow public state variables to override functions with dynamic memory types in their return values.\r\n * Inline Assembly: Fix internal error when accessing invalid constant variables.\r\n * Inline Assembly: Fix internal error when accessing functions.\r\n * JSON AST: Always add pointer suffix for memory reference types.\r\n * Reference Resolver: Fix internal error when accessing invalid struct members.\r\n * Type Checker: Fix internal errors when assigning nested tuples.\r\n\r\n\r\n----\r\n\r\nWe especially thank all the contributors that made this release possible:\r\n\r\na3d4, Alexander Arlt, Bhargava Shastry, cameel, Christian Parpart, Daniel Kirchner, Djordje Mijovic, Erik Kundt, gitpusha, hrkrshnn, iamdefinitelyahuman, Jason Cobb, Kamil Śliwak, Leonardo Alt, Martin Lundfall, Mathias Baumann\r\n\r\nIf you want to perform a source build, please only use solidity_0.6.5.tar.gz and not the zip provided by github directly.",
"createdAt": "2020-04-06T13:03:00Z",
"name": "Version 0.6.5",
"publishedAt": "2020-04-06T14:04:45Z",
"resourcePath": "/ethereum/solidity/releases/tag/v0.6.5",
"tagName": "v0.6.5",
"url": "https://github.com/ethereum/solidity/releases/tag/v0.6.5"
}
},
{
"node": {
"id": "MDc6UmVsZWFzZTI1MzU4MDg3",
"description": "This is a small bugfix release that solves an issue with certain tuple assignments.\r\n\r\n**Important Bugfixes:**\r\n * Fix tuple assignments with components occupying multiple stack slots and different stack size on left- and right-hand-side.\r\n\r\n\r\n**Bugfixes:**\r\n * AST export: Export `immutable` property in the field `mutability`.\r\n * SMTChecker: Fix internal error in the CHC engine when calling inherited functions internally.\r\n * Type Checker: Error when trying to encode functions with call options gas and value set.\r\n\r\n\r\n----\r\n\r\nWe especially thank all the contributors that made this release possible:\r\n\r\na3d4, Alexander Arlt, Black3HDF, Djordje Mijovic, hrkrshnn, Jason Cobb, Leonardo Alt\r\n\r\nIf you want to perform a source build, please only use solidity_0.6.6.tar.gz and not the zip provided by github directly.",
"createdAt": "2020-04-09T11:40:11Z",
"name": "Version 0.6.6",
"publishedAt": "2020-04-09T12:42:00Z",
"resourcePath": "/ethereum/solidity/releases/tag/v0.6.6",
"tagName": "v0.6.6",
"url": "https://github.com/ethereum/solidity/releases/tag/v0.6.6"
}
},
{
"node": {
"id": "MDc6UmVsZWFzZTI2MTM5NDcx",
"description": "Solidity version 0.6.7 introduces support for EIP-165 via `type(InterfaceName).interfaceId`.\r\n\r\n\r\n**Language Features:**\r\n * Add support for EIP 165 interface identifiers with `type(I).interfaceId`.\r\n * Allow virtual modifiers inside abstract contracts to have empty body.\r\n\r\n\r\n**Compiler Features:**\r\n * Optimizer: Simplify repeated AND and OR operations.\r\n * Option to specify optimization steps to be performed by Yul optimizer with `--yul-optimizations` in the commandline interface or `optimizer.details.yulDetails.optimizerSteps` in standard-json.\r\n * Standard Json Input: Support the prefix ``file://`` in the field ``urls``.\r\n\r\n**Bugfixes:**\r\n * SMTChecker: Fix internal error when fixed points are used.\r\n * SMTChecker: Fix internal error when using array slices.\r\n * Type Checker: Disallow ``virtual`` and ``override`` for constructors.\r\n * Type Checker: Fix several internal errors by performing size and recursiveness checks of types before the full type checking.\r\n * Type Checker: Fix internal error when assigning to empty tuples.\r\n * Type Checker: Fix internal error when applying unary operators to tuples with empty components.\r\n * Type Checker: Perform recursiveness check on structs declared at the file level.\r\n\r\n\r\n**Build System:**\r\n * soltest.sh: ``SOLIDITY_BUILD_DIR`` is no longer relative to ``REPO_ROOT`` to allow for build directories outside of the source tree.\r\n\r\n\r\n\r\n----\r\n\r\nWe especially thank all the contributors that made this release possible:\r\n\r\na3d4, Alex Beregszaszi, Alexander Arlt, Bhargava Shastry, Chris Chinchilla, Christian Parpart, Daniel Kirchner, David Cian, Djordje Mijovic, Evan Saulpaugh, hrkrshnn, iamdefinitelyahuman, Jason Cobb, KaiYu Feng, Kamil Śliwak, Leonardo Alt, Mathias Baumann, Noel Maersk, ssi91, yoni206\r\n\r\n\r\n\r\nIf you want to perform a source build, please only use solidity_0.6.7.tar.gz and not the zip provided by github directly.",
"createdAt": "2020-05-04T13:43:01Z",
"name": "Version 0.6.7",
"publishedAt": "2020-05-04T14:47:46Z",
"resourcePath": "/ethereum/solidity/releases/tag/v0.6.7",
"tagName": "v0.6.7",
"url": "https://github.com/ethereum/solidity/releases/tag/v0.6.7"
}
},
{
"node": {
"id": "MDc6UmVsZWFzZTI2NTAyNzA0",
"description": "This release of Solidity fixes three important bugs in the code generator:\r\n - a missing callvalue check for constructors\r\n - a bug connected with array slices for arrays containing dynamic types\r\n - literal strings containing backslash characters in connection with ABIEncoderV2\r\n\r\nIn addition to that:\r\n - we introduced a recommendation to use [SPDX license identifiers](https://spdx.dev/ids/#how) for all source files which are also stored in the contract metadata\r\n - it is possible to access the min and max values of an integer type directly\r\n - WebAssembly support has been extended\r\n\r\n\r\n**Important Bugfixes:**\r\n * Add missing callvalue check to the creation code of a contract that does not define a constructor but has a base that does define a constructor.\r\n * Disallow array slices of arrays with dynamically encoded base types.\r\n * String literals containing backslash characters can no longer cause incorrect code to be generated when passed directly to function calls or encoding functions when ABIEncoderV2 is active.\r\n\r\n\r\n**Language Features:**\r\n * Implemented ``type(T).min`` and ``type(T).max`` for every integer type ``T`` that returns the smallest and largest value representable by the type.\r\n\r\n\r\n**Compiler Features:**\r\n * Commandline Interface: Don't ignore `--yul-optimizations` in assembly mode.\r\n * Allow using abi encoding functions for calldata array slices without explicit casts.\r\n * Wasm binary output: Implement ``br`` and ``br_if``.\r\n\r\n\r\n**Bugfixes:**\r\n * ABI: Skip ``private`` or ``internal`` constructors.\r\n * Fixed an \"Assembly Exception in Bytecode\" error where requested functions were generated twice.\r\n * Natspec: Fixed a bug that ignored ``@return`` tag when no other developer-documentation tags were present.\r\n * Type Checker: Checks if a literal exponent in the ``**`` operation is too large or fractional.\r\n * Type Checker: Disallow accessing ``runtimeCode`` for contract types that contain immutable state variables.\r\n * Yul Assembler: Fix source location of variable declarations without value.\r\n\r\n\r\nWe especially thank all the contributors that made this release possible:\r\n\r\na3d4, Alex Beregszaszi, Alexander Arlt, Bhargava Shastry, Christian Parpart, Daniel Kirchner, Djordje Mijovic, Harikrishnan Mulackal, Kamil Śliwak, Mathias Baumann\r\n\r\nIf you want to perform a source build, please only use solidity_0.6.8.tar.gz and not the zip provided by github directly.",
"createdAt": "2020-05-14T11:53:00Z",
"name": "Version 0.6.8",
"publishedAt": "2020-05-14T12:45:27Z",
"resourcePath": "/ethereum/solidity/releases/tag/v0.6.8",
"tagName": "v0.6.8",
"url": "https://github.com/ethereum/solidity/releases/tag/v0.6.8"
}
},
{
"node": {
"id": "MDc6UmVsZWFzZTI3MjIzMDgz",
"description": "This is the first release of Solidity where the solc-js / soljson binary includes the Z3 SMT solver built-in. This means you can use ``pragma experimental SMTChecker;`` even without a local install of z3. Note that this causes an increase in the binary size.\r\n\r\nOn the language side, the ``calldata`` data location for variables and parameters is now allowed everywhere, even in internal functions.\r\n\r\nTo enhance developer experience, the option ``--base-path`` allows you to specify a root path of your contract directory structure to help with imports.\r\n\r\n\r\n**Language Features:**\r\n * Permit calldata location for all variables.\r\n * NatSpec: Support NatSpec comments on state variables.\r\n * Yul: EVM instruction `pc()` is marked deprecated and will be removed in the next breaking release.\r\n\r\n\r\n**Compiler Features:**\r\n * Build system: Update the soljson.js build to emscripten 1.39.15 and boost 1.73.0 and include Z3 for integrated SMTChecker support without the callback mechanism.\r\n * Build system: Switch the emscripten build from the fastcomp backend to the upstream backend.\r\n * Code Generator: Do not introduce new internal source references for small compiler routines.\r\n * Commandline Interface: Adds new option ``--base-path PATH`` to use the given path as the root of the source tree (defaults to the root of the filesystem).\r\n * SMTChecker: Support array ``length``.\r\n * SMTChecker: Support array ``push`` and ``pop``.\r\n * SMTChecker: General support to BitVectors and the bitwise ``and`` operator.\r\n\r\n\r\n**Bugfixes:**\r\n * Code Generator: Trigger proper unimplemented errors on certain array copy operations.\r\n * Commandline Interface: Fix internal error when using ``--assemble`` or ``--yul`` options with ``--machine ewasm`` but without specifying ``--yul-dialect``.\r\n * NatSpec: DocString block is terminated when encountering an empty line.\r\n * Optimizer: Fixed a bug in BlockDeDuplicator.\r\n * Scanner: Fix bug when two empty NatSpec comments lead to scanning past EOL.\r\n * SMTChecker: Fix internal error on try/catch clauses with parameters.\r\n * SMTChecker: Fix internal error when applying arithmetic operators to fixed point variables.\r\n * SMTChecker: Fix internal error when assigning to index access inside branches.\r\n * SMTChecker: Fix internal error when short circuiting Boolean expressions with function calls in state variable initialization.\r\n * Type Checker: Disallow assignments to storage variables of type ``mapping``.\r\n * Type Checker: Disallow inline arrays of non-nameable types.\r\n * Type Checker: Disallow usage of override with non-public state variables.\r\n * Type Checker: Fix internal compiler error when accessing members of array slices.\r\n * Type Checker: Fix internal compiler error when forward referencing non-literal constants from inline assembly.\r\n * Type Checker: Fix internal compiler error when trying to decode too large static arrays.\r\n * Type Checker: Fix wrong compiler error when referencing an overridden function without calling it.\r\n\r\nWe especially thank all the contributors that made this release possible:\r\n\r\na3d4, Alex Beregszaszi, Alexander Arlt, Bhargava Shastry, Christian Parpart, Daniel Kirchner, Djordje Mijovic, Erik Kundt, Flash Sheridan, Harikrishnan Mulackal, Jason Cobb, Juan Franco, Kamil Śliwak, Leonardo Alt, Mathias Baumann, ssi91, William Entriken\r\n\r\nIf you want to perform a source build, please only use solidity_0.6.9.tar.gz and not the zip provided by github directly.\r\n",
"createdAt": "2020-06-04T15:27:00Z",
"name": "Version 0.6.9",
"publishedAt": "2020-06-04T15:31:14Z",
"resourcePath": "/ethereum/solidity/releases/tag/v0.6.9",
"tagName": "v0.6.9",
"url": "https://github.com/ethereum/solidity/releases/tag/v0.6.9"
}
},
{
"node": {
"id": "MDc6UmVsZWFzZTI3NDUzODQz",
"description": "Solidity 0.6.10 is a bugfix release that fixes a bug introduced in 0.6.9 related to library functions with calldata parameters that are called via ``using for``. For more details on the bug, pleas see the [blog post](https://solidity.ethereum.org/2020/06/11/solidity-0610-release-announcement/).\r\n\r\nIn addition to that, the compiler now generates error codes that could be useful for IDEs or automated analysis tools.\r\n\r\n**Important Bugfixes:**\r\n * Fixed a bug related to internal library functions with ``calldata`` parameters called via ``using for``.\r\n\r\n\r\n**Compiler Features:**\r\n * Commandline Interface: Re-group help screen.\r\n * Output compilation error codes in standard-json and when using ``--error-codes``.\r\n * Yul: Raise warning for switch statements that only have a default and no other cases.\r\n\r\n\r\n**Bugfixes:**\r\n * SMTChecker: Fix internal error when encoding tuples of tuples.\r\n * SMTChecker: Fix aliasing soundness after pushing to an array pointer.\r\n * Type system: Fix internal compiler error on calling externally a function that returns variables with calldata location.\r\n * Type system: Fix bug where a bound function was not found if ``using for`` is applied to explicit reference types.\r\n\r\n\r\nWe especially thank all the contributors that made this release possible:\r\n\r\na3d4, Daniel Kirchner, Djordje Mijovic, ethers, Harikrishnan Mulackal, Igor Line, Kamil Śliwak, Leonardo Alt, Leonardo, Paul Razvan Berg, TrentZ\r\n\r\nIf you want to perform a source build, please only use solidity_0.6.10.tar.gz and not the zip provided by github directly.\r\n",
"createdAt": "2020-06-11T13:11:19Z",
"name": "Version 0.6.10",
"publishedAt": "2020-06-11T14:34:23Z",
"resourcePath": "/ethereum/solidity/releases/tag/v0.6.10",
"tagName": "v0.6.10",
"url": "https://github.com/ethereum/solidity/releases/tag/v0.6.10"
}
},
{
"node": {
"id": "MDc6UmVsZWFzZTI4MzA2MjYw",
"description": "This release adds inheritance to NatSpec comments, improves debugging data output and fixes some minor issues with opening up ``calldata`` for non-external functions.\r\n\r\n\r\n**Language Features:**\r\n * General: Add unit denomination ``gwei``\r\n * Yul: Support ``linkersymbol`` builtin in standalone assembly mode to refer to library addresses.\r\n * Yul: Support using string literals exceeding 32 bytes as literal arguments for builtins.\r\n\r\n\r\n**Compiler Features:**\r\n * NatSpec: Add fields ``kind`` and ``version`` to the JSON output.\r\n * NatSpec: Inherit tags from unique base functions if derived function does not provide any.\r\n * Commandline Interface: Prevent some incompatible commandline options from being used together.\r\n * NatSpec: Support NatSpec comments on events.\r\n * Yul Optimizer: Store knowledge about storage / memory after ``a := sload(x)`` / ``a := mload(x)``.\r\n * SMTChecker: Support external calls to unknown code.\r\n * Source Maps: Also tag jumps into and out of Yul functions as jumps into and out of functions.\r\n\r\n\r\n**Bugfixes:**\r\n * NatSpec: Do not consider ``////`` and ``/***`` as NatSpec comments.\r\n * Type Checker: Disallow constructor parameters with ``calldata`` data location.\r\n * Type Checker: Do not disallow assigning to calldata variables.\r\n * Type Checker: Fix internal error related to ``using for`` applied to non-libraries.\r\n * Wasm backend: Fix code generation for for-loops with pre statements.\r\n * Wasm backend: Properly support both ``i32.drop`` and ``i64.drop``, and remove ``drop``.\r\n * Yul: Disallow the same variable to occur multiple times on the left-hand side of an assignment.\r\n * Yul: Fix source location of variable multi-assignment.\r\n\r\n\r\nWe especially thank all the contributors that made this release possible:\r\n\r\na3d4, Alex Beregszaszi, Alexander Arlt, Bhargava Shastry, Daniel Kirchner, Djordje Mijovic, Harikrishnan Mulackal, Kamil Śliwak, Leonardo Alt, Mathias Baumann, step21\r\n\r\nIf you want to perform a source build, please only use solidity_0.6.11.tar.gz and not the zip provided by github directly.\r\n",
"createdAt": "2020-07-07T13:34:38Z",
"name": "Version 0.6.11",
"publishedAt": "2020-07-07T14:40:53Z",
"resourcePath": "/ethereum/solidity/releases/tag/v0.6.11",
"tagName": "v0.6.11",
"url": "https://github.com/ethereum/solidity/releases/tag/v0.6.11"
}
},
{
"node": {
"id": "MDc6UmVsZWFzZTI4Nzg0Mzcx",
"description": "This release of Solidity adds more flexibility to inheriting NatSpec and improves the handling of the stack.\r\n\r\n\r\n**Language Features:**\r\n * NatSpec: Implement tag ``@inheritdoc`` to copy documentation from a specific base contract.\r\n * Wasm backend: Add ``i32.ctz``, ``i64.ctz``, ``i32.popcnt``, and ``i64.popcnt``.\r\n\r\n\r\n**Compiler Features:**\r\n * Code Generator: Avoid double cleanup when copying to memory.\r\n * Code Generator: Evaluate ``keccak256`` of string literals at compile-time.\r\n * Optimizer: Add rule to remove shifts inside the byte opcode.\r\n * Peephole Optimizer: Add rule to remove swap after dup.\r\n * Peephole Optimizer: Remove unnecessary masking of tags.\r\n * Yul EVM Code Transform: Free stack slots directly after visiting the right-hand-side of variable declarations instead of at the end of the statement only.\r\n\r\n\r\n**Bugfixes:**\r\n * SMTChecker: Fix error in events with indices of type static array.\r\n * SMTChecker: Fix internal error in sequential storage array pushes (``push().push()``).\r\n * SMTChecker: Fix internal error when using bitwise operators on fixed bytes type.\r\n * SMTChecker: Fix internal error when using compound bitwise operator assignments on array indices inside branches.\r\n * Type Checker: Fix internal compiler error related to oversized types.\r\n * Type Checker: Fix overload resolution in combination with ``{value: ...}``.\r\n\r\n\r\n**Build System**\r\n * Update internal dependency of jsoncpp to 1.9.3.\r\n\r\nWe especially thank all the contributors that made this release possible:\r\n\r\na3d4, Alex Beregszaszi, Alexander Arlt, Bhargava Shastry, Daniel Kirchner, Djordje Mijovic, Kamil Śliwak, Leonardo Alt, Mathias Baumann, Sachin Grover, Tiny熊, \r\n\r\nIf you want to perform a source build, please only use solidity_0.6.12.tar.gz and not the zip provided by github directly.\r\n",
"createdAt": "2020-07-22T13:34:41Z",
"name": "Version 0.6.12",
"publishedAt": "2020-07-22T14:55:45Z",
"resourcePath": "/ethereum/solidity/releases/tag/v0.6.12",
"tagName": "v0.6.12",
"url": "https://github.com/ethereum/solidity/releases/tag/v0.6.12"
}
},
{
"node": {
"id": "MDc6UmVsZWFzZTI5MDIxMzY5",
"description": "Solidity 0.7.0 is a breaking release of the Solidity compiler and language.\r\n\r\nThis release does not include many features but rather changes that require a\r\nbackwards-incompatible adjustment in syntax or semantics. For a detailed explanation,\r\nplease see the [documentation](https://solidity.readthedocs.io/en/latest/070-breaking-changes.html).\r\n\r\nMost notably, further cleanup of visibility and state mutability has been performed\r\nand several unpopular keywords have been removed. Types with mappings\r\nin memory are disallowed and shift and exponentiation operations use more reasonable types.\r\n\r\nSince we usually do not backport bugfixes, it is recommended to upgrade all code to be compatible with Solidity v.0.7.0.\r\n\r\nThe [solidity-upgrade tool](https://solidity.readthedocs.io/en/latest/using-the-compiler.html#solidity-upgrade) can help you to semi-automatically upgrade your contracts to breaking language changes. While ``solidity-upgrade`` carries out a large part of the work, your contracts will most likely need further manual adjustments.\r\n\r\nYou can find a guide on how to update your code [here](https://solidity.readthedocs.io/en/latest/070-breaking-changes.html#how-to-update-your-code).\r\n\r\nNote that changes listed below are the **changes between 0.6.12 and 0.7.0**. For changes introduced\r\nduring the 0.6.x series, please see the individual changelogs or release announcements on this blog.\r\n\r\n**Breaking Changes:**\r\n * Inline Assembly: Disallow ``.`` in user-defined function and variable names.\r\n * Inline Assembly: Slot and offset of storage pointer variable ``x`` are accessed via ``x.slot`` and ``x.offset`` instead of ``x_slot`` and ``x_offset``.\r\n * JSON AST: Mark hex string literals with ``kind: \"hexString\"``.\r\n * JSON AST: Remove members with ``null`` value from JSON output.\r\n * Parser: Disallow ``gwei`` as identifier.\r\n * Parser: Disallow dot syntax for ``value`` and ``gas``.\r\n * Parser: Disallow non-printable characters in string literals.\r\n * Parser: Introduce Unicode string literals: ``unicode\"😃\"``.\r\n * Parser: NatSpec comments on variables are only allowed for public state variables.\r\n * Parser: Remove the ``finney`` and ``szabo`` denominations.\r\n * Parser: Remove the identifier ``now`` (replaced by ``block.timestamp``).\r\n * Reference Resolver: ``using A for B`` only affects the contract it is mentioned in and not all derived contracts\r\n * Type Checker: Disallow ``virtual`` for library functions.\r\n * Type Checker: Disallow assignments to state variables that contain nested mappings.\r\n * Type checker: Disallow events with same name and parameter types in inheritance hierarchy.\r\n * Type Checker: Disallow shifts by signed types.\r\n * Type Checker: Disallow structs and arrays in memory or calldata if they contain nested mappings.\r\n * Type Checker: Exponentiation and shifts of literals by non-literals will always use ``uint256`` or ``int256`` as a type.\r\n * Yul: Disallow consecutive and trailing dots in identifiers. Leading dots were already disallowed.\r\n * Yul: Disallow EVM instruction `pc()`.\r\n\r\n\r\n**Language Features:**\r\n * Inheritance: Allow overrides to have stricter state mutability: ``view`` can override ``nonpayable`` and ``pure`` can override ``view``.\r\n * Parser: Deprecate visibility for constructors.\r\n * State mutability: Do not issue recommendation for stricter mutability for virtual functions but do issue it for functions that override.\r\n\r\n\r\n**Compiler Features:**\r\n * SMTChecker: Report multi-transaction counterexamples including the function calls that initiate the transactions. This does not include concrete values for reference types and reentrant calls.\r\n * Variable declarations using the ``var`` keyword are not recognized anymore.\r\n\r\n\r\n**Bugfixes:**\r\n * Inheritance: Disallow public state variables overwriting ``pure`` functions.\r\n * NatSpec: Constructors and functions have consistent userdoc output.\r\n * SMTChecker: Fix internal error when assigning to a 1-tuple.\r\n * SMTChecker: Fix internal error when tuples have extra effectless parenthesis.\r\n * State Mutability: Constant public state variables are considered ``pure`` functions.\r\n * Type Checker: Fixing deduction issues on function types when function call has named arguments.\r\n * Immutables: Fix internal compiler error when immutables are not assigned.\r\n\r\n\r\nWe especially thank all the contributors that made this release possible:\r\n\r\na3d4, Alex Beregszaszi, Alexander Arlt, Bhargava Shastry, Christian Parpart, Daniel Kirchner, Djordje Mijovic, Erik Kundt, franzihei, Harikrishnan Mulackal, Leonardo Alt, Mathias Baumann.\r\n\r\nIf you want to perform a source build, please only use solidity_0.7.0.tar.gz and not the zip provided by github directly.",
"createdAt": "2020-07-28T12:33:04Z",
"name": "Version 0.7.0",
"publishedAt": "2020-07-28T13:22:52Z",
"resourcePath": "/ethereum/solidity/releases/tag/v0.7.0",
"tagName": "v0.7.0",
"url": "https://github.com/ethereum/solidity/releases/tag/v0.7.0"
}
}
]
}
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment