v0.3.8
What's Changed
Non-breaking changes and improvements:
transient
storage keyword (#3373)- ternary operators (#3398)
raw_revert()
builtin (#3136)- shift operators (#3019)
- make
send()
gas stipend configurable (#3158) - use new
push0
opcode (#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=0
andrevert_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 in (#3104, #3408, cf. GHSA-vxmm-cwh2-q762)
Other docs updates, chores and fixes:
- call graph stability (#3370)
- fix
vyper-serve
output (#3338) - add
custom:
natspec tags (#3403) - add missing pc maps to
vyper_json
output (#3333) - fix constructor context for internal functions (#3388)
- add deprecation warning for
selfdestruct
usage (#3372) - add bytecode metadata option to vyper-json (#3117)
- fix compiler panic when a
break
is 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
not
operator 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
not
constant 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
,view
functions (#3424) - improve optimizer rules for comparison operators (#3412)
- deploy to ghcr on push (#3435)
- add note on return value bounds in interfaces (#3205)
- index
id
param inURI
event ofERC1155ownable
(#3203) - add missing
asset
function toERC4626
built-in interface (#3295) - clarify
skip_contract_check=True
can result in undefined behavior (#3386) - add
custom
NatSpec tag to docs (#3404) - fix
uint256_addmod
doc (#3300) - document optional kwargs for external calls (#3122)
- remove
slice()
length documentation caveats (#3152) - fix docs of
blockhash
to reflect revert behaviour (#3168) - improvements to compiler error messages by (#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 commits!) made it into this release! Special thanks to contributions from @tserg, @trocher, @z80dev, @emc415 and @benber86
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
Full Changelog: v0.3.7...v0.3.8