evmone 0.9.0
In this release we have been focused on improving performance of the Baseline interpreter. The end result is that the Baseline is 26% faster than in previous version 0.8.0 and 18% faster than the current Advanced interpreter while having over 8x smaller code analysis cost. The Baseline is now the default interpreter because it is simpler and has become better than the Advanced.
The Advanced also has got 4% faster than in the previous version.
All numbers are from running the "main" benchmark suite on 4.0 GHz Intel Haswell CPU, using the Clang 15 compiler.
Moreover, evmone now calculates gas refund and reports it back using EVMC 10 API.
Finally, the options O=2
and O=0
have been replaced by advanced
. See below for details.
Added
- Calculation of EVM gas refunds. #493
PUSH0
instruction implementation (EIP-3855), enabled in Shanghai. #448 #432- Experimental EOF validation and execution (EIP-3540), enabled in Shanghai. #334 #366 #471
- In progress State Transition execution tool for testing purposes. So far we've merged:
Changed
- EVMC options
O=0
(use Baseline) andO=2
(use Advanced) have been replaced with single optionadvanced
to use the non-default Advanced interpreter. #500 - Baseline has replaced Advanced as the default interpreter. The later can still be selected with the
advanced
option. Reasons are explained in the introduction. #500 - A lot of changes related to the optimization of the Baseline interpreter, including refactoring and optimization of instructions' implementations.
- The Baseline interpreter now uses "computed goto" dispatch if supported by C++ compiler. The "switch" dispatch can be forced with the
cgoto=no
option. #495 - Improvements to basic block metadata placement in the Advanced interpreter. #457 #474
- EVMC has been upgraded to version 10.0.0. #499
- intx has been upgrade to version 0.8.0. #446
Removed
evmone-fuzzer
has removed aleth-interpreter as it is not maintained and lacks the latest EVM features. #453