mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
Create and update bugs by version list.
This commit is contained in:
parent
291ece2bdb
commit
a7e605a7a1
297
docs/bugs_by_version.json
Normal file
297
docs/bugs_by_version.json
Normal file
@ -0,0 +1,297 @@
|
|||||||
|
{
|
||||||
|
"0.1.0": {
|
||||||
|
"bugs": [
|
||||||
|
"IdentityPrecompileReturnIgnored",
|
||||||
|
"StaleKnowledegAboutSHA3",
|
||||||
|
"SendFailsForZeroEther",
|
||||||
|
"DynamicAllocationInfiniteLoop",
|
||||||
|
"ClearStateOnCodePathJoin",
|
||||||
|
"CleanBytesHigherOrderBits",
|
||||||
|
"ArrayAccessCleanHigherOrderBits",
|
||||||
|
"AncientCompiler"
|
||||||
|
],
|
||||||
|
"released": "2015-07-10"
|
||||||
|
},
|
||||||
|
"0.1.1": {
|
||||||
|
"bugs": [
|
||||||
|
"IdentityPrecompileReturnIgnored",
|
||||||
|
"StaleKnowledegAboutSHA3",
|
||||||
|
"SendFailsForZeroEther",
|
||||||
|
"DynamicAllocationInfiniteLoop",
|
||||||
|
"ClearStateOnCodePathJoin",
|
||||||
|
"CleanBytesHigherOrderBits",
|
||||||
|
"ArrayAccessCleanHigherOrderBits",
|
||||||
|
"AncientCompiler"
|
||||||
|
],
|
||||||
|
"released": "2015-08-04"
|
||||||
|
},
|
||||||
|
"0.1.2": {
|
||||||
|
"bugs": [
|
||||||
|
"IdentityPrecompileReturnIgnored",
|
||||||
|
"StaleKnowledegAboutSHA3",
|
||||||
|
"SendFailsForZeroEther",
|
||||||
|
"DynamicAllocationInfiniteLoop",
|
||||||
|
"ClearStateOnCodePathJoin",
|
||||||
|
"CleanBytesHigherOrderBits",
|
||||||
|
"ArrayAccessCleanHigherOrderBits",
|
||||||
|
"AncientCompiler"
|
||||||
|
],
|
||||||
|
"released": "2015-08-20"
|
||||||
|
},
|
||||||
|
"0.1.3": {
|
||||||
|
"bugs": [
|
||||||
|
"IdentityPrecompileReturnIgnored",
|
||||||
|
"StaleKnowledegAboutSHA3",
|
||||||
|
"SendFailsForZeroEther",
|
||||||
|
"DynamicAllocationInfiniteLoop",
|
||||||
|
"ClearStateOnCodePathJoin",
|
||||||
|
"CleanBytesHigherOrderBits",
|
||||||
|
"ArrayAccessCleanHigherOrderBits",
|
||||||
|
"AncientCompiler"
|
||||||
|
],
|
||||||
|
"released": "2015-09-25"
|
||||||
|
},
|
||||||
|
"0.1.4": {
|
||||||
|
"bugs": [
|
||||||
|
"IdentityPrecompileReturnIgnored",
|
||||||
|
"StaleKnowledegAboutSHA3",
|
||||||
|
"SendFailsForZeroEther",
|
||||||
|
"DynamicAllocationInfiniteLoop",
|
||||||
|
"ClearStateOnCodePathJoin",
|
||||||
|
"CleanBytesHigherOrderBits",
|
||||||
|
"ArrayAccessCleanHigherOrderBits",
|
||||||
|
"AncientCompiler"
|
||||||
|
],
|
||||||
|
"released": "2015-09-30"
|
||||||
|
},
|
||||||
|
"0.1.5": {
|
||||||
|
"bugs": [
|
||||||
|
"IdentityPrecompileReturnIgnored",
|
||||||
|
"StaleKnowledegAboutSHA3",
|
||||||
|
"SendFailsForZeroEther",
|
||||||
|
"DynamicAllocationInfiniteLoop",
|
||||||
|
"ClearStateOnCodePathJoin",
|
||||||
|
"CleanBytesHigherOrderBits",
|
||||||
|
"ArrayAccessCleanHigherOrderBits",
|
||||||
|
"AncientCompiler"
|
||||||
|
],
|
||||||
|
"released": "2015-10-07"
|
||||||
|
},
|
||||||
|
"0.1.6": {
|
||||||
|
"bugs": [
|
||||||
|
"IdentityPrecompileReturnIgnored",
|
||||||
|
"HighOrderByteCleanStorage",
|
||||||
|
"StaleKnowledegAboutSHA3",
|
||||||
|
"SendFailsForZeroEther",
|
||||||
|
"DynamicAllocationInfiniteLoop",
|
||||||
|
"ClearStateOnCodePathJoin",
|
||||||
|
"CleanBytesHigherOrderBits",
|
||||||
|
"ArrayAccessCleanHigherOrderBits",
|
||||||
|
"AncientCompiler"
|
||||||
|
],
|
||||||
|
"released": "2015-10-16"
|
||||||
|
},
|
||||||
|
"0.1.7": {
|
||||||
|
"bugs": [
|
||||||
|
"IdentityPrecompileReturnIgnored",
|
||||||
|
"HighOrderByteCleanStorage",
|
||||||
|
"StaleKnowledegAboutSHA3",
|
||||||
|
"SendFailsForZeroEther",
|
||||||
|
"DynamicAllocationInfiniteLoop",
|
||||||
|
"ClearStateOnCodePathJoin",
|
||||||
|
"CleanBytesHigherOrderBits",
|
||||||
|
"ArrayAccessCleanHigherOrderBits",
|
||||||
|
"AncientCompiler"
|
||||||
|
],
|
||||||
|
"released": "2015-11-17"
|
||||||
|
},
|
||||||
|
"0.2.0": {
|
||||||
|
"bugs": [
|
||||||
|
"IdentityPrecompileReturnIgnored",
|
||||||
|
"HighOrderByteCleanStorage",
|
||||||
|
"StaleKnowledegAboutSHA3",
|
||||||
|
"SendFailsForZeroEther",
|
||||||
|
"DynamicAllocationInfiniteLoop",
|
||||||
|
"ClearStateOnCodePathJoin",
|
||||||
|
"CleanBytesHigherOrderBits",
|
||||||
|
"ArrayAccessCleanHigherOrderBits",
|
||||||
|
"AncientCompiler"
|
||||||
|
],
|
||||||
|
"released": "2015-12-02"
|
||||||
|
},
|
||||||
|
"0.2.1": {
|
||||||
|
"bugs": [
|
||||||
|
"IdentityPrecompileReturnIgnored",
|
||||||
|
"HighOrderByteCleanStorage",
|
||||||
|
"StaleKnowledegAboutSHA3",
|
||||||
|
"SendFailsForZeroEther",
|
||||||
|
"DynamicAllocationInfiniteLoop",
|
||||||
|
"ClearStateOnCodePathJoin",
|
||||||
|
"CleanBytesHigherOrderBits",
|
||||||
|
"ArrayAccessCleanHigherOrderBits",
|
||||||
|
"AncientCompiler"
|
||||||
|
],
|
||||||
|
"released": "2016-01-30"
|
||||||
|
},
|
||||||
|
"0.2.2": {
|
||||||
|
"bugs": [
|
||||||
|
"IdentityPrecompileReturnIgnored",
|
||||||
|
"HighOrderByteCleanStorage",
|
||||||
|
"StaleKnowledegAboutSHA3",
|
||||||
|
"SendFailsForZeroEther",
|
||||||
|
"DynamicAllocationInfiniteLoop",
|
||||||
|
"ClearStateOnCodePathJoin",
|
||||||
|
"CleanBytesHigherOrderBits",
|
||||||
|
"ArrayAccessCleanHigherOrderBits",
|
||||||
|
"AncientCompiler"
|
||||||
|
],
|
||||||
|
"released": "2016-02-17"
|
||||||
|
},
|
||||||
|
"0.3.0": {
|
||||||
|
"bugs": [
|
||||||
|
"IdentityPrecompileReturnIgnored",
|
||||||
|
"HighOrderByteCleanStorage",
|
||||||
|
"StaleKnowledegAboutSHA3",
|
||||||
|
"SendFailsForZeroEther",
|
||||||
|
"DynamicAllocationInfiniteLoop",
|
||||||
|
"ClearStateOnCodePathJoin",
|
||||||
|
"CleanBytesHigherOrderBits",
|
||||||
|
"ArrayAccessCleanHigherOrderBits"
|
||||||
|
],
|
||||||
|
"released": "2016-03-11"
|
||||||
|
},
|
||||||
|
"0.3.1": {
|
||||||
|
"bugs": [
|
||||||
|
"IdentityPrecompileReturnIgnored",
|
||||||
|
"HighOrderByteCleanStorage",
|
||||||
|
"StaleKnowledegAboutSHA3",
|
||||||
|
"SendFailsForZeroEther",
|
||||||
|
"DynamicAllocationInfiniteLoop",
|
||||||
|
"ClearStateOnCodePathJoin",
|
||||||
|
"CleanBytesHigherOrderBits"
|
||||||
|
],
|
||||||
|
"released": "2016-03-31"
|
||||||
|
},
|
||||||
|
"0.3.2": {
|
||||||
|
"bugs": [
|
||||||
|
"IdentityPrecompileReturnIgnored",
|
||||||
|
"HighOrderByteCleanStorage",
|
||||||
|
"StaleKnowledegAboutSHA3",
|
||||||
|
"SendFailsForZeroEther",
|
||||||
|
"DynamicAllocationInfiniteLoop",
|
||||||
|
"ClearStateOnCodePathJoin",
|
||||||
|
"CleanBytesHigherOrderBits"
|
||||||
|
],
|
||||||
|
"released": "2016-04-18"
|
||||||
|
},
|
||||||
|
"0.3.3": {
|
||||||
|
"bugs": [
|
||||||
|
"IdentityPrecompileReturnIgnored",
|
||||||
|
"HighOrderByteCleanStorage",
|
||||||
|
"StaleKnowledegAboutSHA3",
|
||||||
|
"SendFailsForZeroEther",
|
||||||
|
"DynamicAllocationInfiniteLoop",
|
||||||
|
"ClearStateOnCodePathJoin"
|
||||||
|
],
|
||||||
|
"released": "2016-05-27"
|
||||||
|
},
|
||||||
|
"0.3.4": {
|
||||||
|
"bugs": [
|
||||||
|
"IdentityPrecompileReturnIgnored",
|
||||||
|
"HighOrderByteCleanStorage",
|
||||||
|
"StaleKnowledegAboutSHA3",
|
||||||
|
"SendFailsForZeroEther",
|
||||||
|
"DynamicAllocationInfiniteLoop",
|
||||||
|
"ClearStateOnCodePathJoin"
|
||||||
|
],
|
||||||
|
"released": "2016-05-31"
|
||||||
|
},
|
||||||
|
"0.3.5": {
|
||||||
|
"bugs": [
|
||||||
|
"IdentityPrecompileReturnIgnored",
|
||||||
|
"HighOrderByteCleanStorage",
|
||||||
|
"StaleKnowledegAboutSHA3",
|
||||||
|
"SendFailsForZeroEther",
|
||||||
|
"DynamicAllocationInfiniteLoop",
|
||||||
|
"ClearStateOnCodePathJoin"
|
||||||
|
],
|
||||||
|
"released": "2016-06-10"
|
||||||
|
},
|
||||||
|
"0.3.6": {
|
||||||
|
"bugs": [
|
||||||
|
"IdentityPrecompileReturnIgnored",
|
||||||
|
"HighOrderByteCleanStorage",
|
||||||
|
"StaleKnowledegAboutSHA3",
|
||||||
|
"SendFailsForZeroEther"
|
||||||
|
],
|
||||||
|
"released": "2016-08-10"
|
||||||
|
},
|
||||||
|
"0.4.0": {
|
||||||
|
"bugs": [
|
||||||
|
"IdentityPrecompileReturnIgnored",
|
||||||
|
"HighOrderByteCleanStorage",
|
||||||
|
"StaleKnowledegAboutSHA3",
|
||||||
|
"LibrariesNotCallableFromPayableFunctions"
|
||||||
|
],
|
||||||
|
"released": "2016-09-08"
|
||||||
|
},
|
||||||
|
"0.4.1": {
|
||||||
|
"bugs": [
|
||||||
|
"IdentityPrecompileReturnIgnored",
|
||||||
|
"HighOrderByteCleanStorage",
|
||||||
|
"StaleKnowledegAboutSHA3",
|
||||||
|
"LibrariesNotCallableFromPayableFunctions"
|
||||||
|
],
|
||||||
|
"released": "2016-09-09"
|
||||||
|
},
|
||||||
|
"0.4.10": {
|
||||||
|
"bugs": [],
|
||||||
|
"released": "2017-03-15"
|
||||||
|
},
|
||||||
|
"0.4.2": {
|
||||||
|
"bugs": [
|
||||||
|
"IdentityPrecompileReturnIgnored",
|
||||||
|
"HighOrderByteCleanStorage",
|
||||||
|
"StaleKnowledegAboutSHA3"
|
||||||
|
],
|
||||||
|
"released": "2016-09-17"
|
||||||
|
},
|
||||||
|
"0.4.3": {
|
||||||
|
"bugs": [
|
||||||
|
"IdentityPrecompileReturnIgnored",
|
||||||
|
"HighOrderByteCleanStorage"
|
||||||
|
],
|
||||||
|
"released": "2016-10-25"
|
||||||
|
},
|
||||||
|
"0.4.4": {
|
||||||
|
"bugs": [
|
||||||
|
"IdentityPrecompileReturnIgnored"
|
||||||
|
],
|
||||||
|
"released": "2016-10-31"
|
||||||
|
},
|
||||||
|
"0.4.5": {
|
||||||
|
"bugs": [
|
||||||
|
"IdentityPrecompileReturnIgnored",
|
||||||
|
"StateKnowledgeNotResetForJumpdest"
|
||||||
|
],
|
||||||
|
"released": "2016-11-21"
|
||||||
|
},
|
||||||
|
"0.4.6": {
|
||||||
|
"bugs": [
|
||||||
|
"IdentityPrecompileReturnIgnored"
|
||||||
|
],
|
||||||
|
"released": "2016-11-22"
|
||||||
|
},
|
||||||
|
"0.4.7": {
|
||||||
|
"bugs": [],
|
||||||
|
"released": "2016-12-15"
|
||||||
|
},
|
||||||
|
"0.4.8": {
|
||||||
|
"bugs": [],
|
||||||
|
"released": "2017-01-13"
|
||||||
|
},
|
||||||
|
"0.4.9": {
|
||||||
|
"bugs": [],
|
||||||
|
"released": "2017-01-31"
|
||||||
|
}
|
||||||
|
}
|
43
scripts/update_bugs_by_version.py
Executable file
43
scripts/update_bugs_by_version.py
Executable file
@ -0,0 +1,43 @@
|
|||||||
|
#!/usr/bin/env python
|
||||||
|
#
|
||||||
|
# This script is used to generate the list of bugs per compiler version
|
||||||
|
# from the list of bugs.
|
||||||
|
# It updates the list in place and signals failure if there were changes.
|
||||||
|
# This makes it possible to use this script as part of CI to check
|
||||||
|
# that the list is up to date.
|
||||||
|
|
||||||
|
import os
|
||||||
|
import json
|
||||||
|
import re
|
||||||
|
import sys
|
||||||
|
|
||||||
|
def comp(version_string):
|
||||||
|
return [int(c) for c in version_string.split('.')]
|
||||||
|
|
||||||
|
path = os.path.dirname(os.path.realpath(__file__))
|
||||||
|
with open(path + '/../docs/bugs.json') as bugsFile:
|
||||||
|
bugs = json.load(bugsFile)
|
||||||
|
|
||||||
|
versions = {}
|
||||||
|
with open(path + '/../Changelog.md') as changelog:
|
||||||
|
for line in changelog:
|
||||||
|
m = re.search(r'^### (\S+) \((\d+-\d+-\d+)\)$', line)
|
||||||
|
if m:
|
||||||
|
versions[m.group(1)] = {}
|
||||||
|
versions[m.group(1)]['released'] = m.group(2)
|
||||||
|
|
||||||
|
for v in versions:
|
||||||
|
versions[v]['bugs'] = []
|
||||||
|
for bug in bugs:
|
||||||
|
if 'introduced' in bug and comp(bug['introduced']) > comp(v):
|
||||||
|
continue
|
||||||
|
if comp(bug['fixed']) <= comp(v):
|
||||||
|
continue
|
||||||
|
versions[v]['bugs'] += [bug['name']]
|
||||||
|
|
||||||
|
with open(path + '/../docs/bugs_by_version.json', 'r+') as bugs_by_version:
|
||||||
|
old_contents = bugs_by_version.read()
|
||||||
|
new_contents = json.dumps(versions, sort_keys=True, indent=4)
|
||||||
|
bugs_by_version.seek(0)
|
||||||
|
bugs_by_version.write(new_contents)
|
||||||
|
sys.exit(old_contents != new_contents)
|
@ -31,7 +31,10 @@ set -e
|
|||||||
REPO_ROOT="$(dirname "$0")"/..
|
REPO_ROOT="$(dirname "$0")"/..
|
||||||
SOLC="$REPO_ROOT/build/solc/solc"
|
SOLC="$REPO_ROOT/build/solc/solc"
|
||||||
|
|
||||||
# Compile all files in std and examples.
|
echo "Checking that the bug list is up to date..."
|
||||||
|
"$REPO_ROOT"/scripts/update_bugs_by_version.py
|
||||||
|
|
||||||
|
echo "Compiling all files in std and examples..."
|
||||||
|
|
||||||
for f in "$REPO_ROOT"/std/*.sol
|
for f in "$REPO_ROOT"/std/*.sol
|
||||||
do
|
do
|
||||||
|
Loading…
Reference in New Issue
Block a user