github vyperlang/vyper v0.3.8

latest releases: v0.4.0rc2, v0.4.0rc1, v0.4.0b6...
11 months ago

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:

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 in URI event of ERC1155ownable (#3203)
  • add missing asset function to ERC4626 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

Full Changelog: v0.3.7...v0.3.8

Don't miss a new vyper release

NewReleases is sending notifications on new releases.