v0.3.10 is a performance focused release. It adds a codesize optimization mode (#3493), adds new vyper-specific #pragma directives (#3493), uses Cancun’s MCOPY opcode for some compiler generated code (#3483), and generates selector tables which now feature O(1) performance (#3496).
Breaking changes
- add runtime code layout to initcode (#3584)
- drop evm versions through istanbul (#3470)
- remove vyper signature from runtime (#3471)
Non-breaking changes and improvements
- O(1) selector tables (#3496)
- implement bound= in ranges (#3537, #3551)
add optimization mode to vyper compiler (#3493) - improve batch copy performance (#3483, #3499, #3525)
Notable fixes:
- fix ecrecover() behavior when signature is invalid (GHSA-f5x6-7qgp-jhf3, #3586)
- fix: order of evaluation for some builtins (#3583, #3587)
- fix: pycryptodome for arm builds (#3485)
- let params of internal functions be mutable (#3473)
- typechecking of folded builtins in (#3490)
- update tload/tstore opcodes per latest 1153 EIP spec (#3484)
- fix:
raw_call
type whenmax_outsize=0
is set (#3572) - fix: implements check for indexed event arguments (#3570)
Other docs updates, chores and fixes:
- relax restrictions on internal function signatures (#3573)
- note on security advisory in release notes for versions 0.2.15, 0.2.16, and 0.3.0 (#3553)
- fix: yanked version in release notes (#3545)
- update release notes on yanked versions (#3547)
- improve error message for conflicting methods IDs (#3491)
- document epsilon builtin (#3552)
- relax version pragma parsing (#3511)
- fix: issue with finding installed packages in editable mode (#3510)
- add note on security advisory for ecrecover in docs (#3539)
- add asm option to cli help (#3585)
- add message to error map for repeat range check (#3542)
- fix: public constant arrays (#3536)
New Contributors
- @0xmahdirostami made their first contribution in #3558
- @shmuel44 made their first contribution in #3566
Full Changelog: v0.3.9...v0.3.10rc1