Releases: argotorg/solidity
Version 0.4.7
Features:
- Bitshift operators.
 - Type checker: Warn when 
msg.valueis used in non-payable function. - Code generator: Inject the Swarm hash of a metadata file into the bytecode.
 - Code generator: Replace expensive memcpy precompile by simple assembly loop.
 - Optimizer: Some dead code elimination.
 
Bugfixes:
- Code generator: throw if calling the identity precompile failed during memory (array) copying.
 - Type checker: string literals that are not valid UTF-8 cannot be converted to string type
 - Code generator: any non-zero value given as a boolean argument is now converted into 1.
 - AST Json Converter: replace 
VariableDefinitionStatementnodes withVariableDeclarationStatement - AST Json Converter: fix the camel case in 
ElementaryTypeNameExpression - AST Json Converter: replace 
publicfield withvisibilityin the function definition nodes 
Swarm hash of javascript binary: bzzr://de00cf8d235867a00d831e0055b376420789977d276c02e6ff0d1d5b00f5d84d
Version 0.4.6
Bugfixes:
- Optimizer: Knowledge about state was not correctly cleared for JUMPDESTs
 
Swarm hash of js compiler: bzzr:/b873fa122233c91b1531527c390f6ca49df4d2a2c5f75706f4b612a0c813cb6a
Version 0.4.5
This Solidity release adds 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.
Features:
- Function types
 - Do-while loops: support for a 
do <block> while (<expr>);control structure - Inline assembly: support 
invalidJumpLabelas a jump label. - Type checker: now more eagerly searches for a common type of an inline array with mixed types
 - Code generator: generates a runtime error when an out-of-range value is converted into an enum type.
 
Bugfixes:
- Inline assembly: calculate stack height warning correctly even when local variables are used.
 - Code generator: check for value transfer in non-payable constructors.
 - Parser: disallow empty enum definitions.
 - Type checker: disallow conversion between different enum types.
 - Interface JSON: do not include trailing new line.
 
Swarm hash of js compiler: bzzr://de94c41f727124a5b02bd1db087e6bcba19a682c5d89bf3cdaa650e9fdd08403
Version 0.4.4
This is a bugfix release that fixes a storage corruption that appears when multiple variables are stored in the same slot (details).
Bugfixes:
- Type checker: forbid signed exponential that led to an incorrect use of EXP opcode.
 - Code generator: properly clean higher order bytes before storing in storage.
 
Version 0.4.3
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.
Features:
- Inline assembly: support both 
suicideandselfdestructopcodes
(note:suicideis deprecated). - Inline assembly: issue warning if stack is not balanced after block.
 - Include 
keccak256()as an alias tosha3(). - Support shifting constant numbers.
 
Bugfixes:
- Commandline interface: Disallow unknown options in 
solc. - Name resolver: Allow inheritance of 
enumdefinitions. - Type checker: Proper type checking for bound functions.
 - Type checker: fixed crash related to invalid fixed point constants
 - Type checker: fixed crash related to invalid literal numbers.
 - Type checker: 
super.xdoes not look upxin the current contract. - Code generator: expect zero stack increase after 
superas an expression. - Code generator: fix an internal compiler error for 
L.Fooforenum Foodefined in libraryL. - Code generator: allow inheritance of 
enumdefinitions. - Inline assembly: support the 
addressopcode. - Inline assembly: fix parsing of assignment after a label.
 - Inline assembly: external variables of unsupported type (such as 
this,super, etc.)
are properly detected as unusable. - Inline assembly: support variables within modifiers.
 - Optimizer: fix related to stale knowledge about SHA3 operations
 
Version 0.4.2
Bugfixes:
- Code Generator: Fix library functions being called from payable functions.
 - Type Checker: Fixed a crash about invalid array types.
 - Code Generator: Fixed a call gas bug that became visible after
