evmone 0.10.0
The highlights of this release are support for Shanghai execution specification upgrade and implementation of EOF "v1.0". There are also big enhancements to the EVM testing tools and infrastructure. In particular, we added the t8n command-line utility.
As it is tradition, the EVM performance has been improved as well. Comparing with the previous release using the "main" benchmark suite, the Baseline interpreter is now:
- 10–45% (mean 25%) faster for GCC builds,
- 0–19% (mean 11%) faster for Clang builds.
Added
- Shanghai support:
- EVM Object Format "EOF v1.0":
- The implementation of the revisions of EIP-3540, EIP-3670, EIP-4200, EIP-4750 and EIP-5450 originally proposed for Shanghai. #563 #572 #594 #508
- EOF is currently enabled in the Cancun revision but likely to be moved to Prague in the future. #561
- Added
evmone-eofparse
andevmone-eofparsefuzz
tools for testing EOF validation. #568
- Implemented EIP-663: Unlimited SWAP and DUP instructions (enabled in EOF). #529
- Added implementation of
evmc::Host
, state transition and block finalization for testing purposes. #484 #519 #575 #608 #609 - Added t8n tool
evmone-t8n
— a command line utility for transaction execution and state transition testing. It allows executing and generating tests with cooperation of retesteth or execution-spec-tests. #552 #555 #558 #569 #583 #590 #591 #604 #606 #607 #612 - Added partial support for EVM Precompiles — gas cost computation and execution via JSON stub file. #524
- Declarative state transition unit test suite. #589
- CMake option
EVMONE_X86_64_ARCH_LEVEL
to set the x86-64 microarchitecture level. On Linux and Windows this is set to x86-64-v2 by default. #548
Changed
- C++20 is now required to build evmone. #502
- Minimal tested/supported compilers versions: #535
- GCC 11
- Clang 13
- XCode 13.4
- Visual Studio 2022
- CMake 3.16
- EVMC has been upgraded to version 10.1.0. #623
- intx has been upgraded to version 0.10.0. #622
- ethash has been upgraded to version 1.0.0. #540
- Ethereum Execution Tests has been upgraded to version 12.2. #625
- Baseline interpreter optimizations:
- Changes to EVM tracing:
- Improvements to the JSON State Test execution tool
evmone-statetest
: - Benchmarks (invocable by
evmone-bench
) have been migrated to external evm-benchmarks which use JSON State Test format. #513 #530 - Removed dependency on
evmc::instructions
. #533 #534 #537