Release candidate for https://github.com/vyperlang/vyper/releases/tag/v0.3.10, the below changes are a subset of those documented in the v0.3.10 release notes.
v0.3.10 is a performance focused release. 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)).
Breaking changes
- add runtime code layout to initcode ([3584](https://github.com/vyperlang/vyper/pull/3584))
- drop evm versions through istanbul ([3470](https://github.com/vyperlang/vyper/pull/3470))
- remove vyper signature from runtime ([3471](https://github.com/vyperlang/vyper/pull/3471))
Non-breaking changes and improvements
- O(1) selector tables ([3496](https://github.com/vyperlang/vyper/pull/3496))
- implement bound= in ranges ([3537](https://github.com/vyperlang/vyper/pull/3537), [#3551](https://github.com/vyperlang/vyper/pull/3551))
add optimization mode to vyper compiler ([3493](https://github.com/vyperlang/vyper/pull/3493))
- improve batch copy performance ([3483](https://github.com/vyperlang/vyper/pull/3483), [#3499](https://github.com/vyperlang/vyper/pull/3499), [#3525](https://github.com/vyperlang/vyper/pull/3525))
Notable fixes:
- fix 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))
- fix: order of evaluation for some builtins ([3583](https://github.com/vyperlang/vyper/pull/3583), [#3587](https://github.com/vyperlang/vyper/pull/3587))
- fix: pycryptodome for arm builds ([3485](https://github.com/vyperlang/vyper/pull/3485))
- let params of internal functions be mutable ([3473](https://github.com/vyperlang/vyper/pull/3473))
- typechecking of folded builtins in ([3490](https://github.com/vyperlang/vyper/pull/3490))
- update tload/tstore opcodes per latest 1153 EIP spec ([3484](https://github.com/vyperlang/vyper/pull/3484))
- fix: `raw_call` type when `max_outsize=0` is set ([3572](https://github.com/vyperlang/vyper/pull/3572))
- fix: implements check for indexed event arguments ([3570](https://github.com/vyperlang/vyper/pull/3570))
Other docs updates, chores and fixes:
- relax restrictions on internal function signatures ([3573](https://github.com/vyperlang/vyper/pull/3573))
- note on security advisory in release notes for versions 0.2.15, 0.2.16, and 0.3.0 ([3553](https://github.com/vyperlang/vyper/pull/3553))
- fix: yanked version in release notes ([3545](https://github.com/vyperlang/vyper/pull/3545))
- update release notes on yanked versions ([3547](https://github.com/vyperlang/vyper/pull/3547))
- improve error message for conflicting methods IDs ([3491](https://github.com/vyperlang/vyper/pull/3491))
- document epsilon builtin ([3552](https://github.com/vyperlang/vyper/pull/3552))
- relax version pragma parsing ([3511](https://github.com/vyperlang/vyper/pull/3511))
- fix: issue with finding installed packages in editable mode ([3510](https://github.com/vyperlang/vyper/pull/3510))
- add note on security advisory for ecrecover in docs ([3539](https://github.com/vyperlang/vyper/pull/3539))
- add asm option to cli help ([3585](https://github.com/vyperlang/vyper/pull/3585))
- add message to error map for repeat range check ([3542](https://github.com/vyperlang/vyper/pull/3542))
- fix: public constant arrays ([3536](https://github.com/vyperlang/vyper/pull/3536))
New Contributors
* 0xmahdirostami made their first contribution in https://github.com/vyperlang/vyper/pull/3558
* shmuel44 made their first contribution in https://github.com/vyperlang/vyper/pull/3566
**Full Changelog**: https://github.com/vyperlang/vyper/compare/v0.3.9...v0.3.10rc1