Release Notes¶
v0.3.9 (“Common Adder”)¶
Date released: 2023-05-29
This is a patch release fix for v0.3.8. @bout3fiddy discovered a codesize regression for blueprint contracts in v0.3.8 which is fixed in this release. @bout3fiddy also discovered a runtime performance (gas) regression for default functions in v0.3.8 which is fixed in this release.
Fixes:
v0.3.8¶
Date released: 2023-05-23
Non-breaking changes and improvements:
transientstorage keyword (#3373)ternary operators (#3398)
raw_revert()builtin (#3136)shift operators (#3019)
make
send()gas stipend configurable (#3158)use new
push0opcode (#3361)python 3.11 support (#3129)
drop support for python 3.8 and 3.9 (#3325)
build for
aarch64(#2687)
Major refactoring PRs:
refactor front-end type system (#2974)
merge front-end and codegen type systems (#3182)
simplify
GlobalContext(#3209)remove
FunctionSignature(#3390)
Notable fixes:
assignment when rhs is complex type and references lhs (#3410)
uninitialized immutable values (#3409)
success value when mixing
max_outsize=0andrevert_on_failure=False(GHSA-w9g2-3w7p-72g9)block certain kinds of storage allocator overflows (GHSA-mgv8-gggw-mrg6)
store-before-load when a dynarray appears on both sides of an assignment (GHSA-3p37-3636-q8wv)
bounds check for loops of the form
for i in range(x, x+N)(GHSA-6r8q-pfpv-7cgj)alignment of call-site posargs and kwargs for internal functions (GHSA-ph9x-4vc9-m39g)
batch nonpayable check for default functions calldatasize < 4 (#3104, #3408, cf. GHSA-vxmm-cwh2-q762)
Other docs updates, chores and fixes:
call graph stability (#3370)
fix
vyper-serveoutput (#3338)add
custom:natspec tags (#3403)add missing pc maps to
vyper_jsonoutput (#3333)fix constructor context for internal functions (#3388)
add deprecation warning for
selfdestructusage (#3372)add bytecode metadata option to vyper-json (#3117)
fix compiler panic when a
breakis outside of a loop (#3177)fix complex arguments to builtin functions (#3167)
add support for all types in ABI imports (#3154)
disable uadd operator (#3174)
block bitwise ops on decimals (#3219)
raise
UNREACHABLE(#3194)allow enum as mapping key (#3256)
block boolean
notoperator on numeric types (#3231)enforce that loop’s iterators are valid names (#3242)
fix typechecker hotspot (#3318)
rewrite typechecker journal to handle nested commits (#3375)
fix missing pc map for empty functions (#3202)
guard against iterating over empty list in for loop (#3197)
skip enum members during constant folding (#3235)
bitwise
notconstant folding (#3222)allow accessing members of constant address (#3261)
guard against decorators in interface (#3266)
fix bounds for decimals in some builtins (#3283)
length of literal empty bytestrings (#3276)
block
empty()for HashMaps (#3303)fix type inference for empty lists (#3377)
disallow logging from
pure,viewfunctions (#3424)improve optimizer rules for comparison operators (#3412)
deploy to ghcr on push (#3435)
add note on return value bounds in interfaces (#3205)
index
idparam inURIevent ofERC1155ownable(#3203)add missing
assetfunction toERC4626built-in interface (#3295)clarify
skip_contract_check=Truecan result in undefined behavior (#3386)add
customNatSpec tag to docs (#3404)fix
uint256_addmoddoc (#3300)document optional kwargs for external calls (#3122)
remove
slice()length documentation caveats (#3152)fix docs of
blockhashto reflect revert behaviour (#3168)improvements to compiler error messages (#3121, #3134, #3312, #3304, #3240, #3264, #3343, #3307, #3313 and #3215)
These are really just the highlights, as many other bugfixes, docs updates and refactoring (over 150 pull requests!) made it into this release! For the full list, please see the changelog. Special thanks to contributions from @tserg, @trocher, @z80dev, @emc415 and @benber86 in this release!
New Contributors:
@omahs made their first contribution in (#3128)
@ObiajuluM made their first contribution in (#3124)
@trocher made their first contribution in (#3134)
@ozmium22 made their first contribution in (#3149)
@ToonVanHove made their first contribution in (#3168)
@emc415 made their first contribution in (#3158)
@lgtm-com made their first contribution in (#3147)
@tdurieux made their first contribution in (#3224)
@victor-ego made their first contribution in (#3263)
@miohtama made their first contribution in (#3257)
@kelvinfan001 made their first contribution in (#2687)
v0.3.7¶
Date released: 2022-09-26
Breaking changes:
Non-breaking changes and improvements:
fix: assert description in
Crowdfund.finalize()(#3058)fix: change mutability of example ERC721 interface (#3076)
chore: improve error message for non-checksummed address literal (#3065)
feat: add
block.prevrandaoas alias forblock.difficulty(#3085)feat:
epsilon()builtin (#3057)feat: extend ecrecover signature to accept additional parameter types (#3084)
feat: allow constant and immutable variables to be declared public (#3024)
feat: optionally disable metadata in bytecode (#3107)
Bugfixes:
fix: empty nested dynamic arrays (#3061)
fix: foldable builtin default args in imports (#3079) (#3077)
Additional changes and improvements:
doc: update broken links in SECURITY.md (#3095)
chore: update discord link in docs (#3031)
fix: broken links in various READMEs (#3072)
chore: fix compile warnings in examples (#3033)
feat: append lineno to the filename in error messages (#3092)
chore: migrate lark grammar (#3082)
chore: loosen and upgrade semantic version (#3106)
New Contributors
@emilianobonassi made their first contribution in #3107
@unparalleled-js made their first contribution in #3106
@pcaversaccio made their first contribution in #3085
@nfwsncked made their first contribution in #3058
@z80 made their first contribution in #3057
@Benny made their first contribution in #3024
@cairo made their first contribution in #3072
@fiddy made their first contribution in #3069
Special thanks to returning contributors @tserg, @pandadefi, and @delaaxe.
v0.3.6¶
Date released: 2022-08-07
Bugfixes:
Fix
inexpressions when list members are variables (#3035)
v0.3.5¶
Date released: 2022-08-05
Non-breaking changes and improvements:
Add blueprint deployer output format (#3001)
Allow arbitrary data to be passed to
create_from_blueprint(#2996)Add CBOR length to bytecode for decoders (#3010)
Fix compiler panic when accessing enum storage vars via
self(#2998)Fix: allow
empty()in constant definitions and in default argument position (#3008)Fix: disallow
selfaddress in pure functions (#3027)
v0.3.4¶
Date released: 2022-07-27
Non-breaking changes and improvements:
Add
_abi_decodebuiltin (#2882)Add
create_from_blueprintandcreate_copy_ofbuiltins (#2895)Add
default_return_valuekwarg for calls (#2839)Add
min_valueandmax_valuebuiltins for numeric types (#2935)Add
uint2strbuiltin (#2879)Add vyper signature to bytecode (#2860)
Other fixes and improvements:
Call internal functions from constructor (#2496)
Arithmetic for new int types (#2843)
Allow
msg.datainraw_callwithoutslice(#2902)Per-method calldatasize checks (#2911)
Type inference and annotation of arguments for builtin functions (#2817)
Allow varargs for
print(#2833)Add
error_mapoutput format for tooling consumption (#2939)Multiple evaluation of contract address in call (GHSA-4v9q-cgpw-cf38)
Improve ast output (#2824)
Allow
@nonreentranton view functions (#2921)Add
shift()support for signed integers (#2964)Enable dynarrays of strings (#2922)
Fix off-by-one bounds check in certain safepow cases (#2983)
Reverse order in which exceptions are reported (#2838)
Fix compile-time blowup for large contracts (#2981)
Rename
vyper-irbinary tofang(#2936)
Many other small bugfixes, optimizations and refactoring also made it into this release! Special thanks to @tserg and @pandadefi for contributing several important bugfixes, refactoring and features to this release!
v0.3.3¶
Date released: 2022-04-22
This is a bugfix release. It patches an off-by-one error in the storage allocation mechanism for dynamic arrays reported by @haltman-at in #2820
Other fixes and improvements:
v0.3.2¶
Date released: 2022-04-17
Breaking changes:
Increase the bounds of the
decimaltype (#2730)Generalize and simplify the semantics of the
convertbuiltin (#2694)
Non-breaking changes and improvements:
Support all ABIv2 integer and bytes types (#2705)
Add storage layout override mechanism (#2593)
Support
<address>.codeattribute (#2583)Add
tx.gaspricebuiltin (#2624)Allow structs as constant variables (#2617)
Implement
skip_contract_checkkwarg (#2551)Support EIP-2678 ethPM manifest files (#2628)
Add
metadataoutput format (#2597)Allow
msg.*variables in internal functions (#2632)Add
unsafe_arithmetic builtins (#2629)Add subroutines to Vyper IR (#2598)
Add
selectopcode to Vyper IR (#2690)Allow lists of any type as loop variables (#2616)
Improve suggestions in error messages (#2806)
Notable Fixes:
Clamping of returndata from external calls in complex expressions (GHSA-4mrx-6fxm-8jpg, GHSA-j2x6-9323-fp7h)
Bytestring equality for (N<=32) (GHSA-7vrm-3jc8-5wwm)
Referencing immutables in constructor (#2627)
Arrays of interfaces in for loops (#2699)
Lots of optimizations, refactoring and other fixes made it into this release! For the full list, please see the changelog.
Special thanks to @tserg for typechecker fixes and significant testing of new features! Additional contributors to this release include @abdullathedruid, @hi-ogawa, @skellet0r, @fubuloubu, @onlymaresia, @SwapOperator, @hitsuzen-eth, @Sud0u53r, @davidhq.
v0.3.1¶
Date released: 2021-12-01
Breaking changes:
Disallow changes to decimal precision when used as a library (#2479)
Non-breaking changes and improvements:
Add immutable variables (#2466)
Add uint8 type (#2477)
Add gaslimit and basefee env variables (#2495)
Enable checkable raw_call (#2482)
Propagate revert data when external call fails (#2531)
Improve LLL annotations (#2486)
Optimize identity precompile usage (#2488)
Remove loaded limits for int128 and address (#2506)
Add machine readable ir_json format (#2510)
Optimize raw_call for the common case when the input is in memory (#2481)
Remove experimental OVM transpiler (#2532)
Add CLI flag to disable optimizer (#2522)
Add docs for LLL syntax and semantics (#2494)
Fixes:
Allow non-constant revert reason strings (#2509)
Allow slices of complex expressions (#2500)
Remove seq_unchecked from LLL codegen (#2485)
Fix external calls with default parameters (#2526)
Enable lists of structs as function arguments (#2515)
Fix .balance on constant addresses (#2533)
Allow variable indexing into constant/literal arrays (#2534)
Special thanks to @skellet0r for some major features in this release!
v0.3.0¶
Date released: 2021-10-04
Breaking changes:
Change ABI encoding of single-struct return values to be compatible with Solidity (#2457)
Drop Python 3.6 support (#2462)
Non-breaking changes and improvements:
Rewrite internal calling convention (#2447)
Allow any ABI-encodable type as function arguments and return types (#2154, #2190)
Add support for deterministic deployment of minimal proxies using CREATE2 (#2460)
Optimize code for certain copies (#2468)
Add -o CLI flag to redirect output to a file (#2452)
Other docs updates (#2450)
Fixes:
_abi_encode builtin evaluates arguments multiple times (#2459)
ABI length is too short for nested tuples (#2458)
Returndata is not clamped for certain numeric types (#2454)
__default__ functions do not respect nonreentrancy keys (#2455)
Clamps for bytestrings in initcode are broken (#2456)
Missing clamps for decimal args in external functions (GHSA-c7pr-343r-5c46)
Memory corruption when returning a literal struct with a private function call inside of it (GHSA-xv8x-pr4h-73jv)
Special thanks to contributions from @skellet0r and @benjyz for this release!
v0.2.16¶
Date released: 2021-08-27
Non-breaking changes and improvements:
Expose _abi_encode as a user-facing builtin (#2401)
Export the storage layout as a compiler output option (#2433)
Add experimental OVM backend (#2416)
Allow any ABI-encodable type as event arguments (#2403)
Optimize int128 clamping (#2411)
Fixes:
Disallow nonreentrant decorator on constructors (#2426)
Fix bounds checks when handling msg.data (#2419)
Allow interfaces in lists, structs and maps (#2397)
Fix trailing newline parse bug (#2412)
Special thanks to contributions from @skellet0r, @sambacha and @milancermak for this release!
v0.2.15¶
Date released: 23-07-2021
Non-breaking changes and improvements - Optimization when returning nested tuples (#2392)
Fixes: - Annotated kwargs for builtins (#2389) - Storage slot allocation bug (#2391)
v0.2.14¶
Date released: 20-07-2021
Non-breaking changes and improvements: - Reduce bytecode by sharing code for clamps (#2387)
Fixes: - Storage corruption from re-entrancy locks (#2379)
v0.2.13¶
THIS RELEASE HAS BEEN PULLED
Date released: 06-07-2021
Non-breaking changes and improvements:
v0.2.12¶
Date released: 16-04-2021
This release fixes a memory corruption bug (#2345) that was introduced in the v0.2.x series and was not fixed in VVE-2020-0004. Read about it further in VVE-2021-0001.
Non-breaking changes and improvements:
v0.2.11¶
Date released: 27-02-2021
This is a quick patch release to fix a memory corruption bug that was introduced in v0.2.9 (#2321) with excessive memory deallocation when releasing internal variables
v0.2.10¶
THIS RELEASE HAS BEEN PULLED
Date released: 17-02-2021
This is a quick patch release to fix incorrect generated ABIs that was introduced in v0.2.9 (#2311) where storage variable getters were incorrectly marked as nonpayable instead of view
v0.2.9¶
THIS RELEASE HAS BEEN PULLED
Date released: 16-02-2021
Non-breaking changes and improvements: - Add license to wheel, Anaconda support (#2265) - Consider events during type-check with implements: (#2283) - Refactor ABI generation (#2284) - Remove redundant checks in parser/signatures (#2288) - Streamling ABI-encoding logic for tuple return types (#2302) - Optimize function ordering within bytecode (#2303) - Assembly-level optimizations (#2304) - Optimize nonpayable assertion (#2307) - Optimize re-entrancy locks (#2308)
Fixes: - Change forwarder proxy bytecode to ERC-1167 (#2281) - Reserved keywords check update (#2286) - Incorrect type-check error in literal lists (#2309)
Tons of Refactoring work courtesy of (@iamdefinitelyahuman)!
v0.2.8¶
Date released: 04-12-2020
Non-breaking changes and improvements:
AST updates to provide preliminary support for Python 3.9 (#2225)
Support for the
not incomparator (#2232)Lift restriction on calldata variables shadowing storage variables (#2226)
Optimize
shiftbytecode when 2nd arg is a literal (#2201)Warn when EIP-170 size limit is exceeded (#2208)
Fixes:
Allow use of
sliceon a calldatabytes32(#2227)Explicitly disallow iteration of a list of structs (#2228)
Improved validation of address checksums (#2229)
Bytes are always represented as hex within the AST (#2231)
Allow
emptyas an argument within a function call (#2234)Allow
emptystatic-sized array as an argument within alogstatement (#2235)Compile-time issue with
Bytesvariables as a key in a mapping (#2239)
v0.2.7¶
Date released: 10-14-2020
This is a quick patch release to fix a runtime error introduced in v0.2.6 (#2188) that could allow for memory corruption under certain conditions.
Non-breaking changes and improvements:
Optimizations around
assertandraise(#2198)Simplified internal handling of memory variables (#2194)
Fixes:
v0.2.6¶
Date released: 10-10-2020
Non-breaking changes and improvements:
Release and reuse memory slots within the same function (#2188)
Allow implicit use of
uint256as iterator type in range-based for loops (#2180)Optimize clamping logic for
int128(#2179)Calculate array index offsets at compile time where possible (#2187)
Improved exception for invalid use of dynamically sized struct (#2189)
Improved exception for incorrect arg count in function call (#2178)
Improved exception for invalid subscript (#2177)
Fixes:
v0.2.5¶
Date released: 30-09-2020
Non-breaking changes and improvements:
Improve exception on incorrect interface (#2131)
Standalone binary preparation (#2134)
Improve make freeze (#2135)
Remove Excessive Scoping Rules on Local Variables (#2166)
Optimize nonpayable check for contracts that do not accept ETH (#2172)
Optimize safemath on division-by-zero with a literal divisor (#2173)
Optimize multiple sequential memory-zeroings (#2174)
Optimize size-limit checks for address and bool types (#2175)
Fixes:
Constant folding on lhs of assignments (#2137)
ABI issue with bytes and string arrays inside tuples (#2140)
Returning struct from a external function gives error (#2143)
Error messages with struct display all members (#2160)
The returned struct value from the external call doesn’t get stored properly (#2164)
Improved exception on invalid function-scoped assignment (#2176)
v0.2.4¶
Date released: 03-08-2020
Non-breaking changes and improvements:
Improve EOF Exceptions (#2115)
Improve exception messaging for type mismatches (#2119)
Ignore trailing newline tokens (#2120)
Fixes:
v0.2.3¶
Date released: 16-07-2020
Non-breaking changes and improvements:
Show contract names in raised exceptions (#2103)
Adjust function offsets to not include decorators (#2102)
Raise certain exception types immediately during module-scoped type checking (#2101)
Fixes:
v0.2.1¶
Date released: 03-07-2020
This is a major breaking release of the Vyper compiler and language. It is also the first release following our versioning scheme (#1887).
Breaking changes:
@publicand@privatefunction decorators have been renamed to@externaland@internal(VIP #2065)The
@constantdecorator has been renamed to@view(VIP #2040)Type units have been removed (VIP #1881)
Event declaraion syntax now resembles that of struct declarations (VIP #1864)
logis now a statement (VIP #1864)Mapping declaration syntax changed to
HashMap[key_type, value_type](VIP #1969)Interfaces are now declared via the
interfacekeyword instead ofcontract(VIP #1825)bytesandstringtypes are now written asBytesandString(#2080)bytesandstringliterals must now be bytes or regular strings, respectively. They are no longer interchangeable. (VIP #1876)assert_modifiablehas been removed, you can now directly perform assertions on calls (#2050)valueis no longer an allowable variable name in a function input (VIP #1877)The
slicebuiltin function expectsuint256for thestartandlengthargs (VIP #1986)lenreturn type is nowuint256(VIP #1979)valueandgaskwargs for external function calls must be given asuint256(VIP #1878)The
outsizekwarg inraw_callhas been renamed tomax_outsize(#1977)The
typekwarg inextract32has been renamed tooutput_type(#2036)Public array getters now use
uint256for their input argument(s) (VIP #1983)Public struct getters now return all values of a struct (#2064)
RLPListhas been removed (VIP #1866)
The following non-breaking VIPs and features were implemented:
Implement boolean condition short circuiting (VIP #1817)
Add the
emptybuiltin function for zero-ing a value (#1676)Refactor of the compiler process resulting in an almost 5x performance boost! (#1962)
Support ABI State Mutability Fields in Interface Definitions (VIP #2042)
Support
@puredecorator (VIP #2041)Overflow checks for exponentiation (#2072)
Validate return data length via
RETURNDATASIZE(#2076)Improved constant folding (#1949)
Allow raise without reason string (VIP #1902)
Make the type argument in
method_idoptional (VIP #1980)Hash complex types when used as indexed values in an event (#2060)
Ease restrictions on calls to self (#2059)
Remove ordering restrictions in module-scope of contract (#2057)
raw_callcan now be used to perform aSTATICCALL(#1973)Optimize precompiles to use
STATICCALL(#1930)
Some of the bug and stability fixes:
Arg clamping issue when using multidimensional arrays (#2071)
Support calldata arrays with the
incomparator (#2070)Prevent modification of a storage array during iteration via
forloop (#2028)Fix memory length of revert string (#1982)
Memory offset issue when returning tuples from private functions (#1968)
Issue with arrays as default function arguments (#2077)
Private function calls no longer generate a call signature (#2058)
Significant codebase refactor, thanks to (@iamdefinitelyahuman)!
NOTE: v0.2.0 was not used due to a conflict in PyPI with a previous release. Both tags v0.2.0 and v0.2.1 are identical.
v0.1.0-beta.17¶
Date released: 24-03-2020
The following VIPs and features were implemented for Beta 17:
Some of the bug and stability fixes:
ABI interface fixes (#1842)
Modifications to how ABI data types are represented (#1846)
Generate method identifier for struct return type (#1843)
Return tuple with fixed array fails to compile (#1838)
Also lots of refactoring and doc updates!
This release will be the last to follow our current release process. All future releases will be governed by the versioning scheme (#1887). The next release will be v0.2.0, and contain many breaking changes.
v0.1.0-beta.16¶
Date released: 09-01-2020
Beta 16 was a quick patch release to fix one issue: (#1829)
v0.1.0-beta.15¶
Date released: 06-01-2020
NOTE: we changed our license to Apache 2.0 (#1772)
The following VIPs were implemented for Beta 15:
EVM Ruleset Switch (VIP #1230)
Some of the bug and stability fixes:
Removed all traces of Javascript from the codebase (#1770)
Ensured sufficient gas stipend for precompiled calls (#1771)
Allow importing an interface that contains an
implementsstatement (#1774)Fixed how certain values compared when using
minandmax(#1790)Removed unnecessary overflow checks on
addmodandmulmod(#1786)Check for state modification when using tuples (#1785)
Fix Windows path issue when importing interfaces (#1781)
Added Vyper grammar, currently used for fuzzing (#1768)
Modify modulus calculations for literals to be consistent with the EVM (#1792)
Explicitly disallow the use of exponentiation on decimal values (#1792)
Add compile-time checks for divide by zero and modulo by zero (#1792)
Fixed some issues with negating constants (#1791)
Allow relative imports beyond one parent level (#1784)
Implement SHL/SHR for bitshifting, using Constantinople rules (#1796)
vyper-jsoncompatibility withsolcsettings (#1795)Simplify the type check when returning lists (#1797)
Add branch coverage reporting (#1743)
Fix struct assignment order (#1728)
Added more words to reserved keyword list (#1741)
Allow scientific notation for literals (#1721)
Avoid overflow on sqrt of Decimal upper bound (#1679)
Refactor ABI encoder (#1723)
Special thanks to (@iamdefinitelyahuman) for lots of updates this release!
v0.1.0-beta.14¶
Date released: 13-11-2019
Some of the bug and stability fixes:
Mucho Documentation and Example cleanup!
Python 3.8 support (#1678)
Disallow scientific notation in literals, which previously parsed incorrectly (#1681)
Add implicit rewrite rule for
bytes[32]->bytes32(#1718)Support
bytes32inraw_log(#1719)Fixed EOF parsing bug (#1720)
Cleaned up arithmetic expressions (#1661)
Fixed off-by-one in check for homogeneous list element types (#1673)
Fixed stack valency issues in if and for statements (#1665)
Prevent overflow when using
sqrton certain datatypes (#1679)Prevent shadowing of internal variables (#1601)
Reject unary substraction on unsigned types (#1638)
Disallow
orelsesyntax inforloops (#1633)Increased clarity and efficiency of zero-padding (#1605)
v0.1.0-beta.13¶
Date released: 27-09-2019
The following VIPs were implemented for Beta 13:
Add
vyper-jsoncompilation mode (VIP #1520)Environment variables and constants can now be used as default parameters (VIP #1525)
Require unitialized memory be set on creation (VIP #1493)
Some of the bug and stability fixes:
v0.1.0-beta.12¶
Date released: 27-08-2019
The following VIPs were implemented for Beta 12:
Support for relative imports (VIP #1367)
Restricted use of environment variables in private functions (VIP #1199)
Some of the bug and stability fixes:
@nonreentrant/@constantlogical inconsistency (#1544)Struct passthrough issue (#1551)
Private underflow issue (#1470)
Constancy check issue (#1480)
Prevent use of conflicting method IDs (#1530)
Missing arg check for private functions (#1579)
Zero padding issue (#1563)
vyper.clirearchitecture of scripts (#1574)AST end offsets and Solidity-compatible compressed sourcemap (#1580)
Special thanks to (@iamdefinitelyahuman) for lots of updates this release!
v0.1.0-beta.11¶
Date released: 23-07-2019
Beta 11 brings some performance and stability fixes.
Using calldata instead of memory parameters. (#1499)
Reducing of contract size, for large parameter functions. (#1486)
Array copy optimisation (#1487)
Fixing
@nonreentrantdecorator for return statements (#1532)sha3builtin function removed (#1328)Disallow conflicting method IDs (#1530)
Equality operator for strings and bytes (#1507)
Change in
compile_codesinterface function (#1504)
Thanks to all the contributors!
v0.1.0-beta.10¶
Date released: 24-05-2019
Lots of linting and refactoring!
Bugfix with regards to using arrays as parameters to private functions (#1418). Please check your contracts, and upgrade to latest version, if you do use this.
Slight shrinking in init produced bytecode. (#1399)
Additional constancy protection in the
for .. rangeexpression. (#1397)Improved bug report (#1394)
Fix returning of External Contract from functions (#1376)
Interface unit fix (#1303)
Not Equal (!=) optimisation (#1303) 1386
New
assert <condition>, UNREACHABLEstatement. (#711)
Special thanks to (Charles Cooper), for some excellent contributions this release.
v0.1.0-beta.9¶
Date released: 12-03-2019
Prior to v0.1.0-beta.9¶
Prior to this release, we managed our change log in a different fashion. Here is the old changelog:
2019.04.05: Add stricter checking of unbalanced return statements. (#590)
2019.03.04:
create_with_code_ofhas been renamed tocreate_forwarder_to. (#1177)2019.02.14: Assigning a persistent contract address can only be done using the
bar_contact = ERC20(<address>)syntax.2019.02.12: ERC20 interface has to be imported using
from vyper.interfaces import ERC20to use.2019.01.30: Byte array literals need to be annoted using
b"", strings are represented as “”.2018.12.12: Disallow use of
None, disallow use ofdel, implementedclear()built-in function.2018.11.19: Change mapping syntax to use
map(). (VIP564)2018.10.02: Change the convert style to use types instead of string. (VIP1026)
2018.09.24: Add support for custom constants.
2018.08.09: Add support for default parameters.
2018.06.08: Tagged first beta.
2018.05.23: Changed
wei_valueto beuint256.2018.04.03: Changed bytes declaration from
bytes <= ntobytes[n].2018.03.27: Renaming
signed256toint256.2018.03.22: Add modifiable and static keywords for external contract calls.
2018.03.20: Renaming
__log__toevent.2018.02.22: Renaming num to int128, and num256 to uint256.
2018.02.13: Ban functions with payable and constant decorators.
2018.02.12: Division by num returns decimal type.
2018.02.09: Standardize type conversions.
2018.02.01: Functions cannot have the same name as globals.
2018.01.27: Change getter from get_var to var.
2018.01.11: Change version from 0.0.2 to 0.0.3
2018.01.04: Types need to be specified on assignment (VIP545).
2017.01.02 Change
as_wei_valueto use quotes for units.2017.12.25: Change name from Viper to Vyper.
2017.12.22: Add
continuefor loops2017.11.29:
@internalrenamed to@private.2017.11.15: Functions require either
@internalor@publicdecorators.2017.07.25: The
def foo() -> num(const): ...syntax no longer works; you now need to dodef foo() -> num: ...with a@constantdecorator on the previous line.2017.07.25: Functions without a
@payabledecorator now fail when called with nonzero wei.2017.07.25: A function can only call functions that are declared above it (that is, A can call B only if B appears earlier in the code than A does). This was introduced