version 0.4.0 for calls where the output is larger than the input. 
Version 0.4.1
This is a bugfix release that fixes an error when compiling libraries with the latest version 0.4.0.
Version 0.4.0
Note: Version 0.4.0 is unable to compile libraries. Please upgrade to 0.4.1.
This 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.
Minimal changes to be made for upgrade:
- Add 
payableto all functions that want to receive Ether (including the constructor and the fallback function). - Change 
_to_;in modifiers. - Add version pragma to each file: 
pragma solidity ^0.4.0; 
Breaking Changes:
- Source files have to specify the compiler version they are compatible with using e.g. 
pragma solidity ^0.4.0;or
pragma solidity >=0.4.0 <0.4.8; - Functions that want to receive Ether have to specify the
newpayablemodifier (otherwise they throw). - Contracts that want to receive Ether with a plain "send"
have to implement a fallback function with thepayable
modifier. Contracts now throw if no payable fallback
function is defined and no function matches the signature. - Failing contract creation through "new" throws.
 - Division / modulus by zero throws.
 - Function call throws if target contract does not have code
 - Modifiers are required to contain 
_(useif (false) _as a workaround if needed). - Modifiers: return does not skip part in modifier after 
_. - Placeholder statement 
_in modifier now requires explicit;. ecrecovernow returns zero if the input is malformed (it previously returned garbage).- The 
constantkeyword cannot be used for constructors or the fallback function. - Removed 
--interface(Solidity interface) output option - JSON AST: General cleanup, renamed many nodes to match their C++ names.
 - JSON output: 
srcmap-runtimerenamed tosrcmapRuntime. - Moved (and reworked) standard library contracts from inside the compiler to github.com/ethereum/solidity/std
(import "std";orimport owned;do not work anymore). - Confusing and undocumented keyword 
afterwas removed. - New reserved words: 
abstract,hex,interface,payable,pure,static,view. 
Features:
- Hexadecimal string literals: 
hex"ab1248fe" - Internal: Inline assembly usable by the code generator.
 - Commandline interface: Using 
-as filename allows reading from stdin. - Interface JSON: Fallback function is now part of the ABI.
 - Interface: Version string now semver compatible.
 - Code generator: Do not provide "new account gas" if we know the called account exists.
 
Bugfixes:
- JSON AST: Nodes were added at wrong parent
 - Why3 translator: Crash fix for exponentiation
 - Commandline Interface: linking libraries with underscores in their name.
 - Type Checker: Fallback function cannot return data anymore.
 - Code Generator: Fix crash when 
sha3()was used on unsupported types. - Code Generator: Manually set gas stipend for 
.send(0). 
Lots of changes to the documentation mainly by voluntary external contributors.
Version 0.3.6
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.
Note that the optimizer was disabled in some situations which could lead to larger (but correcter) code.
Features:
- Formal verification: Take external effects on a contract into account.
 - Type Checker: Warning about unused return value of low-level calls and send.
 - Output: Source location and node id as part of AST output
 - Output: Source location mappings for bytecode
 - Output: Formal verification as part of json compiler output.
 
Bugfixes:
- Commandline Interface: Do not crash if input is taken from stdin.
 - Scanner: Correctly support unicode escape codes in strings.
 - JSON output: Fix error about relative / absolute source file names.
 - JSON output: Fix error about invalid utf8 strings.
 - Code Generator: Dynamic allocation of empty array caused infinite loop.
 - Code Generator: Correctly calculate gas requirements for memcpy precompile.
 - Optimizer: Clear known state if two code paths are joined.
 
Note 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.
The source below cannot be used without the dependent repositories.
Version 0.3.5
Features:
- Context-dependent path remappings (different modules can use the same library in different versions)
 
Bugfixes:
- Type Checking: Dynamic return types were removed when fetching data from external calls, now they are replaced by an "unusable" type.
 - Type Checking: Overrides by constructors were considered making a function non-abstract.
 
note: The source below cannot be used without the dependent repositories.