docs/release-notes.rst
.. _release-notes:
Release Notes #############
Release audits can be found here <https://github.com/vyperlang/audits/tree/master>_.
..
vim regexes:
first convert all single backticks to double backticks:
:'<,'>s//``/g to convert links to nice rst links: :'<,'>s/\v(https:\/\/github.com\/vyperlang\/vyper\/pull\/)(\d+)/(#\2 <\1\2>_)/g ex. in: https://github.com/vyperlang/vyper/pull/3373 ex. out: (#3373 https://github.com/vyperlang/vyper/pull/3373_) remove authorship slugs (leave them on github release page; they have no meaning outside of github though) :'<,'>s/by @\S\+ //c for advisory links: :'<,'>s/\v(https:\/\/github.com\/vyperlang\/vyper\/security\/advisories\/)([-A-Za-z0-9]+)/(\2 <\1\2>`_)/g
v0.4.3 ("Buttermilk Racer")
v0.4.3 introduces the @raw_return decorator which allows contracts to return bytes directly without ABI-encoding, which enables new proxy contract use cases. The default EVM version has been updated to prague, and several improvements have been made to the Venom optimizer pipeline.
Audits: ChainSecurity <https://github.com/vyperlang/audits/blob/master/audits/ChainSecurity_Vyper_June_2025_limited_review.pdf>, Anatomist <https://github.com/vyperlang/audits/blob/master/audits/Anatomist_Vyper_April_2025.pdf>
prague the default evm version (#4633 <https://github.com/vyperlang/vyper/pull/4633>_)@raw_return decorator (#4568 <https://github.com/vyperlang/vyper/pull/4568>_)@raw_return in interfaces (#4700 <https://github.com/vyperlang/vyper/pull/4700>_)-f cfg output (#4672 <https://github.com/vyperlang/vyper/pull/4672>_)#4668 <https://github.com/vyperlang/vyper/pull/4668>_)DFTPass (#4695 <https://github.com/vyperlang/vyper/pull/4695>_)#4687 <https://github.com/vyperlang/vyper/pull/4687>_)#4667 <https://github.com/vyperlang/vyper/pull/4667>_)clone function (#4696 <https://github.com/vyperlang/vyper/pull/4696>_)@raw_return decorator (#4699 <https://github.com/vyperlang/vyper/pull/4699>_)n_slots requirement in custom layout file (#4641 <https://github.com/vyperlang/vyper/pull/4641>_)#4680 <https://github.com/vyperlang/vyper/pull/4680>_)#4593 <https://github.com/vyperlang/vyper/pull/4593>_)param instruction in tests (#4689 <https://github.com/vyperlang/vyper/pull/4689>_)#4690 <https://github.com/vyperlang/vyper/pull/4690>_)v0.4.2 ("Lernaean Hydra")
v0.4.2 includes a new raw_create() builtin which allows users to build more generic factories in Vyper. It also moves the sqrt() builtin to a pure Vyper module, involving a refactor which will allow more stdlib functionality to be written in Vyper in the future.
Additionally, Venom has undergone more improvements, including a CSE elimination pass, dead-store elimination pass, as well as moving more items in the calling convention to the stack in the venom pipeline. Benchmark contracts are now typically 5% smaller.
Two low severity GHSAs have been patched in this release.
Audits: ChainSecurity <https://github.com/vyperlang/audits/blob/master/audits/ChainSecurity_Vyper_April_2025.pdf>, Anatomist <https://github.com/vyperlang/audits/blob/master/audits/Anatomist_Vyper_April_2025.pdf>
math module (#4520 <https://github.com/vyperlang/vyper/pull/4520>_)#4574 <https://github.com/vyperlang/vyper/pull/4574>_)__default__ (#4371 <https://github.com/vyperlang/vyper/pull/4371>_)#4552 <https://github.com/vyperlang/vyper/pull/4552>_)--venom to --venom-experimental (#4662 <https://github.com/vyperlang/vyper/pull/4662>_)#4495 <https://github.com/vyperlang/vyper/pull/4495>_)#4563 <https://github.com/vyperlang/vyper/pull/4563>_)raw_create() builtin (#4204 <https://github.com/vyperlang/vyper/pull/4204>_)#4542 <https://github.com/vyperlang/vyper/pull/4542>_)bytesM types (#4538 <https://github.com/vyperlang/vyper/pull/4538>_)as_wei_value to all numeric types (#3498 <https://github.com/vyperlang/vyper/pull/3498>_)#4540 <https://github.com/vyperlang/vyper/pull/4540>_)make_setter (#4419 <https://github.com/vyperlang/vyper/pull/4419>_)#4501 <https://github.com/vyperlang/vyper/pull/4501>_)combined_json output (#4541 <https://github.com/vyperlang/vyper/pull/4541>_)#4654 <https://github.com/vyperlang/vyper/pull/4654>_)solc_json output (#4637 <https://github.com/vyperlang/vyper/pull/4637>_)slice() with length 0 for ad-hoc locations (#4645 <https://github.com/vyperlang/vyper/pull/4645>_)#4649 <https://github.com/vyperlang/vyper/pull/4649>_)#4644 <https://github.com/vyperlang/vyper/pull/4644>_)#4156 <https://github.com/vyperlang/vyper/pull/4156>_)#4566 <https://github.com/vyperlang/vyper/pull/4566>_)#4571 <https://github.com/vyperlang/vyper/pull/4571>_)pure functions (#3157 <https://github.com/vyperlang/vyper/pull/3157>_)#4578 <https://github.com/vyperlang/vyper/pull/4578>_)#4621 <https://github.com/vyperlang/vyper/pull/4621>_)#4619 <https://github.com/vyperlang/vyper/pull/4619>_)#4623 <https://github.com/vyperlang/vyper/pull/4623>_)#4622 <https://github.com/vyperlang/vyper/pull/4622>_)raw_create (#4624 <https://github.com/vyperlang/vyper/pull/4624>_)#4492 <https://github.com/vyperlang/vyper/pull/4492>_)keccak and sha256 of constant hexbytes (#4536 <https://github.com/vyperlang/vyper/pull/4536>_)#4550 <https://github.com/vyperlang/vyper/pull/4550>_)Patched security advisories (GHSAs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
concat() builtin may elide side-effects for zero-length arguments (GHSA-vgf2-gvx8-xwc3 <https://github.com/vyperlang/vyper/security/advisories/GHSA-vgf2-gvx8-xwc3>_)slice() may elide side-effects when output length is 0 (GHSA-4w26-8p97-f4jp <https://github.com/vyperlang/vyper/security/advisories/GHSA-4w26-8p97-f4jp>_)#4556 <https://github.com/vyperlang/vyper/pull/4556>_)#4652 <https://github.com/vyperlang/vyper/pull/4652>_)#4422 <https://github.com/vyperlang/vyper/pull/4422>_)#4482 <https://github.com/vyperlang/vyper/pull/4482>_)#4607 <https://github.com/vyperlang/vyper/pull/4607>_)#4411 <https://github.com/vyperlang/vyper/pull/4411>_)#4388 <https://github.com/vyperlang/vyper/pull/4388>_)dload/mstore merging (#4570 <https://github.com/vyperlang/vyper/pull/4570>_)#4546 <https://github.com/vyperlang/vyper/pull/4546>_)#4555 <https://github.com/vyperlang/vyper/pull/4555>_)#4469 <https://github.com/vyperlang/vyper/pull/4469>_)InstUpdater (#4516 <https://github.com/vyperlang/vyper/pull/4516>_)#4518 <https://github.com/vyperlang/vyper/pull/4518>_)#4584 <https://github.com/vyperlang/vyper/pull/4584>_)#4585 <https://github.com/vyperlang/vyper/pull/4585>_)#4586 <https://github.com/vyperlang/vyper/pull/4586>_)#4241 <https://github.com/vyperlang/vyper/pull/4241>_).name invalidation in MakeSSA (#4545 <https://github.com/vyperlang/vyper/pull/4545>_)append_instruction (#4583 <https://github.com/vyperlang/vyper/pull/4583>_)venom_to_assembly (#4587 <https://github.com/vyperlang/vyper/pull/4587>_)#4595 <https://github.com/vyperlang/vyper/pull/4595>_)DominatorTreeAnalysis.dominates() (#4615 <https://github.com/vyperlang/vyper/pull/4615>_)#4666 <https://github.com/vyperlang/vyper/pull/4666>_)#4627 <https://github.com/vyperlang/vyper/pull/4627>_)#4628 <https://github.com/vyperlang/vyper/pull/4628>_)calloca instruction (#4376 <https://github.com/vyperlang/vyper/pull/4376>_)#4655 <https://github.com/vyperlang/vyper/pull/4655>_)#4635 <https://github.com/vyperlang/vyper/pull/4635>_)#4514 <https://github.com/vyperlang/vyper/pull/4514>_)SimplifyCFG (#4658 <https://github.com/vyperlang/vyper/pull/4658>_)dload from list of volatile instructions (#4659 <https://github.com/vyperlang/vyper/pull/4659>_)MakeSSA (#4491 <https://github.com/vyperlang/vyper/pull/4491>_)#4471 <https://github.com/vyperlang/vyper/pull/4471>_)#4484 <https://github.com/vyperlang/vyper/pull/4484>_)#4493 <https://github.com/vyperlang/vyper/pull/4493>_)#4483 <https://github.com/vyperlang/vyper/pull/4483>_)jnz (#4505 <https://github.com/vyperlang/vyper/pull/4505>_)get_contract harness (#4499 <https://github.com/vyperlang/vyper/pull/4499>_)#4532 <https://github.com/vyperlang/vyper/pull/4532>_)SimplifyCFG pass (#4528 <https://github.com/vyperlang/vyper/pull/4528>_)InstUpdater in more passes (#4508 <https://github.com/vyperlang/vyper/pull/4508>_)revert a bb terminator (#4529 <https://github.com/vyperlang/vyper/pull/4529>_)skip_contract_check docs (#4511 <https://github.com/vyperlang/vyper/pull/4511>_)#4475 <https://github.com/vyperlang/vyper/pull/4475>_)#4543 <https://github.com/vyperlang/vyper/pull/4543>_)log (#4617 <https://github.com/vyperlang/vyper/pull/4617>_)#4618 <https://github.com/vyperlang/vyper/pull/4618>_)@external decorator from builtin interfaces (#4562 <https://github.com/vyperlang/vyper/pull/4562>_)#4547 <https://github.com/vyperlang/vyper/pull/4547>_)packaging (#4590 <https://github.com/vyperlang/vyper/pull/4590>_)selfdestruct from example contracts (#4537 <https://github.com/vyperlang/vyper/pull/4537>_)#4533 <https://github.com/vyperlang/vyper/pull/4533>_)#4500 <https://github.com/vyperlang/vyper/pull/4500>_)#4504 <https://github.com/vyperlang/vyper/pull/4504>_)asttokens (#4592 <https://github.com/vyperlang/vyper/pull/4592>_)#3527 <https://github.com/vyperlang/vyper/pull/3527>_)#4530 <https://github.com/vyperlang/vyper/pull/4530>_)#4569 <https://github.com/vyperlang/vyper/pull/4569>_)sha3 and importlib_metadata imports (#4588 <https://github.com/vyperlang/vyper/pull/4588>_)math.sqrt implementation (#4575 <https://github.com/vyperlang/vyper/pull/4575>_)get_type_for_exact_size() (#4632 <https://github.com/vyperlang/vyper/pull/4632>_)#4490 <https://github.com/vyperlang/vyper/pull/4490>_)v0.4.1 ("Tokara Habu")
v0.4.1 is primarily a polishing release, focusing on bug fixes, UX improvements, and security-related fixes (with four low-to-moderate severity GHSA reports published). However, a substantial amount of effort has also been invested in improving the Venom pipeline, resulting in better performance and code generation from the Venom pipeline. Venom can be enabled by passing the --venom or --experimental-codegen flag to the Vyper compiler (they are aliases of each other). Venom code can now also be compiled directly, using the venom binary (included in this release).
@external modifier optional in .vyi files (#4178 <https://github.com/vyperlang/vyper/pull/4178>_)returndatasize even when skip_contract_check is set (#4148 <https://github.com/vyperlang/vyper/pull/4148>_)IERC4626 signatures (#4425 <https://github.com/vyperlang/vyper/pull/4425>_)#4268 <https://github.com/vyperlang/vyper/pull/4268>_)module.__at__() to cast to interface (#4090 <https://github.com/vyperlang/vyper/pull/4090>_)#4257 <https://github.com/vyperlang/vyper/pull/4257>_)#4271 <https://github.com/vyperlang/vyper/pull/4271>_)mana as an alias for gas (#3713 <https://github.com/vyperlang/vyper/pull/3713>_)"abi" key in json interfaces (#4279 <https://github.com/vyperlang/vyper/pull/4279>_)#4253 <https://github.com/vyperlang/vyper/pull/4253>_).vyi files (#4290 <https://github.com/vyperlang/vyper/pull/4290>_)#4275 <https://github.com/vyperlang/vyper/pull/4275>_)-Werror and -Wnone options (#4447 <https://github.com/vyperlang/vyper/pull/4447>_)json and .vyz inputs (#4370 <https://github.com/vyperlang/vyper/pull/4370>_)#4234 <https://github.com/vyperlang/vyper/pull/4234>_)#4309 <https://github.com/vyperlang/vyper/pull/4309>_)-f interface output (#4294 <https://github.com/vyperlang/vyper/pull/4294>_)#4229 <https://github.com/vyperlang/vyper/pull/4229>_)-f annotated_ast output (#4209 <https://github.com/vyperlang/vyper/pull/4209>_)#4328 <https://github.com/vyperlang/vyper/pull/4328>_)#4270 <https://github.com/vyperlang/vyper/pull/4270>_)#4338 <https://github.com/vyperlang/vyper/pull/4338>_)#4286 <https://github.com/vyperlang/vyper/pull/4286>_)setup.py (#4348 <https://github.com/vyperlang/vyper/pull/4348>_)compile_from_zip() (#4366 <https://github.com/vyperlang/vyper/pull/4366>_)raw_log() constancy check (#4201 <https://github.com/vyperlang/vyper/pull/4201>_)#4365 <https://github.com/vyperlang/vyper/pull/4365>_)#4438 <https://github.com/vyperlang/vyper/pull/4438>_)#4164 <https://github.com/vyperlang/vyper/pull/4164>_)abi_encode buffer size in external calls (#4202 <https://github.com/vyperlang/vyper/pull/4202>_)== and != bytesM folding (#4254 <https://github.com/vyperlang/vyper/pull/4254>_).vyi function body check (#4177 <https://github.com/vyperlang/vyper/pull/4177>_)#4214 <https://github.com/vyperlang/vyper/pull/4214>_)#4203 <https://github.com/vyperlang/vyper/pull/4203>_)#4486 <https://github.com/vyperlang/vyper/pull/4486>_)#4487 <https://github.com/vyperlang/vyper/pull/4487>_)#4497 <https://github.com/vyperlang/vyper/pull/4497>_)#4200 <https://github.com/vyperlang/vyper/pull/4200>_)InterfaceT.__str__ implementation (#4205 <https://github.com/vyperlang/vyper/pull/4205>_)#4210 <https://github.com/vyperlang/vyper/pull/4210>_)experimentalCodegen blank in standard json input (#4216 <https://github.com/vyperlang/vyper/pull/4216>_)#4228 <https://github.com/vyperlang/vyper/pull/4228>_)#4351 <https://github.com/vyperlang/vyper/pull/4351>_)abi_encode() method_id kwarg (#4369 <https://github.com/vyperlang/vyper/pull/4369>_)#4385 <https://github.com/vyperlang/vyper/pull/4385>_)#4343 <https://github.com/vyperlang/vyper/pull/4343>_)#4409 <https://github.com/vyperlang/vyper/pull/4409>_)#4406 <https://github.com/vyperlang/vyper/pull/4406>_)#3091 <https://github.com/vyperlang/vyper/pull/3091>_)#4451 <https://github.com/vyperlang/vyper/pull/4451>_)print() schema larger than 32 bytes (#4456 <https://github.com/vyperlang/vyper/pull/4456>_)#4462 <https://github.com/vyperlang/vyper/pull/4462>_)#4485 <https://github.com/vyperlang/vyper/pull/4485>_)#4488 <https://github.com/vyperlang/vyper/pull/4488>_)#4303 <https://github.com/vyperlang/vyper/pull/4303>_)#4494 <https://github.com/vyperlang/vyper/pull/4494>_)Patched security advisories (GHSAs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
GHSA-vgf2-gvx8-xwc3 <https://github.com/vyperlang/vyper/security/advisories/GHSA-vgf2-gvx8-xwc3>_)GHSA-4w26-8p97-f4jp <https://github.com/vyperlang/vyper/security/advisories/GHSA-4w26-8p97-f4jp>_)sqrt doesn't define rounding behavior (GHSA-2p94-8669-xg86 <https://github.com/vyperlang/vyper/security/advisories/GHSA-2p94-8669-xg86>_)for list iterator (GHSA-h33q-mhmp-8p67 <https://github.com/vyperlang/vyper/security/advisories/GHSA-h33q-mhmp-8p67>_)#4381 <https://github.com/vyperlang/vyper/pull/4381>_)DFTPass algorithm (#4255 <https://github.com/vyperlang/vyper/pull/4255>_)stack_reorder before join points (#4247 <https://github.com/vyperlang/vyper/pull/4247>_)#4478 <https://github.com/vyperlang/vyper/pull/4478>_)#4281 <https://github.com/vyperlang/vyper/pull/4281>_)#4180 <https://github.com/vyperlang/vyper/pull/4180>_)#4358 <https://github.com/vyperlang/vyper/pull/4358>_)OrderedSet.last() (#4236 <https://github.com/vyperlang/vyper/pull/4236>_)#4086 <https://github.com/vyperlang/vyper/pull/4086>_)phi\s after SCCP (#4181 <https://github.com/vyperlang/vyper/pull/4181>_)#4261 <https://github.com/vyperlang/vyper/pull/4261>_)dup_requirements analysis (#4262 <https://github.com/vyperlang/vyper/pull/4262>_)#4263 <https://github.com/vyperlang/vyper/pull/4263>_)_stack_reorder() routine (#4220 <https://github.com/vyperlang/vyper/pull/4220>_)#4068 <https://github.com/vyperlang/vyper/pull/4068>_)#4264 <https://github.com/vyperlang/vyper/pull/4264>_)#4251 <https://github.com/vyperlang/vyper/pull/4251>_)#4295 <https://github.com/vyperlang/vyper/pull/4295>_)#4329 <https://github.com/vyperlang/vyper/pull/4329>_)deploy instruction (#4318 <https://github.com/vyperlang/vyper/pull/4318>_)#4356 <https://github.com/vyperlang/vyper/pull/4356>_)#4330 <https://github.com/vyperlang/vyper/pull/4330>_)#4368 <https://github.com/vyperlang/vyper/pull/4368>_)#4246 <https://github.com/vyperlang/vyper/pull/4246>_)#4039 <https://github.com/vyperlang/vyper/pull/4039>_)#4333 <https://github.com/vyperlang/vyper/pull/4333>_)#4259 <https://github.com/vyperlang/vyper/pull/4259>_)#4307 <https://github.com/vyperlang/vyper/pull/4307>_)make_ssa pass after algebraic optimizations (#4292 <https://github.com/vyperlang/vyper/pull/4292>_)#4336 <https://github.com/vyperlang/vyper/pull/4336>_)#4321 <https://github.com/vyperlang/vyper/pull/4321>_)#4373 <https://github.com/vyperlang/vyper/pull/4373>_)venom as experimental-codegen alias (#4337 <https://github.com/vyperlang/vyper/pull/4337>_)#4403 <https://github.com/vyperlang/vyper/pull/4403>_)#4404 <https://github.com/vyperlang/vyper/pull/4404>_)#4341 <https://github.com/vyperlang/vyper/pull/4341>_)#4402 <https://github.com/vyperlang/vyper/pull/4402>_)dload instruction to venom (#4410 <https://github.com/vyperlang/vyper/pull/4410>_)#4413 <https://github.com/vyperlang/vyper/pull/4413>_)#4414 <https://github.com/vyperlang/vyper/pull/4414>_)#4265 <https://github.com/vyperlang/vyper/pull/4265>_)MakeSSA with existing phis (#4423 <https://github.com/vyperlang/vyper/pull/4423>_)#4421 <https://github.com/vyperlang/vyper/pull/4421>_)#4428 <https://github.com/vyperlang/vyper/pull/4428>_)make_nop() helper function (#4470 <https://github.com/vyperlang/vyper/pull/4470>_)#4407 <https://github.com/vyperlang/vyper/pull/4407>_)bb.mark_for_removal with make_nop (#4474 <https://github.com/vyperlang/vyper/pull/4474>_)method_id to abi_encode signature (#4355 <https://github.com/vyperlang/vyper/pull/4355>_)--venom flag in venom docs (#4353 <https://github.com/vyperlang/vyper/pull/4353>_)#4230 <https://github.com/vyperlang/vyper/pull/4230>_)#4274 <https://github.com/vyperlang/vyper/pull/4274>_)#4258 <https://github.com/vyperlang/vyper/pull/4258>_)sourceMap field descriptions (#4170 <https://github.com/vyperlang/vyper/pull/4170>_)#4183 <https://github.com/vyperlang/vyper/pull/4183>_)#4314 <https://github.com/vyperlang/vyper/pull/4314>_)#4415 <https://github.com/vyperlang/vyper/pull/4415>_)#4342 <https://github.com/vyperlang/vyper/pull/4342>_)#4448 <https://github.com/vyperlang/vyper/pull/4448>_)nonpayable internal function behaviour (#4416 <https://github.com/vyperlang/vyper/pull/4416>_)FUNDING.json for drips funding (#4167 <https://github.com/vyperlang/vyper/pull/4167>_)FUNDING.yml (#4466 <https://github.com/vyperlang/vyper/pull/4466>_)FUNDING.json for optimism RPGF (#4218 <https://github.com/vyperlang/vyper/pull/4218>_)#4467 <https://github.com/vyperlang/vyper/pull/4467>_)#4401 <https://github.com/vyperlang/vyper/pull/4401>_)coverage combine to reduce codecov uploads (#4452 <https://github.com/vyperlang/vyper/pull/4452>_)#4460 <https://github.com/vyperlang/vyper/pull/4460>_)#4150 <https://github.com/vyperlang/vyper/pull/4150>_)#4173 <https://github.com/vyperlang/vyper/pull/4173>_)#4276 <https://github.com/vyperlang/vyper/pull/4276>_)#4300 <https://github.com/vyperlang/vyper/pull/4300>_)abi_decode tests (#4096 <https://github.com/vyperlang/vyper/pull/4096>_)3.13 tests (#4386 <https://github.com/vyperlang/vyper/pull/4386>_)#4437 <https://github.com/vyperlang/vyper/pull/4437>_)#4445 <https://github.com/vyperlang/vyper/pull/4445>_)#4455 <https://github.com/vyperlang/vyper/pull/4455>_)#4457 <https://github.com/vyperlang/vyper/pull/4457>_)build job (#4473 <https://github.com/vyperlang/vyper/pull/4473>_)ASTTokens (#4364 <https://github.com/vyperlang/vyper/pull/4364>_)IRnode.from_list (#4151 <https://github.com/vyperlang/vyper/pull/4151>_)#4154 <https://github.com/vyperlang/vyper/pull/4154>_)#4244 <https://github.com/vyperlang/vyper/pull/4244>_)#4287 <https://github.com/vyperlang/vyper/pull/4287>_)#4293 <https://github.com/vyperlang/vyper/pull/4293>_)#4412 <https://github.com/vyperlang/vyper/pull/4412>_)__hash__() and __eq__() implementations (#4433 <https://github.com/vyperlang/vyper/pull/4433>_)v0.4.0 ("Nagini")
v0.4.0 represents a major overhaul to the Vyper language. Notably, it overhauls the import system and adds support for code reuse. It also adds a new, experimental backend to Vyper which lays the foundation for improved analysis, optimization and integration with third party tools.
Audits: ChainSecurity <https://github.com/vyperlang/audits/blob/master/audits/ChainSecurity_Vyper_December_2023_limited_review.pdf>, ChainSecurity 2nd audit <https://github.com/vyperlang/audits/blob/master/audits/ChainSecurity_Vyper_February_2024_limited_review.pdf>, ChainSecurity 3rd audit <https://github.com/vyperlang/audits/blob/master/audits/ChainSecurity_Vyper_April_2024_limited_review.pdf>, Statemind <https://github.com/vyperlang/audits/blob/master/audits/Statemind_Vyper_June_2024_audit.pdf>, OtterSec <https://github.com/vyperlang/audits/blob/master/audits/OtterSec_Vyper_November_2023_audit.pdf>, OtterSec 2nd audit <https://github.com/vyperlang/audits/blob/master/audits/OtterSec_Vyper_June_2024.pdf>
#4029 <https://github.com/vyperlang/vyper/pull/4029>_)#3769 <https://github.com/vyperlang/vyper/pull/3769>_)block.prevrandao (#3879 <https://github.com/vyperlang/vyper/pull/3879>_)decimal to int168 (#3696 <https://github.com/vyperlang/vyper/pull/3696>_)_abi_encode and _abi_decode (#4097 <https://github.com/vyperlang/vyper/pull/4097>_)#3930 <https://github.com/vyperlang/vyper/pull/3930>_)#4040 <https://github.com/vyperlang/vyper/pull/4040>_)#2938 <https://github.com/vyperlang/vyper/pull/2938>_)#2937 <https://github.com/vyperlang/vyper/pull/2937>_)#3777 <https://github.com/vyperlang/vyper/pull/3777>_)#3596 <https://github.com/vyperlang/vyper/pull/3596>_)enum with flag keyword (#3697 <https://github.com/vyperlang/vyper/pull/3697>_)#3350 <https://github.com/vyperlang/vyper/pull/3350>_)#3843 <https://github.com/vyperlang/vyper/pull/3843>_)#3679 <https://github.com/vyperlang/vyper/pull/3679>_)#3814 <https://github.com/vyperlang/vyper/pull/3814>_)#3454 <https://github.com/vyperlang/vyper/pull/3454>_)vyper.interfaces to ethereum.ercs (#3741 <https://github.com/vyperlang/vyper/pull/3741>_)#3804 <https://github.com/vyperlang/vyper/pull/3804>_)#3946 <https://github.com/vyperlang/vyper/pull/3946>_)vyper-serve (#3666 <https://github.com/vyperlang/vyper/pull/3666>_)#3655 <https://github.com/vyperlang/vyper/pull/3655>_)#3663 <https://github.com/vyperlang/vyper/pull/3663>_)#3919 <https://github.com/vyperlang/vyper/pull/3919>_)#3729 <https://github.com/vyperlang/vyper/pull/3729>_)#3786 <https://github.com/vyperlang/vyper/pull/3786>_)#3808 <https://github.com/vyperlang/vyper/pull/3808>_)#3725 <https://github.com/vyperlang/vyper/pull/3725>_)#3726 <https://github.com/vyperlang/vyper/pull/3726>_)#4088 <https://github.com/vyperlang/vyper/pull/4088>_)#4145 <https://github.com/vyperlang/vyper/pull/4145>_)sys.path to vyper path (#3763 <https://github.com/vyperlang/vyper/pull/3763>_)#3816 <https://github.com/vyperlang/vyper/pull/3816>_)#3871 <https://github.com/vyperlang/vyper/pull/3871>_)#3694 <https://github.com/vyperlang/vyper/pull/3694>_)#3888 <https://github.com/vyperlang/vyper/pull/3888>_)#3831 <https://github.com/vyperlang/vyper/pull/3831>_)uses analysis for nonreentrant functions (#3971 <https://github.com/vyperlang/vyper/pull/3971>_)uses error message (#3926 <https://github.com/vyperlang/vyper/pull/3926>_)uses analysis for nonreentrant functions (#3927 <https://github.com/vyperlang/vyper/pull/3927>_)#4089 <https://github.com/vyperlang/vyper/pull/4089>_)#3956 <https://github.com/vyperlang/vyper/pull/3956>_)combined_json output for CLI (#3901 <https://github.com/vyperlang/vyper/pull/3901>_)#4053 <https://github.com/vyperlang/vyper/pull/4053>_)#3669 <https://github.com/vyperlang/vyper/pull/3669>_)#3719 <https://github.com/vyperlang/vyper/pull/3719>_)#4007 <https://github.com/vyperlang/vyper/pull/4007>_)#3924 <https://github.com/vyperlang/vyper/pull/3924>_)#3895 <https://github.com/vyperlang/vyper/pull/3895>_)#3659 <https://github.com/vyperlang/vyper/pull/3659>_)make_ssa pass to venom pipeline (#3825 <https://github.com/vyperlang/vyper/pull/3825>_)mem2var and sccp passes (#3941 <https://github.com/vyperlang/vyper/pull/3941>_)#4021 <https://github.com/vyperlang/vyper/pull/4021>_)extract_literals pass (#4067 <https://github.com/vyperlang/vyper/pull/4067>_)#4049 <https://github.com/vyperlang/vyper/pull/4049>_)swap for commutative ops (#4048 <https://github.com/vyperlang/vyper/pull/4048>_)#3951 <https://github.com/vyperlang/vyper/pull/3951>_)#4054 <https://github.com/vyperlang/vyper/pull/4054>_)#3687 <https://github.com/vyperlang/vyper/pull/3687>_)deploy instruction from venom (#3703 <https://github.com/vyperlang/vyper/pull/3703>_)#3732 <https://github.com/vyperlang/vyper/pull/3732>_)#3733 <https://github.com/vyperlang/vyper/pull/3733>_)#3908 <https://github.com/vyperlang/vyper/pull/3908>_)#3915 <https://github.com/vyperlang/vyper/pull/3915>_)IRContext and IRAnalysisCache (#3983 <https://github.com/vyperlang/vyper/pull/3983>_)OrderedSet (#3833 <https://github.com/vyperlang/vyper/pull/3833>_)get_basic_block() (#4002 <https://github.com/vyperlang/vyper/pull/4002>_)#4003 <https://github.com/vyperlang/vyper/pull/4003>_)#3982 <https://github.com/vyperlang/vyper/pull/3982>_)exp in sccp (#4009 <https://github.com/vyperlang/vyper/pull/4009>_)make_ssa.py (#4012 <https://github.com/vyperlang/vyper/pull/4012>_)#4011 <https://github.com/vyperlang/vyper/pull/4011>_)cfg output format (#4010 <https://github.com/vyperlang/vyper/pull/4010>_)IRContext (#4016 <https://github.com/vyperlang/vyper/pull/4016>_)#4032 <https://github.com/vyperlang/vyper/pull/4032>_)#4028 <https://github.com/vyperlang/vyper/pull/4028>_)unique_symbols check to venom pipeline (#4149 <https://github.com/vyperlang/vyper/pull/4149>_)#4036 <https://github.com/vyperlang/vyper/pull/4036>_)venom_to_assembly (#4042 <https://github.com/vyperlang/vyper/pull/4042>_)#4055 <https://github.com/vyperlang/vyper/pull/4055>_)#4058 <https://github.com/vyperlang/vyper/pull/4058>_)#4065 <https://github.com/vyperlang/vyper/pull/4065>_)#4069 <https://github.com/vyperlang/vyper/pull/4069>_)#4098 <https://github.com/vyperlang/vyper/pull/4098>_)out_vars during calculation (#4129 <https://github.com/vyperlang/vyper/pull/4129>_)#4155 <https://github.com/vyperlang/vyper/pull/4155>_)#3685 <https://github.com/vyperlang/vyper/pull/3685>_)#3702 <https://github.com/vyperlang/vyper/pull/3702>_)djump in dense selector table (#3849 <https://github.com/vyperlang/vyper/pull/3849>_)tests/unit/compiler (#3684 <https://github.com/vyperlang/vyper/pull/3684>_)blobhash() builtin (#3962 <https://github.com/vyperlang/vyper/pull/3962>_)block.blobbasefee (#3945 <https://github.com/vyperlang/vyper/pull/3945>_)revert_on_failure kwarg for create builtins (#3844 <https://github.com/vyperlang/vyper/pull/3844>_)#3832 <https://github.com/vyperlang/vyper/pull/3832>_)#3947 <https://github.com/vyperlang/vyper/pull/3947>_)implements does not check event declarations (#4052 <https://github.com/vyperlang/vyper/pull/4052>_)shibuya (#3754 <https://github.com/vyperlang/vyper/pull/3754>_)#4158 <https://github.com/vyperlang/vyper/pull/4158>_)FUNDING.yml (#3636 <https://github.com/vyperlang/vyper/pull/3636>_)#3638 <https://github.com/vyperlang/vyper/pull/3638>_)pragma parsing (#3640 <https://github.com/vyperlang/vyper/pull/3640>_)#3660 <https://github.com/vyperlang/vyper/pull/3660>_)#4087 <https://github.com/vyperlang/vyper/pull/4087>_)#3656 <https://github.com/vyperlang/vyper/pull/3656>_)#3674 <https://github.com/vyperlang/vyper/pull/3674>_)#3676 <https://github.com/vyperlang/vyper/pull/3676>_)on_chain_market_maker.vy (#3677 <https://github.com/vyperlang/vyper/pull/3677>_)address.codehash for empty account (#3711 <https://github.com/vyperlang/vyper/pull/3711>_)#3715 <https://github.com/vyperlang/vyper/pull/3715>_)#3747 <https://github.com/vyperlang/vyper/pull/3747>_)#3745 <https://github.com/vyperlang/vyper/pull/3745>_)#3736 <https://github.com/vyperlang/vyper/pull/3736>_)#3792 <https://github.com/vyperlang/vyper/pull/3792>_)#3797 <https://github.com/vyperlang/vyper/pull/3797>_)annotated_ast flag (#3813 <https://github.com/vyperlang/vyper/pull/3813>_)#3837 <https://github.com/vyperlang/vyper/pull/3837>_)#3845 <https://github.com/vyperlang/vyper/pull/3845>_)revert_on_failure kwarg docs for create builtins (#3921 <https://github.com/vyperlang/vyper/pull/3921>_)endAuction method in example section (#3969 <https://github.com/vyperlang/vyper/pull/3969>_)#3981 <https://github.com/vyperlang/vyper/pull/3981>_)#3658 <https://github.com/vyperlang/vyper/pull/3658>_)#3680 <https://github.com/vyperlang/vyper/pull/3680>_)#3749 <https://github.com/vyperlang/vyper/pull/3749>_)raw_log() when topics are non-literals (#3977 <https://github.com/vyperlang/vyper/pull/3977>_)slice and extract32 (#3874 <https://github.com/vyperlang/vyper/pull/3874>_)#3817 <https://github.com/vyperlang/vyper/pull/3817>_)value= passing for delegate and static raw_calls (#3755 <https://github.com/vyperlang/vyper/pull/3755>_)#3976 <https://github.com/vyperlang/vyper/pull/3976>_)#4030 <https://github.com/vyperlang/vyper/pull/4030>_)#4033 <https://github.com/vyperlang/vyper/pull/4033>_)slice() (#3818 <https://github.com/vyperlang/vyper/pull/3818>_)#3738 <https://github.com/vyperlang/vyper/pull/3738>_)make_setter overlap with internal calls (#4037 <https://github.com/vyperlang/vyper/pull/4037>_)make_setter overlap in dynarray_append (#4059 <https://github.com/vyperlang/vyper/pull/4059>_)make_setter overlap in the presence of staticcall (#4128 <https://github.com/vyperlang/vyper/pull/4128>_)_abi_decode buffer overflow (#3925 <https://github.com/vyperlang/vyper/pull/3925>_)abi_decode validation (#4060 <https://github.com/vyperlang/vyper/pull/4060>_)#4091 <https://github.com/vyperlang/vyper/pull/4091>_)returndatasize check (#4144 <https://github.com/vyperlang/vyper/pull/4144>_)#3639 <https://github.com/vyperlang/vyper/pull/3639>_)#4157 <https://github.com/vyperlang/vyper/pull/4157>_)#4159 <https://github.com/vyperlang/vyper/pull/4159>_)#3671 <https://github.com/vyperlang/vyper/pull/3671>_)#3731 <https://github.com/vyperlang/vyper/pull/3731>_)sha3_64 codegen (#4063 <https://github.com/vyperlang/vyper/pull/4063>_)opcodes and opcodes_runtime outputs (#3735 <https://github.com/vyperlang/vyper/pull/3735>_)#3758 <https://github.com/vyperlang/vyper/pull/3758>_)#3764 <https://github.com/vyperlang/vyper/pull/3764>_)#3718 <https://github.com/vyperlang/vyper/pull/3718>_)#3791 <https://github.com/vyperlang/vyper/pull/3791>_)#3798 <https://github.com/vyperlang/vyper/pull/3798>_)#3805 <https://github.com/vyperlang/vyper/pull/3805>_)#3877 <https://github.com/vyperlang/vyper/pull/3877>_)#3893 <https://github.com/vyperlang/vyper/pull/3893>_)#3906 <https://github.com/vyperlang/vyper/pull/3906>_)VersionException with source info (#3920 <https://github.com/vyperlang/vyper/pull/3920>_)pow folding when args are not literals (#3949 <https://github.com/vyperlang/vyper/pull/3949>_)STORAGE location (#4015 <https://github.com/vyperlang/vyper/pull/4015>_)Patched security advisories (GHSAs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
slice() function can be overflowed (GHSA-9x7f-gwxq-6f2c <https://github.com/vyperlang/vyper/security/advisories/GHSA-9x7f-gwxq-6f2c>_)concat built-in can corrupt memory (GHSA-2q8v-3gqq-4f8p <https://github.com/vyperlang/vyper/security/advisories/GHSA-2q8v-3gqq-4f8p>_)raw_call value= kwargs not disabled for static and delegate calls (GHSA-x2c2-q32w-4w6m <https://github.com/vyperlang/vyper/security/advisories/GHSA-x2c2-q32w-4w6m>_)GHSA-52xq-j7v9-v4v2 <https://github.com/vyperlang/vyper/security/advisories/GHSA-52xq-j7v9-v4v2>_)range(start, start + N) reverts for negative numbers (GHSA-ppx5-q359-pvwj <https://github.com/vyperlang/vyper/security/advisories/GHSA-ppx5-q359-pvwj>_)raw_log (GHSA-xchq-w5r3-4wg3 <https://github.com/vyperlang/vyper/security/advisories/GHSA-xchq-w5r3-4wg3>_)slice start/length args in certain cases (GHSA-r56x-j438-vw5m <https://github.com/vyperlang/vyper/security/advisories/GHSA-r56x-j438-vw5m>_)sqrt() built in argument (GHSA-5jrj-52x8-m64h <https://github.com/vyperlang/vyper/security/advisories/GHSA-5jrj-52x8-m64h>_)create_from_blueprint (GHSA-3whq-64q2-qfj6 <https://github.com/vyperlang/vyper/security/advisories/GHSA-3whq-64q2-qfj6>_)sha3 codegen bug (GHSA-6845-xw22-ffxv <https://github.com/vyperlang/vyper/security/advisories/GHSA-6845-xw22-ffxv>_)extract32 can read dirty memory (GHSA-4hwq-4cpm-8vmx <https://github.com/vyperlang/vyper/security/advisories/GHSA-4hwq-4cpm-8vmx>_)_abi_decode Memory Overflow (GHSA-9p8r-4xp4-gw5w <https://github.com/vyperlang/vyper/security/advisories/GHSA-9p8r-4xp4-gw5w>_)GHSA-gp3w-2v2m-p686 <https://github.com/vyperlang/vyper/security/advisories/GHSA-gp3w-2v2m-p686>_)#3891 <https://github.com/vyperlang/vyper/pull/3891>_)#4008 <https://github.com/vyperlang/vyper/pull/4008>_)-v and -O to the CLI (#3695 <https://github.com/vyperlang/vyper/pull/3695>_)bb and bb_runtime output options (#3700 <https://github.com/vyperlang/vyper/pull/3700>_)#3657 <https://github.com/vyperlang/vyper/pull/3657>_)CompilerData (#3803 <https://github.com/vyperlang/vyper/pull/3803>_)#3809 <https://github.com/vyperlang/vyper/pull/3809>_)#3810 <https://github.com/vyperlang/vyper/pull/3810>_)#3790 <https://github.com/vyperlang/vyper/pull/3790>_)#3829 <https://github.com/vyperlang/vyper/pull/3829>_)node_id map to source map (#3811 <https://github.com/vyperlang/vyper/pull/3811>_)hex-ir CLI flag (#3942 <https://github.com/vyperlang/vyper/pull/3942>_)#3789 <https://github.com/vyperlang/vyper/pull/3789>_)#4014 <https://github.com/vyperlang/vyper/pull/4014>_)outputSelection (#4094 <https://github.com/vyperlang/vyper/pull/4094>_)#3602 <https://github.com/vyperlang/vyper/pull/3602>_)#3780 <https://github.com/vyperlang/vyper/pull/3780>_)#3781 <https://github.com/vyperlang/vyper/pull/3781>_)VyperNode.deepcopy (#3784 <https://github.com/vyperlang/vyper/pull/3784>_)#3785 <https://github.com/vyperlang/vyper/pull/3785>_)IRnode.__deepcopy__ (#3761 <https://github.com/vyperlang/vyper/pull/3761>_)eth-tester and interface with evm backend directly (#3846 <https://github.com/vyperlang/vyper/pull/3846>_)#3706 <https://github.com/vyperlang/vyper/pull/3706>_)abi_decode spec test (#4095 <https://github.com/vyperlang/vyper/pull/4095>_)abi_decode fuzzer tests (#4153 <https://github.com/vyperlang/vyper/pull/4153>_)#3861 <https://github.com/vyperlang/vyper/pull/3861>_)#3650 <https://github.com/vyperlang/vyper/pull/3650>_)slice (#3633 <https://github.com/vyperlang/vyper/pull/3633>_)#3662 <https://github.com/vyperlang/vyper/pull/3662>_)#3664 <https://github.com/vyperlang/vyper/pull/3664>_)#3683 <https://github.com/vyperlang/vyper/pull/3683>_)#3773 <https://github.com/vyperlang/vyper/pull/3773>_)#3883 <https://github.com/vyperlang/vyper/pull/3883>_)#3821 <https://github.com/vyperlang/vyper/pull/3821>_)#3860 <https://github.com/vyperlang/vyper/pull/3860>_)#3863 <https://github.com/vyperlang/vyper/pull/3863>_)--dist worksteal from latest xdist (#3869 <https://github.com/vyperlang/vyper/pull/3869>_)#3771 <https://github.com/vyperlang/vyper/pull/3771>_)#4006 <https://github.com/vyperlang/vyper/pull/4006>_)#3704 <https://github.com/vyperlang/vyper/pull/3704>_)#3793 <https://github.com/vyperlang/vyper/pull/3793>_)#3826 <https://github.com/vyperlang/vyper/pull/3826>_)#3838 <https://github.com/vyperlang/vyper/pull/3838>_)#3807 <https://github.com/vyperlang/vyper/pull/3807>_)#3834 <https://github.com/vyperlang/vyper/pull/3834>_)#3839 <https://github.com/vyperlang/vyper/pull/3839>_)#3840 <https://github.com/vyperlang/vyper/pull/3840>_)#3842 <https://github.com/vyperlang/vyper/pull/3842>_)#3887 <https://github.com/vyperlang/vyper/pull/3887>_)#3892 <https://github.com/vyperlang/vyper/pull/3892>_)xfail_strict, clean up setup.cfg (#3889 <https://github.com/vyperlang/vyper/pull/3889>_)#3903 <https://github.com/vyperlang/vyper/pull/3903>_)#3904 <https://github.com/vyperlang/vyper/pull/3904>_)#3909 <https://github.com/vyperlang/vyper/pull/3909>_)#3918 <https://github.com/vyperlang/vyper/pull/3918>_)#3912 <https://github.com/vyperlang/vyper/pull/3912>_)#3937 <https://github.com/vyperlang/vyper/pull/3937>_)#3940 <https://github.com/vyperlang/vyper/pull/3940>_)#4057 <https://github.com/vyperlang/vyper/pull/4057>_)#4005 <https://github.com/vyperlang/vyper/pull/4005>_)#3995 <https://github.com/vyperlang/vyper/pull/3995>_)#4064 <https://github.com/vyperlang/vyper/pull/4064>_)#4025 <https://github.com/vyperlang/vyper/pull/4025>_)#4004 <https://github.com/vyperlang/vyper/pull/4004>_)eval_once sanity fences to more builtins (#3835 <https://github.com/vyperlang/vyper/pull/3835>_)#3603 <https://github.com/vyperlang/vyper/pull/3603>_)#3929 <https://github.com/vyperlang/vyper/pull/3929>_)#3705 <https://github.com/vyperlang/vyper/pull/3705>_)annotation.py and local.py (#3456 <https://github.com/vyperlang/vyper/pull/3456>_)#3998 <https://github.com/vyperlang/vyper/pull/3998>_)VyperNode properties (#3999 <https://github.com/vyperlang/vyper/pull/3999>_)#3757 <https://github.com/vyperlang/vyper/pull/3757>_)#3724 <https://github.com/vyperlang/vyper/pull/3724>_)#3721 <https://github.com/vyperlang/vyper/pull/3721>_)VyperType (#3559 <https://github.com/vyperlang/vyper/pull/3559>_)#3689 <https://github.com/vyperlang/vyper/pull/3689>_)#3064 <https://github.com/vyperlang/vyper/pull/3064>_)#3708 <https://github.com/vyperlang/vyper/pull/3708>_)vyper_warn() (#3800 <https://github.com/vyperlang/vyper/pull/3800>_)#3848 <https://github.com/vyperlang/vyper/pull/3848>_)#3541 <https://github.com/vyperlang/vyper/pull/3541>_)ExprVisitor type validation (#3739 <https://github.com/vyperlang/vyper/pull/3739>_)#3759 <https://github.com/vyperlang/vyper/pull/3759>_)#3768 <https://github.com/vyperlang/vyper/pull/3768>_)#3770 <https://github.com/vyperlang/vyper/pull/3770>_)#3775 <https://github.com/vyperlang/vyper/pull/3775>_)get_search_paths() for vyper cli (#3778 <https://github.com/vyperlang/vyper/pull/3778>_)#3794 <https://github.com/vyperlang/vyper/pull/3794>_)#3802 <https://github.com/vyperlang/vyper/pull/3802>_)#3822 <https://github.com/vyperlang/vyper/pull/3822>_)#3824 <https://github.com/vyperlang/vyper/pull/3824>_)#3885 <https://github.com/vyperlang/vyper/pull/3885>_)vyper-serve from setup.py (#3936 <https://github.com/vyperlang/vyper/pull/3936>_)#3953 <https://github.com/vyperlang/vyper/pull/3953>_)#3968 <https://github.com/vyperlang/vyper/pull/3968>_)v0.3.10 ("Black Adder")
v0.3.10 is a performance focused release that additionally ships numerous bugfixes. It adds a codesize optimization mode (#3493 <https://github.com/vyperlang/vyper/pull/3493>), adds new vyper-specific #pragma directives (#3493 <https://github.com/vyperlang/vyper/pull/3493>), uses Cancun's MCOPY opcode for some compiler generated code (#3483 <https://github.com/vyperlang/vyper/pull/3483>), and generates selector tables which now feature O(1) performance (#3496 <https://github.com/vyperlang/vyper/pull/3496>).
Audits: OtterSec <https://github.com/vyperlang/audits/blob/master/audits/OtterSec_Vyper_September_2023_audit.pdf>, CodeHawks <https://github.com/vyperlang/audits/blob/master/audits/CodeHawks_Vyper_September_2023_competitive_audit.md>, ChainSecurity <https://github.com/vyperlang/audits/blob/master/audits/ChainSecurity_Vyper_September_2023_limited_review.pdf>__
#3584 <https://github.com/vyperlang/vyper/pull/3584>_)#3470 <https://github.com/vyperlang/vyper/pull/3470>_)#3471 <https://github.com/vyperlang/vyper/pull/3471>_)#3605 <https://github.com/vyperlang/vyper/pull/3605>_)#3496 <https://github.com/vyperlang/vyper/pull/3496>_)#3537 <https://github.com/vyperlang/vyper/pull/3537>, #3551 <https://github.com/vyperlang/vyper/pull/3551>)#3493 <https://github.com/vyperlang/vyper/pull/3493>_)#3483 <https://github.com/vyperlang/vyper/pull/3483>, #3499 <https://github.com/vyperlang/vyper/pull/3499>, #3525 <https://github.com/vyperlang/vyper/pull/3525>_)ecrecover() behavior when signature is invalid (GHSA-f5x6-7qgp-jhf3 <https://github.com/vyperlang/vyper/security/advisories/GHSA-f5x6-7qgp-jhf3>, #3586 <https://github.com/vyperlang/vyper/pull/3586>)#3583 <https://github.com/vyperlang/vyper/pull/3583>, #3587 <https://github.com/vyperlang/vyper/pull/3587>)msize (#3610 <https://github.com/vyperlang/vyper/pull/3610>_)_abi_decode() input validation in certain complex expressions (#3626 <https://github.com/vyperlang/vyper/pull/3626>_)#3485 <https://github.com/vyperlang/vyper/pull/3485>_)#3473 <https://github.com/vyperlang/vyper/pull/3473>_)#3490 <https://github.com/vyperlang/vyper/pull/3490>_)#3484 <https://github.com/vyperlang/vyper/pull/3484>_)#3572 <https://github.com/vyperlang/vyper/pull/3572>_)#3570 <https://github.com/vyperlang/vyper/pull/3570>_)_abi_decode() arguments (#3626 <https://github.com/vyperlang/vyper/pull/3623>__)#3573 <https://github.com/vyperlang/vyper/pull/3573>_)0.2.15, 0.2.16, and 0.3.0 (#3553 <https://github.com/vyperlang/vyper/pull/3553>_)#3545 <https://github.com/vyperlang/vyper/pull/3545>_)#3547 <https://github.com/vyperlang/vyper/pull/3547>_)#3491 <https://github.com/vyperlang/vyper/pull/3491>_)#3552 <https://github.com/vyperlang/vyper/pull/3552>_)#3511 <https://github.com/vyperlang/vyper/pull/3511>_)#3510 <https://github.com/vyperlang/vyper/pull/3510>_)ecrecover in docs (#3539 <https://github.com/vyperlang/vyper/pull/3539>_)asm option to cli help (#3585 <https://github.com/vyperlang/vyper/pull/3585>_)#3542 <https://github.com/vyperlang/vyper/pull/3542>_)#3536 <https://github.com/vyperlang/vyper/pull/3536>_)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.
Audits: ChainSecurity <https://github.com/vyperlang/audits/blob/master/audits/ChainSecurity_Vyper_May_2023_limited_review.pdf>__
Fixes:
#3450 <https://github.com/vyperlang/vyper/pull/3450>_)#3463 <https://github.com/vyperlang/vyper/pull/3463>_)v0.3.8
Date released: 2023-05-23
Audits: ChainSecurity <https://github.com/vyperlang/audits/blob/master/audits/ChainSecurity_Vyper_January_2023_limited_review.pdf>, ChainSecurity 2nd audit <https://github.com/vyperlang/audits/blob/master/audits/ChainSecurity_Vyper_March_2023_limited_review.pdf>
Non-breaking changes and improvements:
transient storage keyword (#3373 <https://github.com/vyperlang/vyper/pull/3373>_)#3398 <https://github.com/vyperlang/vyper/pull/3398>_)raw_revert() builtin (#3136 <https://github.com/vyperlang/vyper/pull/3136>_)#3019 <https://github.com/vyperlang/vyper/pull/3019>_)send() gas stipend configurable (#3158 <https://github.com/vyperlang/vyper/pull/3158>_)push0 opcode (#3361 <https://github.com/vyperlang/vyper/pull/3361>_)#3129 <https://github.com/vyperlang/vyper/pull/3129>_)#3325 <https://github.com/vyperlang/vyper/pull/3325>_)aarch64 (#2687 <https://github.com/vyperlang/vyper/pull/2687>_)Note that with the addition of push0 opcode, shanghai is now the default compilation target for vyper. When deploying to a chain which does not support shanghai, it is recommended to set --evm-version to paris, otherwise it could result in hard-to-debug errors.
Major refactoring PRs:
#2974 <https://github.com/vyperlang/vyper/pull/2974>_)#3182 <https://github.com/vyperlang/vyper/pull/3182>_)GlobalContext (#3209 <https://github.com/vyperlang/vyper/pull/3209>_)FunctionSignature (#3390 <https://github.com/vyperlang/vyper/pull/3390>_)Notable fixes:
#3410 <https://github.com/vyperlang/vyper/pull/3410>_)#3409 <https://github.com/vyperlang/vyper/pull/3409>_)max_outsize=0 and revert_on_failure=False (GHSA-w9g2-3w7p-72g9 <https://github.com/vyperlang/vyper/security/advisories/GHSA-w9g2-3w7p-72g9>_)GHSA-mgv8-gggw-mrg6 <https://github.com/vyperlang/vyper/security/advisories/GHSA-mgv8-gggw-mrg6>_)GHSA-3p37-3636-q8wv <https://github.com/vyperlang/vyper/security/advisories/GHSA-3p37-3636-q8wv>_)for i in range(x, x+N) (GHSA-6r8q-pfpv-7cgj <https://github.com/vyperlang/vyper/security/advisories/GHSA-6r8q-pfpv-7cgj>_)GHSA-ph9x-4vc9-m39g <https://github.com/vyperlang/vyper/security/advisories/GHSA-ph9x-4vc9-m39g>_)#3104 <https://github.com/vyperlang/vyper/pull/3104>, #3408 <https://github.com/vyperlang/vyper/pull/3408>, cf. GHSA-vxmm-cwh2-q762 <https://github.com/vyperlang/vyper/security/advisories/GHSA-vxmm-cwh2-q762>_)Other docs updates, chores and fixes:
#3370 <https://github.com/vyperlang/vyper/pull/3370>_)vyper-serve output (#3338 <https://github.com/vyperlang/vyper/pull/3338>_)custom: natspec tags (#3403 <https://github.com/vyperlang/vyper/pull/3403>_)vyper_json output (#3333 <https://github.com/vyperlang/vyper/pull/3333>_)#3388 <https://github.com/vyperlang/vyper/pull/3388>_)selfdestruct usage (#3372 <https://github.com/vyperlang/vyper/pull/3372>_)#3117 <https://github.com/vyperlang/vyper/pull/3117>_)break is outside of a loop (#3177 <https://github.com/vyperlang/vyper/pull/3177>_)#3167 <https://github.com/vyperlang/vyper/pull/3167>_)#3154 <https://github.com/vyperlang/vyper/pull/3154>_)#3174 <https://github.com/vyperlang/vyper/pull/3174>_)#3219 <https://github.com/vyperlang/vyper/pull/3219>_)UNREACHABLE (#3194 <https://github.com/vyperlang/vyper/pull/3194>_)#3256 <https://github.com/vyperlang/vyper/pull/3256>_)not operator on numeric types (#3231 <https://github.com/vyperlang/vyper/pull/3231>_)#3242 <https://github.com/vyperlang/vyper/pull/3242>_)#3318 <https://github.com/vyperlang/vyper/pull/3318>_)#3375 <https://github.com/vyperlang/vyper/pull/3375>_)#3202 <https://github.com/vyperlang/vyper/pull/3202>_)#3197 <https://github.com/vyperlang/vyper/pull/3197>_)#3235 <https://github.com/vyperlang/vyper/pull/3235>_)not constant folding (#3222 <https://github.com/vyperlang/vyper/pull/3222>_)#3261 <https://github.com/vyperlang/vyper/pull/3261>_)#3266 <https://github.com/vyperlang/vyper/pull/3266>_)#3283 <https://github.com/vyperlang/vyper/pull/3283>_)#3276 <https://github.com/vyperlang/vyper/pull/3276>_)empty() for HashMaps (#3303 <https://github.com/vyperlang/vyper/pull/3303>_)#3377 <https://github.com/vyperlang/vyper/pull/3377>_)pure, view functions (#3424 <https://github.com/vyperlang/vyper/pull/3424>_)#3412 <https://github.com/vyperlang/vyper/pull/3412>_)#3435 <https://github.com/vyperlang/vyper/pull/3435>_)#3205 <https://github.com/vyperlang/vyper/pull/3205>_)id param in URI event of ERC1155ownable (#3203 <https://github.com/vyperlang/vyper/pull/3203>_)asset function to ERC4626 built-in interface (#3295 <https://github.com/vyperlang/vyper/pull/3295>_)skip_contract_check=True can result in undefined behavior (#3386 <https://github.com/vyperlang/vyper/pull/3386>_)custom NatSpec tag to docs (#3404 <https://github.com/vyperlang/vyper/pull/3404>_)uint256_addmod doc (#3300 <https://github.com/vyperlang/vyper/pull/3300>_)#3122 <https://github.com/vyperlang/vyper/pull/3122>_)slice() length documentation caveats (#3152 <https://github.com/vyperlang/vyper/pull/3152>_)blockhash to reflect revert behaviour (#3168 <https://github.com/vyperlang/vyper/pull/3168>_)#3121 <https://github.com/vyperlang/vyper/pull/3121>, #3134 <https://github.com/vyperlang/vyper/pull/3134>, #3312 <https://github.com/vyperlang/vyper/pull/3312>, #3304 <https://github.com/vyperlang/vyper/pull/3304>, #3240 <https://github.com/vyperlang/vyper/pull/3240>, #3264 <https://github.com/vyperlang/vyper/pull/3264>, #3343 <https://github.com/vyperlang/vyper/pull/3343>, #3307 <https://github.com/vyperlang/vyper/pull/3307>, #3313 <https://github.com/vyperlang/vyper/pull/3313>_ and #3215 <https://github.com/vyperlang/vyper/pull/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 <https://github.com/vyperlang/vyper/compare/v0.3.7...v0.3.8>__. Special thanks to contributions from @tserg, @trocher, @z80dev, @emc415 and @benber86 in this release!
New Contributors:
#3128 <https://github.com/vyperlang/vyper/pull/3128>_)#3124 <https://github.com/vyperlang/vyper/pull/3124>_)#3134 <https://github.com/vyperlang/vyper/pull/3134>_)#3149 <https://github.com/vyperlang/vyper/pull/3149>_)#3168 <https://github.com/vyperlang/vyper/pull/3168>_)#3158 <https://github.com/vyperlang/vyper/pull/3158>_)#3147 <https://github.com/vyperlang/vyper/pull/3147>_)#3224 <https://github.com/vyperlang/vyper/pull/3224>_)#3263 <https://github.com/vyperlang/vyper/pull/3263>_)#3257 <https://github.com/vyperlang/vyper/pull/3257>_)#2687 <https://github.com/vyperlang/vyper/pull/2687>_)v0.3.7
Date released: 2022-09-26
Breaking changes:
#3071 <https://github.com/vyperlang/vyper/pull/3071>_)#3090 <https://github.com/vyperlang/vyper/pull/3090>_)Non-breaking changes and improvements:
Crowdfund.finalize() (#3058 <https://github.com/vyperlang/vyper/pull/3058>_)#3076 <https://github.com/vyperlang/vyper/pull/3076>_)#3065 <https://github.com/vyperlang/vyper/pull/3065>_)isqrt() builtin (#3074 <https://github.com/vyperlang/vyper/pull/3074>) (#3069 <https://github.com/vyperlang/vyper/pull/3069>)block.prevrandao as alias for block.difficulty (#3085 <https://github.com/vyperlang/vyper/pull/3085>_)epsilon() builtin (#3057 <https://github.com/vyperlang/vyper/pull/3057>_)#3084 <https://github.com/vyperlang/vyper/pull/3084>_)#3024 <https://github.com/vyperlang/vyper/pull/3024>_)#3107 <https://github.com/vyperlang/vyper/pull/3107>_)Bugfixes:
#3061 <https://github.com/vyperlang/vyper/pull/3061>_)#3079 <https://github.com/vyperlang/vyper/pull/3079>) (#3077 <https://github.com/vyperlang/vyper/pull/3077>)Additional changes and improvements:
#3095 <https://github.com/vyperlang/vyper/pull/3095>_)#3031 <https://github.com/vyperlang/vyper/pull/3031>_)#3072 <https://github.com/vyperlang/vyper/pull/3072>_)#3033 <https://github.com/vyperlang/vyper/pull/3033>_)#3092 <https://github.com/vyperlang/vyper/pull/3092>_)#3082 <https://github.com/vyperlang/vyper/pull/3082>_)#3106 <https://github.com/vyperlang/vyper/pull/3106>_)New Contributors
#3107 <https://github.com/vyperlang/vyper/pull/3107>_#3106 <https://github.com/vyperlang/vyper/pull/3106>_#3085 <https://github.com/vyperlang/vyper/pull/3085>_#3058 <https://github.com/vyperlang/vyper/pull/3058>_#3057 <https://github.com/vyperlang/vyper/pull/3057>_#3024 <https://github.com/vyperlang/vyper/pull/3024>_#3072 <https://github.com/vyperlang/vyper/pull/3072>_#3069 <https://github.com/vyperlang/vyper/pull/3069>_Special thanks to returning contributors @tserg, @pandadefi, and @delaaxe.
v0.3.6
Date released: 2022-08-07
Bugfixes:
in expressions when list members are variables (#3035 <https://github.com/vyperlang/vyper/pull/3035>_)v0.3.5
THIS RELEASE HAS BEEN PULLED
Date released: 2022-08-05
Non-breaking changes and improvements:
#3001 <https://github.com/vyperlang/vyper/pull/3001>_)create_from_blueprint (#2996 <https://github.com/vyperlang/vyper/pull/2996>_)#3010 <https://github.com/vyperlang/vyper/pull/3010>_)self (#2998 <https://github.com/vyperlang/vyper/pull/2998>_)empty() in constant definitions and in default argument position (#3008 <https://github.com/vyperlang/vyper/pull/3008>_)self address in pure functions (#3027 <https://github.com/vyperlang/vyper/pull/3027>_)v0.3.4
Date released: 2022-07-27
Audits: ChainSecurity <https://github.com/vyperlang/audits/blob/master/audits/ChainSecurity_Vyper_July_2022_limited_review.pdf>__
Non-breaking changes and improvements:
#2874 <https://github.com/vyperlang/vyper/pull/2874>, #2915 <https://github.com/vyperlang/vyper/pull/2915>, #2925 <https://github.com/vyperlang/vyper/pull/2925>, #2977 <https://github.com/vyperlang/vyper/pull/2977>)_abi_decode builtin (#2882 <https://github.com/vyperlang/vyper/pull/2882>_)create_from_blueprint and create_copy_of builtins (#2895 <https://github.com/vyperlang/vyper/pull/2895>_)default_return_value kwarg for calls (#2839 <https://github.com/vyperlang/vyper/pull/2839>_)min_value and max_value builtins for numeric types (#2935 <https://github.com/vyperlang/vyper/pull/2935>_)uint2str builtin (#2879 <https://github.com/vyperlang/vyper/pull/2879>_)#2860 <https://github.com/vyperlang/vyper/pull/2860>_)Other fixes and improvements:
#2496 <https://github.com/vyperlang/vyper/pull/2496>_)#2843 <https://github.com/vyperlang/vyper/pull/2843>_)msg.data in raw_call without slice (#2902 <https://github.com/vyperlang/vyper/pull/2902>_)#2911 <https://github.com/vyperlang/vyper/pull/2911>_)#2817 <https://github.com/vyperlang/vyper/pull/2817>_)print (#2833 <https://github.com/vyperlang/vyper/pull/2833>_)error_map output format for tooling consumption (#2939 <https://github.com/vyperlang/vyper/pull/2939>_)GHSA-4v9q-cgpw-cf38 <https://github.com/vyperlang/vyper/security/advisories/GHSA-4v9q-cgpw-cf38>_)#2824 <https://github.com/vyperlang/vyper/pull/2824>_)@nonreentrant on view functions (#2921 <https://github.com/vyperlang/vyper/pull/2921>_)shift() support for signed integers (#2964 <https://github.com/vyperlang/vyper/pull/2964>_)#2922 <https://github.com/vyperlang/vyper/pull/2922>_)#2983 <https://github.com/vyperlang/vyper/pull/2983>_)#2647 <https://github.com/vyperlang/vyper/pull/2647>, #2868 <https://github.com/vyperlang/vyper/pull/2868>, #2914 <https://github.com/vyperlang/vyper/pull/2914>, #2843 <https://github.com/vyperlang/vyper/pull/2843>, #2944 <https://github.com/vyperlang/vyper/pull/2944>_)#2838 <https://github.com/vyperlang/vyper/pull/2838>_)#2981 <https://github.com/vyperlang/vyper/pull/2981>_)vyper-ir binary to fang (#2936 <https://github.com/vyperlang/vyper/pull/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 <https://github.com/vyperlang/vyper/issues/2820>_
Other fixes and improvements:
print built-in which allows printing debugging messages in hardhat. (#2818 <https://github.com/vyperlang/vyper/pull/2818>_)#2798 <https://github.com/vyperlang/vyper/pull/2798>, #2805 <https://github.com/vyperlang/vyper/pull/2805>)v0.3.2
Date released: 2022-04-17
Breaking changes:
decimal type (#2730 <https://github.com/vyperlang/vyper/pull/2730>_)convert builtin (#2694 <https://github.com/vyperlang/vyper/pull/2694>_)#2736 <https://github.com/vyperlang/vyper/pull/2736>, #2872 <https://github.com/vyperlang/vyper/pull/2782>)Non-breaking changes and improvements:
#2556 <https://github.com/vyperlang/vyper/pull/2556>, #2606 <https://github.com/vyperlang/vyper/pull/2606>, #2615 <https://github.com/vyperlang/vyper/pull/2615>_)#2705 <https://github.com/vyperlang/vyper/pull/2705>_)#2593 <https://github.com/vyperlang/vyper/pull/2593>_)<address>.code attribute (#2583 <https://github.com/vyperlang/vyper/pull/2583>_)tx.gasprice builtin (#2624 <https://github.com/vyperlang/vyper/pull/2624>_)#2617 <https://github.com/vyperlang/vyper/pull/2617>_)skip_contract_check kwarg (#2551 <https://github.com/vyperlang/vyper/pull/2551>_)#2628 <https://github.com/vyperlang/vyper/pull/2628>_)metadata output format (#2597 <https://github.com/vyperlang/vyper/pull/2597>_)msg.* variables in internal functions (#2632 <https://github.com/vyperlang/vyper/pull/2632>_)unsafe_ arithmetic builtins (#2629 <https://github.com/vyperlang/vyper/pull/2629>_)#2598 <https://github.com/vyperlang/vyper/pull/2598>_)select opcode to Vyper IR (#2690 <https://github.com/vyperlang/vyper/pull/2690>_)#2616 <https://github.com/vyperlang/vyper/pull/2616>_)#2806 <https://github.com/vyperlang/vyper/pull/2806>_)Notable Fixes:
GHSA-4mrx-6fxm-8jpg <https://github.com/vyperlang/vyper/security/advisories/GHSA-4mrx-6fxm-8jpg>, GHSA-j2x6-9323-fp7h <https://github.com/vyperlang/vyper/security/advisories/GHSA-j2x6-9323-fp7h>)GHSA-7vrm-3jc8-5wwm <https://github.com/vyperlang/vyper/security/advisories/GHSA-7vrm-3jc8-5wwm>_)#2580 <https://github.com/vyperlang/vyper/pull/2580>, #2603 <https://github.com/vyperlang/vyper/pull/2603>)#2627 <https://github.com/vyperlang/vyper/pull/2627>_)#2699 <https://github.com/vyperlang/vyper/pull/2699>_)Lots of optimizations, refactoring and other fixes made it into this release! For the full list, please see the changelog <https://github.com/vyperlang/vyper/compare/v0.3.1...v0.3.2>__.
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:
#2479 <https://github.com/vyperlang/vyper/pull/2479>_)Non-breaking changes and improvements:
#2466 <https://github.com/vyperlang/vyper/pull/2466>_)#2477 <https://github.com/vyperlang/vyper/pull/2477>_)#2495 <https://github.com/vyperlang/vyper/pull/2495>_)#2482 <https://github.com/vyperlang/vyper/pull/2482>_)#2531 <https://github.com/vyperlang/vyper/pull/2531>_)#2486 <https://github.com/vyperlang/vyper/pull/2486>_)#2467 <https://github.com/vyperlang/vyper/pull/2467>, #2493 <https://github.com/vyperlang/vyper/pull/2493>)#2488 <https://github.com/vyperlang/vyper/pull/2488>_)#2506 <https://github.com/vyperlang/vyper/pull/2506>_)#2510 <https://github.com/vyperlang/vyper/pull/2510>_)#2481 <https://github.com/vyperlang/vyper/pull/2481>_)#2532 <https://github.com/vyperlang/vyper/pull/2532>_)#2522 <https://github.com/vyperlang/vyper/pull/2522>_)#2494 <https://github.com/vyperlang/vyper/pull/2494>_)Fixes:
#2509 <https://github.com/vyperlang/vyper/pull/2509>_)#2500 <https://github.com/vyperlang/vyper/pull/2500>_)#2485 <https://github.com/vyperlang/vyper/pull/2485>_)#2526 <https://github.com/vyperlang/vyper/pull/2526>_)#2515 <https://github.com/vyperlang/vyper/pull/2515>_)#2533 <https://github.com/vyperlang/vyper/pull/2533>_)#2534 <https://github.com/vyperlang/vyper/pull/2534>_)#2439 <https://github.com/vyperlang/vyper/pull/2439>, #2514 <https://github.com/vyperlang/vyper/pull/2514>)Special thanks to @skellet0r for some major features in this release!
v0.3.0
⚠️ A critical security vulnerability has been discovered in this version and we strongly recommend using version 0.3.1 <https://github.com/vyperlang/vyper/releases/tag/v0.3.1>_ or higher. For more information, please see the Security Advisory GHSA-5824-cm3x-3c38 <https://github.com/vyperlang/vyper/security/advisories/GHSA-5824-cm3x-3c38>_.
Date released: 2021-10-04
Breaking changes:
#2457 <https://github.com/vyperlang/vyper/pull/2457>_)#2462 <https://github.com/vyperlang/vyper/pull/2462>_)Non-breaking changes and improvements:
#2447 <https://github.com/vyperlang/vyper/pull/2447>_)#2154 <https://github.com/vyperlang/vyper/issues/2154>, #2190 <https://github.com/vyperlang/vyper/issues/2190>)#2460 <https://github.com/vyperlang/vyper/pull/2460>_)#2468 <https://github.com/vyperlang/vyper/pull/2468>_)#2452 <https://github.com/vyperlang/vyper/pull/2452>_)#2450 <https://github.com/vyperlang/vyper/pull/2450>_)Fixes:
#2459 <https://github.com/vyperlang/vyper/issues/2459>)#2458 <https://github.com/vyperlang/vyper/issues/2458>_)#2454 <https://github.com/vyperlang/vyper/issues/2454>_)#2455 <https://github.com/vyperlang/vyper/issues/2455>_)#2456 <https://github.com/vyperlang/vyper/issues/2456>_)GHSA-c7pr-343r-5c46 <https://github.com/vyperlang/vyper/security/advisories/GHSA-c7pr-343r-5c46>_)GHSA-xv8x-pr4h-73jv <https://github.com/vyperlang/vyper/security/advisories/GHSA-xv8x-pr4h-73jv>_)Special thanks to contributions from @skellet0r and @benjyz for this release!
v0.2.16
⚠️ A critical security vulnerability has been discovered in this version and we strongly recommend using version 0.3.1 <https://github.com/vyperlang/vyper/releases/tag/v0.3.1>_ or higher. For more information, please see the Security Advisory GHSA-5824-cm3x-3c38 <https://github.com/vyperlang/vyper/security/advisories/GHSA-5824-cm3x-3c38>_.
Date released: 2021-08-27
Non-breaking changes and improvements:
#2401 <https://github.com/vyperlang/vyper/pull/2401>)#2433 <https://github.com/vyperlang/vyper/pull/2433>_)#2416 <https://github.com/vyperlang/vyper/pull/2416>_)#2403 <https://github.com/vyperlang/vyper/pull/2403>_)#2411 <https://github.com/vyperlang/vyper/pull/2411>_)#2405 <https://github.com/vyperlang/vyper/pull/2405>, #2422 <https://github.com/vyperlang/vyper/pull/2422>, #2425 <https://github.com/vyperlang/vyper/pull/2425>_)Fixes:
#2426 <https://github.com/vyperlang/vyper/pull/2426>_)#2419 <https://github.com/vyperlang/vyper/pull/2419>_)#2397 <https://github.com/vyperlang/vyper/pull/2397>_)#2412 <https://github.com/vyperlang/vyper/pull/2412>_)Special thanks to contributions from @skellet0r, @sambacha and @milancermak for this release!
v0.2.15
⚠️ A critical security vulnerability has been discovered in this version and we strongly recommend using version 0.3.1 <https://github.com/vyperlang/vyper/releases/tag/v0.3.1>_ or higher. For more information, please see the Security Advisory GHSA-5824-cm3x-3c38 <https://github.com/vyperlang/vyper/security/advisories/GHSA-5824-cm3x-3c38>_.
Date released: 23-07-2021
Non-breaking changes and improvements
#2392 <https://github.com/vyperlang/vyper/pull/2392>_)Fixes:
#2389 <https://github.com/vyperlang/vyper/pull/2389>_)#2391 <https://github.com/vyperlang/vyper/pull/2391>_)v0.2.14
THIS RELEASE HAS BEEN PULLED
Date released: 20-07-2021
Non-breaking changes and improvements:
#2387 <https://github.com/vyperlang/vyper/pull/2387>_)Fixes:
#2379 <https://github.com/vyperlang/vyper/pull/2379>_)v0.2.13
THIS RELEASE HAS BEEN PULLED
Date released: 06-07-2021
Non-breaking changes and improvements:
abs builtin function (#2356 <https://github.com/vyperlang/vyper/pull/2356>_)#2361 <https://github.com/vyperlang/vyper/pull/2361>_)v0.2.12
Date released: 16-04-2021
This release fixes a memory corruption bug (#2345 <https://github.com/vyperlang/vyper/pull/2345>) that was introduced in the v0.2.x series
and was not fixed in VVE-2020-0004 <https://github.com/vyperlang/vyper/security/advisories/GHSA-2r3x-4mrv-mcxf>. Read about it further in
VVE-2021-0001 <https://github.com/vyperlang/vyper/security/advisories/GHSA-22wc-c9wj-6q2v>_.
Non-breaking changes and improvements:
calldataload (#2352 <https://github.com/vyperlang/vyper/pull/2352>_)int256 signed integer type (#2351 <https://github.com/vyperlang/vyper/pull/2351>_)#2350 <https://github.com/vyperlang/vyper/pull/2350>_)msg.data environment variable #2343 (#2343 <https://github.com/vyperlang/vyper/pull/2343>_)#2233 <https://github.com/vyperlang/vyper/pull/2233>_)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 <https://github.com/vyperlang/vyper/pull/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 <https://github.com/vyperlang/vyper/pull/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:
#2265 <https://github.com/vyperlang/vyper/pull/2265>_)implements: (#2283 <https://github.com/vyperlang/vyper/pull/2283>_)#2284 <https://github.com/vyperlang/vyper/pull/2284>_)#2288 <https://github.com/vyperlang/vyper/pull/2288>_)#2302 <https://github.com/vyperlang/vyper/pull/2302>_)#2303 <https://github.com/vyperlang/vyper/pull/2303>_)#2304 <https://github.com/vyperlang/vyper/pull/2304>_)#2307 <https://github.com/vyperlang/vyper/pull/2307>_)#2308 <https://github.com/vyperlang/vyper/pull/2308>_)Fixes:
#2281 <https://github.com/vyperlang/vyper/pull/2281>_)#2286 <https://github.com/vyperlang/vyper/pull/2286>_)#2309 <https://github.com/vyperlang/vyper/pull/2309>_)Tons of Refactoring work courtesy of (@iamdefinitelyahuman <https://github.com/iamdefinitelyahuman>_)!
v0.2.8
Date released: 04-12-2020
Non-breaking changes and improvements:
#2225 <https://github.com/vyperlang/vyper/pull/2225>_)not in comparator (#2232 <https://github.com/vyperlang/vyper/pull/2232>_)#2226 <https://github.com/vyperlang/vyper/pull/2226>_)shift bytecode when 2nd arg is a literal (#2201 <https://github.com/vyperlang/vyper/pull/2201>_)#2208 <https://github.com/vyperlang/vyper/pull/2208>_)Fixes:
slice on a calldata bytes32 (#2227 <https://github.com/vyperlang/vyper/pull/2227>_)#2228 <https://github.com/vyperlang/vyper/pull/2228>_)#2229 <https://github.com/vyperlang/vyper/pull/2229>_)#2231 <https://github.com/vyperlang/vyper/pull/2231>_)empty as an argument within a function call (#2234 <https://github.com/vyperlang/vyper/pull/2234>_)empty static-sized array as an argument within a log statement (#2235 <https://github.com/vyperlang/vyper/pull/2235>_)Bytes variables as a key in a mapping (#2239 <https://github.com/vyperlang/vyper/pull/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 <https://github.com/vyperlang/vyper/pull/2188>_) that could allow for memory corruption under certain conditions.
Non-breaking changes and improvements:
assert and raise (#2198 <https://github.com/vyperlang/vyper/pull/2198>_)#2194 <https://github.com/vyperlang/vyper/pull/2194>_)Fixes:
#2196 <https://github.com/vyperlang/vyper/pull/2196>_)#2197 <https://github.com/vyperlang/vyper/pull/2197>_)v0.2.6
THIS RELEASE HAS BEEN PULLED
Date released: 10-10-2020
Non-breaking changes and improvements:
#2188 <https://github.com/vyperlang/vyper/pull/2188>_)uint256 as iterator type in range-based for loops (#2180 <https://github.com/vyperlang/vyper/pull/2180>_)int128 (#2179 <https://github.com/vyperlang/vyper/pull/2179>_)#2187 <https://github.com/vyperlang/vyper/pull/2187>_)#2189 <https://github.com/vyperlang/vyper/pull/2189>_)#2178 <https://github.com/vyperlang/vyper/pull/2178>_)#2177 <https://github.com/vyperlang/vyper/pull/2177>_)Fixes:
#2186 <https://github.com/vyperlang/vyper/pull/2186>_)#2184 <https://github.com/vyperlang/vyper/pull/2184>_)address and Bytes[20] (#2191 <https://github.com/vyperlang/vyper/pull/2191>_)v0.2.5
Date released: 30-09-2020
Non-breaking changes and improvements:
#2131 <https://github.com/vyperlang/vyper/pull/2131>_)#2134 <https://github.com/vyperlang/vyper/pull/2134>_)#2135 <https://github.com/vyperlang/vyper/pull/2135>_)#2166 <https://github.com/vyperlang/vyper/pull/2166>_)#2172 <https://github.com/vyperlang/vyper/pull/2172>_)#2173 <https://github.com/vyperlang/vyper/pull/2173>_)#2174 <https://github.com/vyperlang/vyper/pull/2174>_)#2175 <https://github.com/vyperlang/vyper/pull/2175>_)Fixes:
#2137 <https://github.com/vyperlang/vyper/pull/2137>_)#2140 <https://github.com/vyperlang/vyper/pull/2140>_)#2143 <https://github.com/vyperlang/vyper/pull/2143>_)#2160 <https://github.com/vyperlang/vyper/pull/2160>_)#2164 <https://github.com/vyperlang/vyper/pull/2164>_)#2176 <https://github.com/vyperlang/vyper/pull/2176>_)v0.2.4
Date released: 03-08-2020
Non-breaking changes and improvements:
#2115 <https://github.com/vyperlang/vyper/pull/2115>_)#2119 <https://github.com/vyperlang/vyper/pull/2119>_)#2120 <https://github.com/vyperlang/vyper/pull/2120>_)Fixes:
#2114 <https://github.com/vyperlang/vyper/pull/2114>_)#2118 <https://github.com/vyperlang/vyper/pull/2118>_)#2123 <https://github.com/vyperlang/vyper/pull/2123>_)v0.2.3
Date released: 16-07-2020
Non-breaking changes and improvements:
#2103 <https://github.com/vyperlang/vyper/pull/2103>_)#2102 <https://github.com/vyperlang/vyper/pull/2102>_)#2101 <https://github.com/vyperlang/vyper/pull/2101>_)Fixes:
for loop values from stack prior to returning (#2110 <https://github.com/vyperlang/vyper/pull/2110>_)#2108 <https://github.com/vyperlang/vyper/pull/2108>_)for loop type checking (#2096 <https://github.com/vyperlang/vyper/pull/2096>_)v0.2.2
Date released: 04-07-2020
Fixes:
#2089 <https://github.com/vyperlang/vyper/pull/2089>_)#2090 <https://github.com/vyperlang/vyper/pull/2090>_)#2093 <https://github.com/vyperlang/vyper/pull/2093>_)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 <https://github.com/vyperlang/vyper/issues/1887>_).
Breaking changes:
@public and @private function decorators have been renamed to @external and @internal (VIP #2065 <https://github.com/vyperlang/vyper/issues/2065>_)@constant decorator has been renamed to @view (VIP #2040 <https://github.com/vyperlang/vyper/issues/2040>_)#1881 <https://github.com/vyperlang/vyper/issues/1881>_)#1864 <https://github.com/vyperlang/vyper/issues/1864>_)log is now a statement (VIP #1864 <https://github.com/vyperlang/vyper/issues/1864>_)HashMap[key_type, value_type] (VIP #1969 <https://github.com/vyperlang/vyper/issues/1969>_)interface keyword instead of contract (VIP #1825 <https://github.com/vyperlang/vyper/issues/1825>_)bytes and string types are now written as Bytes and String (#2080 <https://github.com/vyperlang/vyper/pull/2080>_)bytes and string literals must now be bytes or regular strings, respectively. They are no longer interchangeable. (VIP #1876 <https://github.com/vyperlang/vyper/issues/1876>_)assert_modifiable has been removed, you can now directly perform assertions on calls (#2050 <https://github.com/vyperlang/vyper/pull/2050>_)value is no longer an allowable variable name in a function input (VIP #1877 <https://github.com/vyperlang/vyper/issues/1877>_)slice builtin function expects uint256 for the start and length args (VIP #1986 <https://github.com/vyperlang/vyper/issues/1986>_)len return type is now uint256 (VIP #1979 <https://github.com/vyperlang/vyper/issues/1979>_)value and gas kwargs for external function calls must be given as uint256 (VIP #1878 <https://github.com/vyperlang/vyper/issues/1878>_)outsize kwarg in raw_call has been renamed to max_outsize (#1977 <https://github.com/vyperlang/vyper/pull/1977>_)type kwarg in extract32 has been renamed to output_type (#2036 <https://github.com/vyperlang/vyper/pull/2036>_)uint256 for their input argument(s) (VIP #1983 <https://github.com/vyperlang/vyper/issues/1983>_)#2064 <https://github.com/vyperlang/vyper/pull/2064>_)RLPList has been removed (VIP #1866 <https://github.com/vyperlang/vyper/issues/1866>_)The following non-breaking VIPs and features were implemented:
#1817 <https://github.com/vyperlang/vyper/issues/1817>_)empty builtin function for zero-ing a value (#1676 <https://github.com/vyperlang/vyper/pull/1676>_)#1962 <https://github.com/vyperlang/vyper/pull/1962>_)#2042 <https://github.com/vyperlang/vyper/issues/2042>_)@pure decorator (VIP #2041 <https://github.com/vyperlang/vyper/issues/2041>_)#2072 <https://github.com/vyperlang/vyper/pull/2072>_)RETURNDATASIZE (#2076 <https://github.com/vyperlang/vyper/pull/2076>_)#1949 <https://github.com/vyperlang/vyper/pull/1949>_)#1902 <https://github.com/vyperlang/vyper/issues/1902>_)method_id optional (VIP #1980 <https://github.com/vyperlang/vyper/issues/1980>_)#2060 <https://github.com/vyperlang/vyper/pull/2060>_)#2059 <https://github.com/vyperlang/vyper/pull/2059>_)#2057 <https://github.com/vyperlang/vyper/pull/2057>_)raw_call can now be used to perform a STATICCALL (#1973 <https://github.com/vyperlang/vyper/pull/1973>_)STATICCALL (#1930 <https://github.com/vyperlang/vyper/pull/1930>_)Some of the bug and stability fixes:
#2071 <https://github.com/vyperlang/vyper/pull/2071>_)in comparator (#2070 <https://github.com/vyperlang/vyper/pull/2070>_)for loop (#2028 <https://github.com/vyperlang/vyper/pull/2028>_)#1982 <https://github.com/vyperlang/vyper/pull/1982>_)#1968 <https://github.com/vyperlang/vyper/pull/1968>_)#2077 <https://github.com/vyperlang/vyper/pull/2077>_)#2058 <https://github.com/vyperlang/vyper/pull/2058>_)Significant codebase refactor, thanks to (@iamdefinitelyahuman <https://github.com/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:
raw_call and slice argument updates (VIP #1879 <https://github.com/vyperlang/vyper/issues/1879>_)#1898 <https://github.com/vyperlang/vyper/pull/1898>_)Some of the bug and stability fixes:
#1842 <https://github.com/vyperlang/vyper/pull/1842>_)#1846 <https://github.com/vyperlang/vyper/pull/1846>_)#1843 <https://github.com/vyperlang/vyper/pull/1843>_)#1838 <https://github.com/vyperlang/vyper/pull/1838>_)This release will be the last to follow our current release process.
All future releases will be governed by the versioning scheme (#1887 <https://github.com/vyperlang/vyper/issues/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 <https://github.com/vyperlang/vyper/pull/1829>_)
v0.1.0-beta.15
Date released: 06-01-2020
NOTE: we changed our license to Apache 2.0 (#1772 <https://github.com/vyperlang/vyper/pull/1772>_)
The following VIPs were implemented for Beta 15:
#1230 <https://github.com/vyperlang/vyper/issues/1230>_)EIP-1344 <https://eips.ethereum.org/EIPS/eip-1344>, Chain ID Opcode (VIP #1652 <https://github.com/vyperlang/vyper/issues/1652>)EIP-1052 <https://eips.ethereum.org/EIPS/eip-1052>, EXTCODEHASH (VIP #1765 <https://github.com/vyperlang/vyper/issues/1765>)Some of the bug and stability fixes:
#1770 <https://github.com/vyperlang/vyper/pull/1770>_)#1771 <https://github.com/vyperlang/vyper/pull/1771>_)implements statement (#1774 <https://github.com/vyperlang/vyper/pull/1774>_)min and max (#1790 <https://github.com/vyperlang/vyper/pull/1790>_)addmod and mulmod (#1786 <https://github.com/vyperlang/vyper/pull/1786>_)#1785 <https://github.com/vyperlang/vyper/pull/1785>_)#1781 <https://github.com/vyperlang/vyper/pull/1781>_)#1768 <https://github.com/vyperlang/vyper/pull/1768>_)#1792 <https://github.com/vyperlang/vyper/pull/1792>_)#1792 <https://github.com/vyperlang/vyper/pull/1792>_)#1792 <https://github.com/vyperlang/vyper/pull/1792>_)#1791 <https://github.com/vyperlang/vyper/pull/1791>_)#1784 <https://github.com/vyperlang/vyper/pull/1784>_)#1796 <https://github.com/vyperlang/vyper/pull/1796>_)vyper-json compatibility with solc settings (#1795 <https://github.com/vyperlang/vyper/pull/1795>_)#1797 <https://github.com/vyperlang/vyper/pull/1797>_)#1743 <https://github.com/vyperlang/vyper/pull/1743>_)#1728 <https://github.com/vyperlang/vyper/pull/1728>_)#1741 <https://github.com/vyperlang/vyper/pull/1741>_)#1721 <https://github.com/vyperlang/vyper/pull/1721>_)#1679 <https://github.com/vyperlang/vyper/pull/1679>_)#1723 <https://github.com/vyperlang/vyper/pull/1723>_)EIP-1884 <https://eips.ethereum.org/EIPS/eip-1884>_ (#1764 <https://github.com/vyperlang/vyper/pull/1764>_)Special thanks to (@iamdefinitelyahuman <https://github.com/iamdefinitelyahuman>_) for lots of updates this release!
v0.1.0-beta.14
Date released: 13-11-2019
Some of the bug and stability fixes:
#1678 <https://github.com/vyperlang/vyper/pull/1678>_)#1681 <https://github.com/vyperlang/vyper/pull/1681>_)bytes[32] -> bytes32 (#1718 <https://github.com/vyperlang/vyper/pull/1718>_)bytes32 in raw_log (#1719 <https://github.com/vyperlang/vyper/pull/1719>_)#1720 <https://github.com/vyperlang/vyper/pull/1720>_)#1661 <https://github.com/vyperlang/vyper/pull/1661>_)#1673 <https://github.com/vyperlang/vyper/pull/1673>_)#1665 <https://github.com/vyperlang/vyper/pull/1665>_)sqrt on certain datatypes (#1679 <https://github.com/vyperlang/vyper/pull/1679>_)#1601 <https://github.com/vyperlang/vyper/pull/1601>_)#1638 <https://github.com/vyperlang/vyper/pull/1638>_)orelse syntax in for loops (#1633 <https://github.com/vyperlang/vyper/pull/1633>_)#1605 <https://github.com/vyperlang/vyper/pull/1605>_)v0.1.0-beta.13
Date released: 27-09-2019
The following VIPs were implemented for Beta 13:
vyper-json compilation mode (VIP #1520 <https://github.com/vyperlang/vyper/issues/1520>_)#1525 <https://github.com/vyperlang/vyper/issues/1525>_)#1493 <https://github.com/vyperlang/vyper/issues/1493>_)Some of the bug and stability fixes:
#1596 <https://github.com/vyperlang/vyper/pull/1596>_)#1619 <https://github.com/vyperlang/vyper/pull/1619>_)#1611 <https://github.com/vyperlang/vyper/pull/1611>_)calldatasize before calldataload for function selector (#1606 <https://github.com/vyperlang/vyper/pull/1606>_)v0.1.0-beta.12
Date released: 27-08-2019
The following VIPs were implemented for Beta 12:
#1367 <https://github.com/vyperlang/vyper/issues/1367>_)#1199 <https://github.com/vyperlang/vyper/issues/1199>_)Some of the bug and stability fixes:
@nonreentrant/@constant logical inconsistency (#1544 <https://github.com/vyperlang/vyper/issues/1544>_)#1551 <https://github.com/vyperlang/vyper/issues/1551>_)#1470 <https://github.com/vyperlang/vyper/pull/1470>_)#1480 <https://github.com/vyperlang/vyper/pull/1480>_)#1530 <https://github.com/vyperlang/vyper/pull/1530>_)#1579 <https://github.com/vyperlang/vyper/pull/1579>_)#1563 <https://github.com/vyperlang/vyper/issues/1563>_)vyper.cli rearchitecture of scripts (#1574 <https://github.com/vyperlang/vyper/issues/1574>_)#1580 <https://github.com/vyperlang/vyper/pull/1580>_)Special thanks to (@iamdefinitelyahuman <https://github.com/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.
#1499 <https://github.com/vyperlang/vyper/pull/1499>_)#1486 <https://github.com/vyperlang/vyper/pull/1486>_)#1486 <https://github.com/vyperlang/vyper/pull/1486>) (#1488 <https://github.com/vyperlang/vyper/pull/1488>)#1487 <https://github.com/vyperlang/vyper/pull/1487>_)@nonreentrant decorator for return statements (#1532 <https://github.com/vyperlang/vyper/pull/1532>_)sha3 builtin function removed (#1328 <https://github.com/vyperlang/vyper/issues/1328>_)#1530 <https://github.com/vyperlang/vyper/pull/1530>_)convert() supported types (#1524 <https://github.com/vyperlang/vyper/pull/1524>) (#1500 <https://github.com/vyperlang/vyper/pull/1500>)#1507 <https://github.com/vyperlang/vyper/pull/1507>_)compile_codes interface function (#1504 <https://github.com/vyperlang/vyper/pull/1504>_)Thanks to all the contributors!
v0.1.0-beta.10
Date released: 24-05-2019
#1418 <https://github.com/vyperlang/vyper/issues/1418>_). Please check your contracts, and upgrade to latest version, if you do use this.#1399 <https://github.com/vyperlang/vyper/issues/1399>_)for .. range expression. (#1397 <https://github.com/vyperlang/vyper/issues/1397>_)#1394 <https://github.com/vyperlang/vyper/issues/1394>_)#1376 <https://github.com/vyperlang/vyper/issues/1376>_)#1303 <https://github.com/vyperlang/vyper/issues/1303>_)#1303 <https://github.com/vyperlang/vyper/issues/1303>_) 1386assert <condition>, UNREACHABLE statement. (#711 <https://github.com/vyperlang/vyper/issues/711>_)Special thanks to (Charles Cooper <https://github.com/charles-cooper>_), for some excellent contributions this release.
v0.1.0-beta.9
Date released: 12-03-2019
#1211 <https://github.com/vyperlang/vyper/issues/1211>_)sha256 function (#1327 <https://github.com/vyperlang/vyper/issues/1327>_)create_with_code_of to create_forwarder_to (#1177 <https://github.com/vyperlang/vyper/issues/1177>_)@nonreentrant Decorator (#1204 <https://github.com/vyperlang/vyper/issues/1204>_)#1255 <https://github.com/vyperlang/vyper/pull/1255>_)#885 <https://github.com/vyperlang/vyper/issues/885>_)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:
#590 <https://github.com/vyperlang/vyper/issues/590>_)create_with_code_of has been renamed to create_forwarder_to. (#1177 <https://github.com/vyperlang/vyper/issues/1177>_)bar_contact = ERC20(<address>) syntax.from vyper.interfaces import ERC20 to use.b"", strings are represented as "".None, disallow use of del, implemented clear() built-in function.map(). (VIP564 <https://github.com/vyperlang/vyper/issues/564>_)VIP1026 <https://github.com/vyperlang/vyper/issues/1026>_)wei_value to be uint256.bytes <= n to bytes[n].signed256 to int256.__log__ to event.VIP545 <https://github.com/vyperlang/vyper/issues/545>_).as_wei_value to use quotes for units.continue for loops@internal renamed to @private.@internal or @public decorators.def foo() -> num(const): ... syntax no longer works; you now need to do def foo() -> num: ... with a @constant decorator on the previous line.@payable decorator now fail when called with nonzero wei.