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: isqrt built-in (#3074) (#3069)
- feat: add block.prevrandao as alias for block.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.
Date released: 2022-08-07
Bugfixes:
- Fix
in
expressions when list members are variables (#3035)
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
self
address in pure functions (#3027)
Date released: 2022-07-27
Non-breaking changes and improvements:
- Add enum types (#2874, #2915, #2925, #2977)
- Add
_abi_decode
builtin (#2882) - Add
create_from_blueprint
andcreate_copy_of
builtins (#2895) - Add
default_return_value
kwarg for calls (#2839) - Add
min_value
andmax_value
builtins for numeric types (#2935) - Add
uint2str
builtin (#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.data
inraw_call
withoutslice
(#2902) - Per-method calldatasize checks (#2911)
- Type inference and annotation of arguments for builtin functions (#2817)
- Allow varargs for
print
(#2833) - Add
error_map
output format for tooling consumption (#2939) - Multiple evaluation of contract address in call (GHSA-4v9q-cgpw-cf38)
- Improve ast output (#2824)
- Allow
@nonreentrant
on 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)
- Optimizer improvements (#2647, #2868, #2914, #2843, #2944)
- Reverse order in which exceptions are reported (#2838)
- Fix compile-time blowup for large contracts (#2981)
- Rename
vyper-ir
binary 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!
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:
- Add a
print
built-in which allows printing debugging messages in hardhat. (#2818) - Fix various error messages (#2798, #2805)
Date released: 2022-04-17
Breaking changes:
- Increase the bounds of the
decimal
type (#2730) - Generalize and simplify the semantics of the
convert
builtin (#2694) - Restrict hex and bytes literals (#2736, #2872)
Non-breaking changes and improvements:
- Implement dynamic arrays (#2556, #2606, #2615)
- Support all ABIv2 integer and bytes types (#2705)
- Add storage layout override mechanism (#2593)
- Support
<address>.code
attribute (#2583) - Add
tx.gasprice
builtin (#2624) - Allow structs as constant variables (#2617)
- Implement
skip_contract_check
kwarg (#2551) - Support EIP-2678 ethPM manifest files (#2628)
- Add
metadata
output format (#2597) - Allow
msg.*
variables in internal functions (#2632) - Add
unsafe_
arithmetic builtins (#2629) - Add subroutines to Vyper IR (#2598)
- Add
select
opcode 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)
- Typechecking of constant variables (#2580, #2603)
- 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.
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 short-circuiting boolean operations (#2467, #2493)
- 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)
- Fix allocation of unused storage slots (#2439, #2514)
Special thanks to @skellet0r for some major features in this release!
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!
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)
- Other docs updates (#2405, #2422, #2425)
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!
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)
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)
THIS RELEASE HAS BEEN PULLED
Date released: 06-07-2021
Non-breaking changes and improvements:
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:
- Optimize
calldataload
(#2352) - Add the
int256
signed integer type (#2351) - EIP2929 opcode repricing and Berlin support (#2350)
- Add
msg.data
environment variable #2343 (#2343) - Full support for Python 3.9 (#2233)
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
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
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)!
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 in
comparator (#2232) - Lift restriction on calldata variables shadowing storage variables (#2226)
- Optimize
shift
bytecode when 2nd arg is a literal (#2201) - Warn when EIP-170 size limit is exceeded (#2208)
Fixes:
- Allow use of
slice
on 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
empty
as an argument within a function call (#2234) - Allow
empty
static-sized array as an argument within alog
statement (#2235) - Compile-time issue with
Bytes
variables as a key in a mapping (#2239)
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
assert
andraise
(#2198) - Simplified internal handling of memory variables (#2194)
Fixes:
- Ensure internal variables are always placed sequentially within memory (#2196)
- Bugfixes around memory de-allocation (#2197)
Date released: 10-10-2020
Non-breaking changes and improvements:
- Release and reuse memory slots within the same function (#2188)
- Allow implicit use of
uint256
as 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:
- Memory corruption issue when performing function calls inside a tuple or another function call (#2186)
- Incorrect function output when using multidimensional arrays (#2184)
- Reduced ambiguity bewteen
address
andBytes[20]
(#2191)
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)
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:
- Fix ABI translations for structs that are returned from functions (#2114)
- Raise when items that are not types are called (#2118)
- Ensure hex and decimal AST nodes are serializable (#2123)
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:
- Pop
for
loop values from stack prior to returning (#2110) - Type checking non-literal array index values (#2108)
- Meaningful output during
for
loop type checking (#2096)
Date released: 04-07-2020
Fixes:
- Do not fold exponentiation to a negative power (#2089)
- Add repr for mappings (#2090)
- Literals are only validated once (#2093)
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:
@public
and@private
function decorators have been renamed to@external
and@internal
(VIP #2065)- The
@constant
decorator 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)
log
is now a statement (VIP #1864)- Mapping declaration syntax changed to
HashMap[key_type, value_type]
(VIP #1969) - Interfaces are now declared via the
interface
keyword instead ofcontract
(VIP #1825) bytes
andstring
types are now written asBytes
andString
(#2080)bytes
andstring
literals must now be bytes or regular strings, respectively. They are no longer interchangeable. (VIP #1876)assert_modifiable
has been removed, you can now directly perform assertions on calls (#2050)value
is no longer an allowable variable name in a function input (VIP #1877)- The
slice
builtin function expectsuint256
for thestart
andlength
args (VIP #1986) len
return type is nowuint256
(VIP #1979)value
andgas
kwargs for external function calls must be given asuint256
(VIP #1878)- The
outsize
kwarg inraw_call
has been renamed tomax_outsize
(#1977) - The
type
kwarg inextract32
has been renamed tooutput_type
(#2036) - Public array getters now use
uint256
for their input argument(s) (VIP #1983) - Public struct getters now return all values of a struct (#2064)
RLPList
has been removed (VIP #1866)
The following non-breaking VIPs and features were implemented:
- Implement boolean condition short circuiting (VIP #1817)
- Add the
empty
builtin 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
@pure
decorator (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_id
optional (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_call
can 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
in
comparator (#2070) - Prevent modification of a storage array during iteration via
for
loop (#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.
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.
Date released: 09-01-2020
Beta 16 was a quick patch release to fix one issue: (#1829)
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)
- Add support for EIP-1344, Chain ID Opcode (VIP #1652)
- Support for EIP-1052,
EXTCODEHASH
(VIP #1765)
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
implements
statement (#1774) - Fixed how certain values compared when using
min
andmax
(#1790) - Removed unnecessary overflow checks on
addmod
andmulmod
(#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-json
compatibility withsolc
settings (#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)
- Changed opcode costs per EIP-1884 (#1764)
Special thanks to (@iamdefinitelyahuman) for lots of updates this release!
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
bytes32
inraw_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
sqrt
on certain datatypes (#1679) - Prevent shadowing of internal variables (#1601)
- Reject unary substraction on unsigned types (#1638)
- Disallow
orelse
syntax infor
loops (#1633) - Increased clarity and efficiency of zero-padding (#1605)
Date released: 27-09-2019
The following VIPs were implemented for Beta 13:
- Add
vyper-json
compilation 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:
- Type check for default params and arrays (#1596)
- Fixed bug when using assertions inside for loops (#1619)
- Fixed zero padding error for ABI encoder (#1611)
- Check
calldatasize
beforecalldataload
for function selector (#1606)
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
/@constant
logical 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.cli
rearchitecture of scripts (#1574)- AST end offsets and Solidity-compatible compressed sourcemap (#1580)
Special thanks to (@iamdefinitelyahuman) for lots of updates this release!
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)
- Improvements for Windows users (#1486) (#1488)
- Array copy optimisation (#1487)
- Fixing
@nonreentrant
decorator for return statements (#1532) sha3
builtin function removed (#1328)- Disallow conflicting method IDs (#1530)
- Additional
convert()
supported types (#1524) (#1500) - Equality operator for strings and bytes (#1507)
- Change in
compile_codes
interface function (#1504)
Thanks to all the contributors!
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 .. range
expression. (#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>, UNREACHABLE
statement. (#711)
Special thanks to (Charles Cooper), for some excellent contributions this release.
Date released: 12-03-2019
- Add support for list constants (#1211)
- Add
sha256
function (#1327) - Renamed
create_with_code_of
tocreate_forwarder_to
(#1177) @nonreentrant
Decorator (#1204)- Add opcodes and opcodes_runtime flags to compiler (#1255)
- Improved External contract call interfaces (#885)
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_of
has 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 ERC20
to 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_value
to beuint256
. - 2018.04.03: Changed bytes declaration from
bytes <= n
tobytes[n]
. - 2018.03.27: Renaming
signed256
toint256
. - 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_value
to use quotes for units. - 2017.12.25: Change name from Viper to Vyper.
- 2017.12.22: Add
continue
for loops - 2017.11.29:
@internal
renamed to@private
. - 2017.11.15: Functions require either
@internal
or@public
decorators. - 2017.07.25: The
def foo() -> num(const): ...
syntax no longer works; you now need to dodef foo() -> num: ...
with a@constant
decorator on the previous line. - 2017.07.25: Functions without a
@payable
decorator 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