Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
252 commits
Select commit Hold shift + click to select a range
18539e5
Abstract Contracts: Add note about function type
Jan 23, 2018
694fc68
correct terminology
Jan 23, 2018
5497a85
Clarify name documentation for mixedCase
fulldecent Jan 29, 2018
bbdc885
Increment version number.
chriseth Feb 14, 2018
3804f29
fix a typo
abbbe Feb 14, 2018
bb3b327
Merge pull request #3505 from ethereum/incVersion
chriseth Feb 14, 2018
2de50cb
Merge pull request #3508 from abbbe/docs-fix-typo-20180214
axic Feb 14, 2018
333163e
Merge pull request #3509 from ethereum/release
chriseth Feb 14, 2018
ca0e323
Fix PPA script.
chriseth Feb 14, 2018
834dac7
Merge pull request #3510 from ethereum/fixppa
chriseth Feb 14, 2018
e08a206
Disallow uninitialized storage pointers as experimental 0.5.0 feature.
chriseth Feb 15, 2018
5746e2d
Merge pull request #3521 from ethereum/uninitializedStoragePointers
axic Feb 15, 2018
2b5a5a8
Make addmod and mulmod revert if the last argument is zero.
chriseth Feb 15, 2018
f4aa05f
Merge pull request #3523 from ethereum/throwMulmod
chriseth Feb 15, 2018
fa0ab6b
Fix compilation problem from issue 3530
Feb 16, 2018
3f7e82d
Merge pull request #3536 from leonardoalt/fix_compilation_3530
chriseth Feb 16, 2018
1d4547a
Minor improvement: check sources
aarlt Feb 13, 2018
bfcf4a8
Add gas forwarding details to address related functions in units-and-…
medvedev-evgeny Feb 18, 2018
d7532f7
Convert static SourceReferenceFormatter functions to member ones
federicobond Oct 26, 2017
305d5f7
Fix scannerFromSourceName use-after-free.
chriseth Feb 19, 2018
839acaf
Merge pull request #3502 from aarlt/minor_fix_no_input_sources_specified
chriseth Feb 19, 2018
ca6957d
Added property _documentation_ to Function, Event, and Modifier defin…
ealmansi Feb 16, 2018
47a0e37
Fix indentation.
ealmansi Feb 16, 2018
7530592
Changelog entry.
chriseth Feb 19, 2018
dcfbcdd
Merge pull request #3540 from ealmansi/fix/add-doc-prop-3537
chriseth Feb 19, 2018
2b23d02
Update introduction-to-smart-contracts.rst
chriseth Feb 19, 2018
a938e39
Merge pull request #3182 from janat08/patch-2
chriseth Feb 19, 2018
abc23ac
Merge pull request #3135 from federicobond/formatter-instance
chriseth Feb 19, 2018
39f09a9
Merge pull request #3448 from fulldecent/patch-8
chriseth Feb 19, 2018
09887de
Fix link.
chriseth Feb 19, 2018
a680cbd
Test ``_offset`` for constants in inline assembly.
chriseth Feb 19, 2018
930485c
Properly warn about the use of constants in inline assembly in connec…
chriseth Feb 19, 2018
8369236
Changelog entry.
chriseth Feb 19, 2018
59f5a31
Merge pull request #3357 from federicobond/improve-asm-grammar
chriseth Feb 19, 2018
bce545c
Add adjustable/no adjustable gas details to address related functions…
medvedev-evgeny Feb 19, 2018
360009c
Typo
fulldecent Feb 19, 2018
e54ea93
Merge pull request #3551 from fulldecent/patch-7
chriseth Feb 19, 2018
2a58b44
Merge pull request #3543 from medvedev1088/feature/add-gas-details-to…
chriseth Feb 19, 2018
a6b52fd
Merge pull request #3550 from ethereum/offsetconstantsasm
axic Feb 20, 2018
29d40ad
Clarify padding direction.
chriseth Feb 20, 2018
decfa0e
Test aliasing in shadowing.
chriseth Feb 16, 2018
4272d16
Fix shadowing for imports with aliases.
chriseth Feb 16, 2018
58bbb04
Changelog entry.
chriseth Feb 16, 2018
f5f00b4
Merge pull request #3535 from ethereum/fixShadowing
axic Feb 20, 2018
3ba8af4
Provide input for two optimizer tests.
chriseth Feb 20, 2018
dcc4083
Merge pull request #3553 from ethereum/simpleOptimizerTestFix
chriseth Feb 20, 2018
89a8f40
Provide proper input for test call.
chriseth Feb 20, 2018
0f29ac4
Add new JSON API for better abstraction and for supporting strict JSO…
aarlt Feb 7, 2018
70790d4
Merge pull request #3532 from aarlt/libdevcore_new_json_api
axic Feb 20, 2018
c43953f
CMake: abort if linking results in undefined symbols with emscripten
axic Feb 20, 2018
0936a44
Create .gitattributes
ldct Feb 20, 2018
e2bf5de
Expect end of string at end of top-level block for assembly parser.
chriseth Feb 20, 2018
3076a43
Merge pull request #3554 from ethereum/reuseScannerOrNot
chriseth Feb 20, 2018
2f862b4
Merge pull request #3561 from ldct/patch-2
chriseth Feb 20, 2018
16c7eab
Merge pull request #3559 from ethereum/emscripten-fail-on-undefined
chriseth Feb 21, 2018
a048d69
Build documentation on CircleCI.
chriseth Feb 19, 2018
7cec049
Merge pull request #3548 from ethereum/documentationOnCircle
chriseth Feb 21, 2018
98324d6
Merge pull request #3555 from ethereum/libraryTestCallInput
chriseth Feb 21, 2018
20d8254
Merge pull request #3427 from duaraghav8/patch-3
chriseth Feb 21, 2018
d01786f
Update solidity-by-example.rst
mirgj Feb 21, 2018
bb2a48e
Merge pull request #3566 from mirgj/patch-1
chriseth Feb 21, 2018
ae02bb5
Raise error on oversized number literals in assembly
axic Jan 4, 2018
42856e0
Add assertion for boolean literals in Julia-mode
axic Feb 22, 2018
68a8e67
Mark functions const
axic Sep 20, 2017
ca35963
Merge pull request #3570 from ethereum/assembly-oversized-literals
chriseth Feb 22, 2018
090d703
Merge pull request #3571 from ethereum/cppcheck
chriseth Feb 22, 2018
c182284
Do not warn about analysis-only experimental features.
chriseth Feb 21, 2018
8fc9535
Merge pull request #3565 from ethereum/doNotWarnAboutAnalysisOnlyExpF…
chriseth Feb 22, 2018
388718b
Introduce emit statement.
chriseth Feb 16, 2018
04c922e
Changelog entry.
chriseth Feb 16, 2018
f58024b
Documentation about emitting events.
chriseth Feb 16, 2018
8c1a8ec
Warn about using events without emit.
chriseth Feb 16, 2018
ad010f5
Tests for warnings.
chriseth Feb 16, 2018
b5a3b6a
Parser test.
chriseth Feb 22, 2018
2ada968
Use the term "trailing zero-bytes".
chriseth Feb 22, 2018
7d87aed
Merge pull request #3552 from ethereum/chriseth-patch-1
chriseth Feb 22, 2018
b1acb7d
Try external tests twice.
chriseth Feb 22, 2018
187e50b
Recommend consistent style for wrapping long lines.
OTTTO Feb 14, 2018
71a34ab
Merge pull request #3513 from OTTTO/develop
chriseth Feb 22, 2018
2ac49b3
Reccomend to explicitly label the visibility of functions.
OTTTO Feb 22, 2018
260eb7a
Merge pull request #3573 from ethereum/retryTests
axic Feb 22, 2018
97d1c70
Merge pull request #3575 from OTTTO/develop
chriseth Feb 22, 2018
2b62c20
Merge pull request #3538 from ethereum/emitEvents
chriseth Feb 22, 2018
fc3473b
Why you made this change:
hongbinzuo Feb 23, 2018
4d1b969
Use readStandardInput in the fuzzer
axic Oct 24, 2017
f8bbf84
Merge pull request #3579 from ethereum/fuzzer-stdin
chriseth Feb 23, 2018
0230723
add in progress
hongbinzuo Feb 23, 2018
cae6cc2
Merge pull request #3578 from etherchina/develop
chriseth Feb 23, 2018
b80baa8
Run EndToEnd tests on circle, too.
chriseth Feb 13, 2018
272262e
Merge pull request #3499 from ethereum/runEndToEndOnCircle
chriseth Feb 23, 2018
ef7fbf8
Fix example; closes #3582
aaroncolaco Feb 23, 2018
6b3a5e5
Merge pull request #3585 from aaroncolaco/develop
axic Feb 26, 2018
917dd28
Simplify FunctionType constructors.
chriseth Feb 20, 2018
8ae6a76
Test data location of getter return type.
chriseth Feb 26, 2018
4da20bd
Fix: Function types for getters should not have storage pointers.
chriseth Feb 21, 2018
cd2d893
Merge pull request #3588 from ethereum/fixGetterType
chriseth Feb 26, 2018
7517059
Add helpers escapeIdentifier to Types
axic Feb 23, 2018
2e7067f
Rename Types::identifier to Types::richIdentifier
axic Feb 23, 2018
b471983
Use new escaping helpers for type identifiers
axic Feb 24, 2018
0736d91
Add test for escapeIdentifier
axic Feb 26, 2018
b9dccf9
Split circle into build and test for x86.
chriseth Feb 26, 2018
64eaff6
Random documentation updates (assembly, faq)
axic Nov 24, 2017
b62d439
Merge pull request #3589 from ethereum/identifiers
axic Feb 26, 2018
eb3b92f
Merge pull request #3602 from ethereum/docs-updates
axic Feb 26, 2018
098033c
Fix name shadowing in ballot example contract.
chriseth Feb 19, 2018
92fe9e6
Note deprecation of constant keyword on functions
wbt Jan 23, 2018
3aaa5c4
Merge pull request #3426 from wbt/patch-1
chriseth Feb 26, 2018
1f5eb4b
Merge pull request #3335 from nisdas/ballot-contract
chriseth Feb 26, 2018
241134a
Mention that solcjs is not compatible with solc in the using-the-comp…
axic Feb 26, 2018
3594f02
Fix link to solcjs in the installation section
axic Feb 26, 2018
5c0d820
Turn throw into a syntax error for 0.5.0
axic Feb 27, 2018
e34d367
Multiline output parameters and return statements
OTTTO Feb 23, 2018
415ac2a
Merge pull request #3605 from ethereum/deprecate-throw
chriseth Feb 27, 2018
bffed2c
Merge pull request #3603 from ethereum/docs-solcjs
chriseth Feb 27, 2018
e424bd1
Fix some keyword highlighting in docs
axic Feb 26, 2018
8cebfb1
Introduce VM version ('hard fork') column for assembly opcodes
axic Feb 27, 2018
aeb7517
Fix builtin function formatting in julia
axic Feb 27, 2018
9c31a0d
Merge pull request #3604 from ethereum/docs-update
chriseth Feb 27, 2018
59e6ea6
Add bitwise shift operators to libevmasm (EIP145)
axic Feb 6, 2017
6a83bea
Run tests in parallel on circle.
chriseth Feb 26, 2018
53289e1
Make all lookups recursive by default.
chriseth Feb 9, 2018
5f20129
Scopes do not have to be declarations.
chriseth Feb 9, 2018
e6d48bb
Blocks and for loops can be scopes.
chriseth Feb 9, 2018
69f5f2e
Adjust tests.
chriseth Feb 9, 2018
0005990
Tests for new scoping behaviour.
chriseth Feb 9, 2018
e227bdb
Changelog entry.
chriseth Feb 15, 2018
6b9dda0
Enable C99-scoping with the 0.5.0-experimental pragma.
chriseth Feb 14, 2018
88a5c66
Only active variables at the point of their declaration.
chriseth Feb 15, 2018
6391a36
Documentation about new scoping rules.
chriseth Feb 15, 2018
d64aa0e
Some more scoping tests.
chriseth Feb 26, 2018
9e0446a
Document bitwise shift operators in assembly
axic Feb 6, 2017
468d0f6
Warn on using shift instructions
axic Jun 15, 2017
afa4a48
Remove ROL/ROR as they are not part of EIP145 anymore
axic Jul 9, 2017
317e017
Shift operands were swapped in accepted EIP145
axic Jan 5, 2018
73c5d99
Add basic test for shift opcodes
axic Feb 27, 2018
6512bfb
Merge pull request #3601 from ethereum/circleParallel
axic Feb 27, 2018
9a8b0d5
Fix install_deps.sh for Debian without lsb_release
chfast Sep 18, 2017
2abc5be
Merge pull request #2541 from ethereum/asm-bitshift
axic Feb 27, 2018
6d8dee5
Merge pull request #3612 from ethereum/debian-lsb
chriseth Feb 27, 2018
a566825
Issue error if no visibility is specified (on 0.5.0)
axic Feb 27, 2018
908b46e
Merge pull request #3476 from ethereum/scoping
chriseth Feb 27, 2018
029e199
Split compileContract off compileAndRunWithoutCheck in SolidityExecut…
axic Feb 27, 2018
0346f72
Use compileContract in contract tests
axic Feb 27, 2018
5fd9ea4
Stop allow_guessing for command line option parser
Feb 27, 2018
4f34d09
Update miscellaneous.rst
jbaylina Feb 28, 2018
ac5485a
Merge pull request #3616 from jbaylina/patch-1
chriseth Feb 28, 2018
83fec02
Add more comprehensive tests and checks for libraries in JSONIO
axic Feb 28, 2018
7897301
Properly validate invalid hex characters in JSONIO libraries
axic Feb 28, 2018
22d26e0
Merge pull request #3613 from ethereum/require-visibility
chriseth Feb 28, 2018
fb8c4bd
Merge pull request #3615 from ethereum/test-framework
chriseth Feb 28, 2018
7938339
Merge pull request #3617 from ethereum/jsonio-libraries
chriseth Feb 28, 2018
9e3da89
Merge pull request #3607 from izgzhen/complain-unknown-params
chriseth Feb 28, 2018
f41591b
[SMTChecker] A little refactoring on SSA vars
Jan 17, 2018
3b2851e
Integer min and max values placed under SymbolicIntVar instead of SMT…
Feb 17, 2018
21c6b80
Supported types listed in SSAVariable
Feb 17, 2018
cff0836
Fix PR comments
Feb 28, 2018
8b1b4b7
Fix PR comments
Feb 28, 2018
b6dfd9e
Ensure that library addresses supplied are of correct length and hex …
axic Feb 28, 2018
cf6720e
Merge pull request #3587 from OTTTO/develop
chriseth Mar 1, 2018
c123fa2
Merge pull request #3406 from leonardoalt/smt_checker
chriseth Mar 1, 2018
2c82f74
Merge pull request #3624 from ethereum/jsonio-libraries-hex
axic Mar 1, 2018
7540763
Tests for multi-dimensional arrays.
chriseth Feb 19, 2018
08b6a72
Fix multi-dimensional arrays in the ABI.
chriseth Feb 19, 2018
98e8a93
Changelog entry.
chriseth Feb 19, 2018
a0d0060
Update Tips and Tricks on structs initialization. (#3626)
lastperson Mar 1, 2018
bd4c2b9
Deprecate using unit denominations in combination with hex numbers. C…
ekpyron Mar 1, 2018
c9840c9
Documentation updates for internal constructors and function signatur…
elenadimitrova Mar 1, 2018
5ab4a1a
Add ability to set the target EVM version.
chriseth Feb 21, 2018
8578571
Store EVM version in settings.
chriseth Feb 21, 2018
f75a411
Provide target EVM version in CompilerContext.
chriseth Feb 21, 2018
60f7be5
Some tests.
chriseth Feb 22, 2018
83515ea
Changelog entry
chriseth Feb 22, 2018
f2f61f1
Test both EVM versions.
chriseth Feb 22, 2018
a53d6b4
Use EVM version in type checker.
chriseth Feb 22, 2018
dc317a4
Provide EVM version to assembly analysis.
chriseth Feb 23, 2018
739533e
Activate byzantium for testing.
chriseth Feb 23, 2018
05cc5f2
Correctly set evm version in tests
chriseth Feb 23, 2018
1e26011
Returndatasize and staticcall test fixes.
chriseth Feb 23, 2018
7b0272c
CREATE2 test fix.
chriseth Feb 23, 2018
982476f
Add TangerineWhistle.
chriseth Feb 26, 2018
7171ac0
Simplify error handling in tests.sh
axic Feb 27, 2018
4ce0e77
Add constantinople.
chriseth Feb 27, 2018
1246917
Explain json-io setting.
chriseth Feb 27, 2018
7f8e573
Abort on the first failed end-to-end run.
chriseth Feb 27, 2018
5a54cd5
Only warn for shift instructions if not using constantinople
axic Feb 28, 2018
2c086cb
clarify 2300 gas stipend in fallback function section
bernardpeh Mar 2, 2018
454b470
Suggest expressions of the form '0x1234 * 1 day' instead of hex numbe…
ekpyron Mar 2, 2018
0f64648
Parser: Add test case for reserved keywords.
ekpyron Mar 2, 2018
f78d6a9
Merge pull request #3628 from ethereum/literalsHexUnit
chriseth Mar 2, 2018
5982869
Merge pull request #3633 from ethereum/reserved-keywords-test
chriseth Mar 2, 2018
66ee9aa
Use 0.4.21 pragma for documentation that uses "emit".
chriseth Mar 2, 2018
cde4e31
change the language so that it doesn't sound like send and transfer i…
bernardpeh Mar 2, 2018
7e2f3d3
Merge pull request #3632 from bernardpeh/mydev
chriseth Mar 2, 2018
c2730a4
Correct warning message in Pure Functions doc
furkanayhan Mar 4, 2018
5d74b86
This z3 option is necessary for good solving performance
Mar 4, 2018
e3c2ab3
Merge pull request #3641 from furkanayhan/patch-1
chriseth Mar 5, 2018
c633c0e
Move msg.gas to global function gasleft(). Closes #2971.
ekpyron Mar 2, 2018
6ec4517
Use EVM version in gas meter and optimizer.
chriseth Mar 1, 2018
6dc1373
Merge pull request #3569 from ethereum/evmVersion
chriseth Mar 5, 2018
cd6ffbd
Merge pull request #3642 from leonardoalt/fix_z3-46
chriseth Mar 5, 2018
477571e
Do not warn about 0.5.0 experimental pragma.
chriseth Feb 26, 2018
298bdee
Remove unstable test case.
ekpyron Mar 5, 2018
29fb5fe
Add test cases for shadowing gasleft with local functions/variables.
ekpyron Mar 5, 2018
fd60c1c
Warn if using address overloads on contracts
axic Sep 20, 2017
1ceb0b0
Assert that address members are not present on contract types in 0.5.0.
chriseth Mar 5, 2018
b8589fb
Use msg.value and gasleft() as an example in the docs.
ekpyron Mar 5, 2018
3340053
Style improvements.
ekpyron Mar 5, 2018
2213f99
Improved gasleft tests.
ekpyron Mar 5, 2018
f190b27
Merge pull request #3600 from ethereum/version050IsAnalysisOnly
chriseth Mar 5, 2018
83fcf00
Do not retain any gas in external calls (except if EVM version is set…
chriseth Feb 26, 2018
3793aa4
Merge pull request #3643 from ethereum/gasleft
chriseth Mar 5, 2018
be797cb
Merge pull request #3599 from ethereum/sendAllGasOnByzantium
chriseth Mar 5, 2018
174c46d
Improved messaging when an error spans multiple lines and updated cha…
Mar 2, 2018
9d67e9b
Merge pull request #3640 from AnthonyBroadCrawford/spanning-multiline…
chriseth Mar 5, 2018
91b13b7
Use StaticAnalyzer to deprecate msg.gas instead of conditionally remo…
ekpyron Mar 5, 2018
d8bfa02
Try new caching keys.
chriseth Mar 5, 2018
8259ce1
Restrict ccache cache size.
chriseth Mar 5, 2018
556fe8a
Build with four parallel jobs.
chriseth Mar 5, 2018
41ea502
Merge pull request #3648 from ethereum/circlecache
chriseth Mar 5, 2018
154fd1d
Document the meaning of sourceIndex "-1" in source mappings.
ekpyron Mar 5, 2018
5d486b7
Revert warning update about `view` modifier
lastperson Mar 6, 2018
a9e02ac
Merge pull request #3655 from lastperson/patch-3
axic Mar 6, 2018
f6c0dae
Merge pull request #3652 from ethereum/gasleft_v2
chriseth Mar 6, 2018
5f5af65
Merge pull request #3653 from ethereum/docNegativeSourceIndex
chriseth Mar 6, 2018
d7fe0bb
Increase ccache size.
chriseth Mar 6, 2018
70a5ddd
Merge pull request #3659 from ethereum/increaseCacheSize
chriseth Mar 6, 2018
e3bd302
Use new eth binary for trusty.
chriseth Mar 6, 2018
0df4c64
Merge pull request #3658 from ethereum/newcppEthimage
axic Mar 6, 2018
b467116
Use STATICCALL for pure function calls if EVM version supports it and…
chriseth Sep 26, 2017
a3593df
Test for using staticcall for view and pure functions.
chriseth Jan 15, 2018
3057aee
Document STATICCALL usage in experimental 0.5.0.
chriseth Jan 16, 2018
83dacbf
Merge pull request #3549 from ethereum/fixmultidim
axic Mar 6, 2018
14b12ae
Merge pull request #2966 from ethereum/useStaticCall
axic Mar 6, 2018
fb4d01e
Add gasleft to FunctionType::richIdentifier().
ekpyron Mar 6, 2018
fd1662d
Warn about using loose inline assembly features as experimental 0.5.0…
chriseth Feb 15, 2018
84d711f
Tests for warnings/errors for loose assembly.
chriseth Feb 15, 2018
af7c64c
Changelog entry.
chriseth Feb 15, 2018
95ca829
Merge pull request #3663 from ethereum/gasleftEmscripten
chriseth Mar 6, 2018
b4d38c5
Use double quotes for suggestion about hex literals and denominations.
ekpyron Mar 6, 2018
250a6ba
Merge pull request #3527 from ethereum/warnLooseAsm
axic Mar 6, 2018
baa1526
Merge pull request #3664 from ethereum/literalsHexUnitSmallFix
chriseth Mar 6, 2018
ba88195
Merge pull request #3611 from ethereum/warn-using-address-overload
axic Mar 6, 2018
7566787
Some words on Remix
aj07 Mar 6, 2018
ea48d8a
Fix test.
chriseth Mar 6, 2018
478ce4f
Merge pull request #3668 from ethereum/fixExperimentalTest
chriseth Mar 6, 2018
cd2e1e0
Clarify that the experimental flag is not set for "experimental 0.5.0"
chriseth Mar 6, 2018
bd7bc7c
Merge pull request #3661 from ethereum/chriseth-patch-1
axic Mar 7, 2018
c1bf6fb
Merge pull request #3634 from ethereum/useCorrectVersionForEmit
chriseth Mar 7, 2018
cbd8644
Update changelog for release.
chriseth Mar 7, 2018
15920dc
Merge pull request #3677 from ethereum/prepareForRelease
chriseth Mar 7, 2018
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
*.sol linguist-language=Solidity
14 changes: 0 additions & 14 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,6 @@ env:
global:
- ENCRYPTION_LABEL="6d4541b72666"
- SOLC_BUILD_TYPE=RelWithDebInfo
- SOLC_DOCS=Off
- SOLC_EMSCRIPTEN=Off
- SOLC_INSTALL_DEPS_TRAVIS=On
- SOLC_RELEASE=On
Expand All @@ -65,18 +64,6 @@ matrix:
- ZIP_SUFFIX=ubuntu-trusty-clang
- SOLC_STOREBYTECODE=On

# Documentation target, which generates documentation using Phoenix / ReadTheDocs.
- os: linux
dist: trusty
sudo: required
compiler: gcc
before_install:
- sudo apt-get -y install python-sphinx
env:
- SOLC_DOCS=On
- SOLC_RELEASE=Off
- SOLC_TESTS=Off

# Docker target, which generates a statically linked alpine image
- os: linux
dist: trusty
Expand Down Expand Up @@ -184,7 +171,6 @@ before_script:

script:
- test $SOLC_EMSCRIPTEN != On || (scripts/test_emscripten.sh)
- test $SOLC_DOCS != On || (scripts/docs.sh)
- test $SOLC_TESTS != On || (cd $TRAVIS_BUILD_DIR && scripts/tests.sh)
- test $SOLC_STOREBYTECODE != On || (cd $TRAVIS_BUILD_DIR && scripts/bytecodecompare/storebytecode.sh)

Expand Down
2 changes: 1 addition & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ include(EthPolicy)
eth_policy()

# project name and version should be set after cmake_policy CMP0048
set(PROJECT_VERSION "0.4.20")
set(PROJECT_VERSION "0.4.21")
project(solidity VERSION ${PROJECT_VERSION})

option(SOLC_LINK_STATIC "Link solc executable statically on supported platforms" OFF)
Expand Down
31 changes: 31 additions & 0 deletions Changelog.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,34 @@
### 0.4.21 (2018-03-07)

Features:
* Code Generator: Assert that ``k != 0`` for ``mulmod(a, b, k)`` and ``addmod(a, b, k)`` as experimental 0.5.0 feature.
* Code Generator: Do not retain any gas in calls (except if EVM version is set to homestead).
* Code Generator: Use ``STATICCALL`` opcode for calling ``view`` and ``pure`` functions as experimenal 0.5.0 feature.
* General: C99/C++-style scoping rules (instead of JavaScript function scoping) take effect as experimental v0.5.0 feature.
* General: Improved messaging when error spans multiple lines of a sourcefile
* General: Support and recommend using ``emit EventName();`` to call events explicitly.
* Inline Assembly: Enforce strict mode as experimental 0.5.0 feature.
* Interface: Provide ability to select target EVM version (homestead or byzantium, with byzantium being the default).
* Standard JSON: Reject badly formatted invalid JSON inputs.
* Type Checker: Disallow uninitialized storage pointers as experimental 0.5.0 feature.
* Syntax Analyser: Do not warn about experimental features if they do not concern code generation.
* Syntax Analyser: Do not warn about ``pragma experimental "v0.5.0"`` and do not set the experimental flag in the bytecode for this.
* Syntax Checker: Mark ``throw`` as an error as experimental 0.5.0 feature.
* Syntax Checker: Issue error if no visibility is specified on contract functions as experimental 0.5.0 feature.
* Syntax Checker: Issue warning when using overloads of ``address`` on contract instances.
* Type Checker: disallow combining hex numbers and unit denominations as experimental 0.5.0 feature.

Bugfixes:
* Assembly: Raise error on oversized number literals in assembly.
* JSON-AST: Add "documentation" property to function, event and modifier definition.
* Resolver: Properly determine shadowing for imports with aliases.
* Standalone Assembly: Do not ignore input after closing brace of top level block.
* Standard JSON: Catch errors properly when invalid "sources" are passed.
* Standard JSON: Ensure that library addresses supplied are of correct length and hex prefixed.
* Type Checker: Properly detect which array and struct types are unsupported by the old ABI encoder.
* Type Checker: Properly warn when using ``_offset`` and ``_slot`` for constants in inline assembly.
* Commandline interface: throw error if option is unknown

### 0.4.20 (2018-02-14)

Features:
Expand Down
91 changes: 67 additions & 24 deletions circle.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,6 @@ jobs:
- image: trzeci/emscripten:sdk-tag-1.37.21-64bit
steps:
- checkout
- run:
name: Init submodules
command: |
git submodule update --init
- restore_cache:
name: Restore Boost build
key: &boost-cache-key emscripten-boost-{{ checksum "scripts/travis-emscripten/install_deps.sh" }}{{ checksum "scripts/travis-emscripten/build_emscripten.sh" }}
Expand Down Expand Up @@ -83,7 +79,7 @@ jobs:
name: External tests
command: |
. /usr/local/nvm/nvm.sh
test/externalTests.sh /tmp/workspace/soljson.js
test/externalTests.sh /tmp/workspace/soljson.js || test/externalTests.sh /tmp/workspace/soljson.js
build_x86:
docker:
- image: buildpack-deps:artful
Expand All @@ -94,41 +90,84 @@ jobs:
command: |
apt-get -qq update
apt-get -qy install ccache cmake libboost-all-dev libz3-dev
- run:
name: Init submodules
command: |
git submodule update --init
- run:
name: Store commit hash and prerelease
command: |
date -u +"nightly.%Y.%-m.%-d" > prerelease.txt
if [ "$CIRCLE_BRANCH" = release -o -n "$CIRCLE_TAG" ]; then echo -n > prerelease.txt; else date -u +"nightly.%Y.%-m.%-d" > prerelease.txt; fi
echo -n "$CIRCLE_SHA1" > commit_hash.txt
- restore_cache:
key: ccache-{{ arch }}-{{ .Branch }}
key: ccache-{{ arch }}
key: ccache
key: ccache-{{ arch }}-{{ .Branch }}-{{ .Environment.CIRCLE_SHA1 }}
key: ccache-{{ arch }}-{{ .Branch }}-
key: ccache-{{ arch }}-develop-
key: ccache-{{ arch }}-
- run:
name: Configure ccache
command: ccache -M 200M && ccache -c && ccache -s && ccache -z
- run:
name: Build
command: ./scripts/build.sh RelWithDebInfo
command: |
mkdir -p build
cd build
cmake .. -DCMAKE_BUILD_TYPE=RelWithDebInfo
make -j4
- run:
name: CCache statistics
command: ccache -s
- save_cache:
key: ccache-{{ arch }}-{{ .Branch }}
key: ccache-{{ arch }}-{{ .Branch }}-{{ .Environment.CIRCLE_SHA1 }}
when: always
paths:
- ~/.ccache
- store_artifacts:
path: build/solc/solc
destination: solc
- persist_to_workspace:
root: build
paths:
- solc/solc
- test/soltest
- test/solfuzzer

test_x86:
docker:
- image: buildpack-deps:artful
steps:
- checkout
- attach_workspace:
at: build
- run:
name: Commandline tests
command: test/cmdlineTests.sh
name: Install dependencies
command: |
apt-get -qq update
apt-get -qy install libz3-dev libleveldb1v5
- run: mkdir -p test_results
- run:
name: Test without optimizer (exclude IPC tests)
command: build/test/soltest --logger=JUNIT,test_suite,test_results/no_opt.xml -- --no-ipc
- run:
name: Test with optimizer (exclude IPC tests)
command: build/test/soltest --logger=JUNIT,test_suite,test_results/opt.xml -- --optimize --no-ipc
name: Tests
command: scripts/tests.sh --junit_report test_results
- store_test_results:
path: test_results/

docs:
docker:
- image: buildpack-deps:artful
steps:
- checkout
- run:
name: Install build dependencies
command: |
apt-get -qq update
apt-get -qy install python-sphinx
- run:
name: Store commit hash and prerelease
command: |
if [ "$CIRCLE_BRANCH" = release -o -n "$CIRCLE_TAG" ]; then echo -n > prerelease.txt; else date -u +"nightly.%Y.%-m.%-d" > prerelease.txt; fi
echo -n "$CIRCLE_SHA1" > commit_hash.txt
- run:
name: Build documentation
command: ./scripts/docs.sh
- store_artifacts:
path: build/solc/solc
destination: solc
path: docs/_build/html/
destination: docs-html

workflows:
version: 2
Expand All @@ -142,3 +181,7 @@ workflows:
requires:
- build_emscripten
- build_x86
- test_x86:
requires:
- build_x86
- docs
3 changes: 3 additions & 0 deletions cmake/EthCompilerSettings.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -140,6 +140,9 @@ if (("${CMAKE_CXX_COMPILER_ID}" MATCHES "GNU") OR ("${CMAKE_CXX_COMPILER_ID}" MA
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -s NO_DYNAMIC_EXECUTION=1")
# Disable greedy exception catcher
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -s NODEJS_CATCH_EXIT=0")
# Abort if linking results in any undefined symbols
# Note: this is on by default in the CMake Emscripten module which we aren't using
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -s ERROR_ON_UNDEFINED_SYMBOLS=1")
add_definitions(-DETH_EMSCRIPTEN=1)
endif()
endif()
Expand Down
12 changes: 9 additions & 3 deletions docs/abi-spec.rst
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,10 @@ The first four bytes of the call data for a function call specifies the function
first (left, high-order in big-endian) four bytes of the Keccak (SHA-3) hash of the signature of the function. The signature is defined as the canonical expression of the basic prototype, i.e.
the function name with the parenthesised list of parameter types. Parameter types are split by a single comma - no spaces are used.

.. note::
The return type of a function is not part of this signature. In :ref:`Solidity's function overloading <overload-function>` return types are not considered. The reason is to keep function call resolution context-independent.
The JSON description of the ABI however contains both inputs and outputs. See (the :ref:`JSON ABI <abi_json>`)

Argument Encoding
=================

Expand Down Expand Up @@ -155,15 +159,15 @@ on the type of ``X`` being

``enc(X) = enc(enc_utf8(X))``, i.e. ``X`` is utf-8 encoded and this value is interpreted as of ``bytes`` type and encoded further. Note that the length used in this subsequent encoding is the number of bytes of the utf-8 encoded string, not its number of characters.

- ``uint<M>``: ``enc(X)`` is the big-endian encoding of ``X``, padded on the higher-order (left) side with zero-bytes such that the length is a multiple of 32 bytes.
- ``uint<M>``: ``enc(X)`` is the big-endian encoding of ``X``, padded on the higher-order (left) side with zero-bytes such that the length is 32 bytes.
- ``address``: as in the ``uint160`` case
- ``int<M>``: ``enc(X)`` is the big-endian two's complement encoding of ``X``, padded on the higher-oder (left) side with ``0xff`` for negative ``X`` and with zero bytes for positive ``X`` such that the length is a multiple of 32 bytes.
- ``int<M>``: ``enc(X)`` is the big-endian two's complement encoding of ``X``, padded on the higher-order (left) side with ``0xff`` for negative ``X`` and with zero bytes for positive ``X`` such that the length is 32 bytes.
- ``bool``: as in the ``uint8`` case, where ``1`` is used for ``true`` and ``0`` for ``false``
- ``fixed<M>x<N>``: ``enc(X)`` is ``enc(X * 10**N)`` where ``X * 10**N`` is interpreted as a ``int256``.
- ``fixed``: as in the ``fixed128x19`` case
- ``ufixed<M>x<N>``: ``enc(X)`` is ``enc(X * 10**N)`` where ``X * 10**N`` is interpreted as a ``uint256``.
- ``ufixed``: as in the ``ufixed128x19`` case
- ``bytes<M>``: ``enc(X)`` is the sequence of bytes in ``X`` padded with zero-bytes to a length of 32.
- ``bytes<M>``: ``enc(X)`` is the sequence of bytes in ``X`` padded with trailing zero-bytes to a length of 32 bytes.

Note that for any ``X``, ``len(enc(X))`` is a multiple of 32.

Expand Down Expand Up @@ -290,6 +294,8 @@ In effect, a log entry using this ABI is described as:

For all fixed-length Solidity types, the ``EVENT_INDEXED_ARGS`` array contains the 32-byte encoded value directly. However, for *types of dynamic length*, which include ``string``, ``bytes``, and arrays, ``EVENT_INDEXED_ARGS`` will contain the *Keccak hash* of the encoded value, rather than the encoded value directly. This allows applications to efficiently query for values of dynamic-length types (by setting the hash of the encoded value as the topic), but leaves applications unable to decode indexed values they have not queried for. For dynamic-length types, application developers face a trade-off between fast search for predetermined values (if the argument is indexed) and legibility of arbitrary values (which requires that the arguments not be indexed). Developers may overcome this tradeoff and achieve both efficient search and arbitrary legibility by defining events with two arguments — one indexed, one not — intended to hold the same value.

.. _abi_json:

JSON
====

Expand Down
Loading