@@ -5,6 +5,161 @@ Documentation of all notable changes to the **evmone** project.
55The format is based on [ Keep a Changelog] ,
66and this project adheres to [ Semantic Versioning] .
77
8+ ## [ 0.12.0]  — unreleased 
9+ 
10+ This release is focused on the Prague upgrade and EOF.
11+ 
12+ ### Added  
13+ 
14+ -  Added ` evmone-precompiles-bench `  tool to benchmark precompiles.
15+   [ #765  ] ( https://github.com/ethereum/evmone/pull/765 ) 
16+ -  Added native implementations of the precompiled hash functions:
17+   -  RIPEMD160
18+     [ #846  ] ( https://github.com/ethereum/evmone/pull/846 ) 
19+   -  BLAKE2bf
20+     [ #857  ] ( https://github.com/ethereum/evmone/pull/857 ) 
21+   -  SHA256
22+     [ #924  ] ( https://github.com/ethereum/evmone/pull/924 ) 
23+ -  Added ` validate_eof `  EVMC option to validate EOF before execution.
24+   This option is enabled by default in ` evmc run ` .
25+   [ #768  ] ( https://github.com/ethereum/evmone/pull/768 ) 
26+   [ #960  ] ( https://github.com/ethereum/evmone/pull/960 ) 
27+ -  Implemented [ EIP-7610]  "Revert creation in case of non-empty storage"
28+   in the testing infrastructure.
29+   [ #816  ] ( https://github.com/ethereum/evmone/pull/816 ) 
30+ -  Added ` --version `  option to testing tools.
31+   [ #902  ] ( https://github.com/ethereum/evmone/pull/902 ) 
32+ -  Introduce ` TestState `  and ` TestAccount `  to testing infrastructure.
33+   [ #811  ] ( https://github.com/ethereum/evmone/pull/811 ) 
34+ -  Added support for validating "initcode" containers in ` eofparse `  and ` eoftest ` .
35+   [ #934  ] ( https://github.com/ethereum/evmone/pull/934 ) 
36+   [ #943  ] ( https://github.com/ethereum/evmone/pull/943 ) 
37+ 
38+ ### Changed  
39+ 
40+ -  ** EVM Object Format (EOF)** 
41+   
42+   Completed implementation of the [ EIP-7692] : EVM Object Format (EOFv1) Meta.
43+   -  Added ` EOFCREATE `  and ` RETURNCONTRACT `  instructions.
44+     [ #553  ] ( https://github.com/ethereum/evmone/pull/553 ) 
45+   -  Added ` TXCREATE `  instruction, later moved to the future EOF version (Osaka).
46+     [ #702  ] ( https://github.com/ethereum/evmone/pull/702 ) 
47+     [ #889  ] ( https://github.com/ethereum/evmone/pull/889 ) 
48+   -  Make ` EXT*CALL `  instructions Address Space Expansion ready.
49+     [ #915  ] ( https://github.com/ethereum/evmone/pull/915 ) 
50+   -  Added EOF validation of sub-container kinds.
51+     [ #876  ] ( https://github.com/ethereum/evmone/pull/876 ) 
52+   -  Limit validated container size to ` MAX_INITCODE_SIZE ` .
53+     [ #930  ] ( https://github.com/ethereum/evmone/pull/930 ) 
54+   -  Added ` RETURNDATALOAD `  instruction.
55+     [ #786  ] ( https://github.com/ethereum/evmone/pull/786 ) 
56+   -  Implementation of "less restricted" stack validation.
57+     [ #676  ] ( https://github.com/ethereum/evmone/pull/676 ) 
58+   -  Added implementation of ` EXCHANGE `  from [ EIP-663] .
59+     [ #839  ] ( https://github.com/ethereum/evmone/pull/839 ) 
60+   -  Disallow unreachable code sections in EOF containers.
61+     [ #721  ] ( https://github.com/ethereum/evmone/pull/721 ) 
62+     [ #866  ] ( https://github.com/ethereum/evmone/pull/866 ) 
63+   -  Restrict ` DUPN `  and ` SWAPN `  to EOF only in EOF only.
64+     [ #788  ] ( https://github.com/ethereum/evmone/pull/788 ) 
65+   -  Change ` DATA* `  opcodes.
66+     [ #797  ] ( https://github.com/ethereum/evmone/pull/797 ) 
67+   -  Disable EOF ↔ legacy cross-creation.
68+     [ #825  ] ( https://github.com/ethereum/evmone/pull/825 ) 
69+   -  Deprecate and reject code/gas-observability in EOF.
70+     [ #834  ] ( https://github.com/ethereum/evmone/pull/834 ) 
71+   -  Make EOF opaque for ` EXTCODE* `  instructions.
72+     [ #587  ] ( https://github.com/ethereum/evmone/pull/587 ) 
73+   -  Implement EOF creation transactions.
74+     [ #878  ] ( https://github.com/ethereum/evmone/pull/878 ) 
75+   -  Modify EOF ` RETURNDATA* `  to allow out-of-bounds reads (instead of failing execution).
76+     [ #909  ] ( https://github.com/ethereum/evmone/pull/909 ) 
77+   -  Tune EOF validation: disallow truncated data in top-level EOF containers.
78+     [ #921  ] ( https://github.com/ethereum/evmone/pull/921 ) 
79+   -  Disallow unreferenced sub-containers and sub-containers of conflicting kinds.
80+     [ #916  ] ( https://github.com/ethereum/evmone/pull/916 ) 
81+ 
82+ -  ** Testing** 
83+ 
84+   There are a lot of improvements to the testing tools and test formats.
85+   In particular, big portion of evmone's unit tests has been re-shaped
86+   to have a structure of State Tests or EOF Validation Tests.
87+ 
88+   Moreover, we added the option to export these tests to JSON and the archive
89+   of the exported tests ("fixture") is the artifact of this release.
90+ 
91+   Upgraded external test suites:
92+   -  [ ethereum/tests] [ Ethereum Execution Tests ] : [ 14.0] [ tests 14.0 ] 
93+   -  [ Execution Spec Tests] : [ 3.0.0] [ Execution Spec Tests 3.0.0 ] 
94+ 
95+   Other details:
96+   -  Add some missing State Test export features.
97+     [ #807  ] ( https://github.com/ethereum/evmone/pull/807 ) 
98+   -  Check for unexpected ` EF `  prefix in test code.
99+     [ #809  ] ( https://github.com/ethereum/evmone/pull/809 ) 
100+   -  EOF Validation Test fixture.
101+     [ #810  ] ( https://github.com/ethereum/evmone/pull/810 ) 
102+   -  Export EOF validation unit tests to JSON EOF Validation Tests.
103+     [ #818  ] ( https://github.com/ethereum/evmone/pull/818 ) 
104+   -  Output failed test case index in EOF Validation Tests.
105+     [ #820  ] ( https://github.com/ethereum/evmone/pull/820 ) 
106+   -  Add ` ExportableFixture `  for JSON tests exporting.
107+     [ #821  ] ( https://github.com/ethereum/evmone/pull/821 ) 
108+   -  Recognize all official fork/revision names.
109+     [ #830  ] ( https://github.com/ethereum/evmone/pull/830 ) 
110+   -  Export State Tests with invalid transactions.
111+     [ #858  ] ( https://github.com/ethereum/evmone/pull/858 ) 
112+   -  Allow ` "to": null `  in JSON transactions.
113+     [ #927  ] ( https://github.com/ethereum/evmone/pull/927 ) 
114+   -  EOF Validation Tests runner: support "initcode" flag.
115+     [ #936  ] ( https://github.com/ethereum/evmone/pull/936 ) 
116+   -  ` evmone-blockchaintest ` : Simplify genesis handling.
117+     [ #954  ] ( https://github.com/ethereum/evmone/pull/954 ) 
118+   -  Optimization: only empty accounts are marked "touched".
119+     [ #785  ] ( https://github.com/ethereum/evmone/pull/785 ) 
120+   -  Adjust ethash difficulty if below minimum ` 0x20000 ` .
121+     [ #803  ] ( https://github.com/ethereum/evmone/pull/803 ) 
122+ 
123+ -  Requirements and dependencies updates:
124+   -  CMake 3.18
125+     [ #840  ] ( https://github.com/ethereum/evmone/pull/840 ) 
126+   -  Xcode 15.0
127+     [ #847  ] ( https://github.com/ethereum/evmone/pull/847 ) 
128+   -  [ EVMC] [ EVMC 12.0.0 ] 
129+     [ #966  ] ( https://github.com/ethereum/evmone/pull/966 ) 
130+   -  [ intx] [ intx 0.11.0 ] 
131+     [ #967  ] ( https://github.com/ethereum/evmone/pull/967 ) 
132+ 
133+ -  Use 32-byte aligned allocation for Baseline stack space.
134+   [ #907  ] ( https://github.com/ethereum/evmone/pull/907 ) 
135+ -  Split Baseline analysis and execution into separate files.
136+   [ #946  ] ( https://github.com/ethereum/evmone/pull/946 ) 
137+ -  Convert EVMMAX to header-only library with full ` constexpr `  capabilities.
138+   [ #864  ] ( https://github.com/ethereum/evmone/pull/864 ) 
139+   [ #964  ] ( https://github.com/ethereum/evmone/pull/964 ) 
140+ -  Return number of errors from ` eofparse ` .
141+   [ #873  ] ( https://github.com/ethereum/evmone/pull/873 ) 
142+ 
143+ ### Fixed  
144+ 
145+ -  Implement Frontier behavior of failing code deployment (testing infrastructure).
146+   [ #824  ] ( https://github.com/ethereum/evmone/pull/824 ) 
147+ -  Fix error messages for compatibility with external testing tools.
148+   [ #828  ] ( https://github.com/ethereum/evmone/pull/828 ) 
149+   [ #886  ] ( https://github.com/ethereum/evmone/pull/886 ) 
150+ -  Fix initcode handling before EOF is enabled:
151+   an initcode staring with ` EF00 `  should not be validated as EOF unconditionally.
152+   [ #893  ] ( https://github.com/ethereum/evmone/pull/893 ) 
153+ -  Fix EOF header parsing bug (introduced by code refactoring).
154+   [ #957  ] ( https://github.com/ethereum/evmone/pull/957 ) 
155+   [ #958  ] ( https://github.com/ethereum/evmone/pull/958 ) 
156+ -  Fix ` eoftest `  to run all tests from a JSON file.
157+   [ #935  ] ( https://github.com/ethereum/evmone/pull/935 ) 
158+ -  Improve output buffer handling for precompiles in testing infrastructure.
159+   This fixes out-of-bound access for some fuzzing-generated state tests.
160+   [ #951  ] ( https://github.com/ethereum/evmone/pull/951 ) 
161+ 
162+ 
8163## [ 0.11.0]  — 2023-12-21 
9164
10165This release is focused on [ Cancun]  and EOF.
@@ -72,7 +227,8 @@ This release is focused on [Cancun] and EOF.
72227
73228### Changed  
74229
75- -  ** EVM Object Format (EOF)** :
230+ -  ** EVM Object Format (EOF)** 
231+ 
76232  EOF implementation follows the [ EOF spec]  (aka _ Mega EOF Endgame_ )
77233  and is tentatively enabled in the ** Prague**  EVM revision.
78234  -  Tests have been migrated to [ ipsilon/tests/eof] ( https://github.com/ipsilon/tests/tree/eof ) 
@@ -91,6 +247,7 @@ This release is focused on [Cancun] and EOF.
91247    [ #640  ] ( https://github.com/ethereum/evmone/pull/640 ) 
92248  -  Implementation of the ` JUMPF `  instruction and the _ non-returning_  functions
93249    [ #644  ] ( https://github.com/ethereum/evmone/pull/644 ) 
250+ 
94251-  Opcodes of new instructions have been assigned following
95252  [ the execution-spec opcodes list] ( https://github.com/ethereum/execution-specs/tree/master/lists/evm ) 
96253  [ #665  ] ( https://github.com/ethereum/evmone/pull/665 ) 
@@ -613,6 +770,7 @@ It delivers fully-compatible and high-speed EVM implementation.
613770-  Exposes [ EVMC]  6 ABI.
614771-  The [ intx 0.2.0] ( https://github.com/chfast/intx/releases/tag/v0.2.0 )  library is used for 256-bit precision arithmetic. 
615772
773+ [ 0.12.0 ] : https://github.com/ethereum/evmone/compare/v0.11.0..master 
616774[ 0.11.0 ] : https://github.com/ethereum/evmone/releases/tag/v0.11.0 
617775[ 0.10.0 ] : https://github.com/ethereum/evmone/releases/tag/v0.10.0 
618776[ 0.9.1 ] : https://github.com/ethereum/evmone/releases/tag/v0.9.1 
@@ -653,6 +811,8 @@ It delivers fully-compatible and high-speed EVM implementation.
653811[ EIP-5656 ] : https://eips.ethereum.org/EIPS/eip-5656 
654812[ EIP-6780 ] : https://eips.ethereum.org/EIPS/eip-6780 
655813[ EIP-7516 ] : https://eips.ethereum.org/EIPS/eip-7516 
814+ [ EIP-7610 ] : https://eips.ethereum.org/EIPS/eip-7610 
815+ [ EIP-7692 ] : https://eips.ethereum.org/EIPS/eip-7692 
656816
657817[ Spurious Dragon ] : https://eips.ethereum.org/EIPS/eip-607 
658818[ Petersburg ] : https://eips.ethereum.org/EIPS/eip-1716 
@@ -663,6 +823,7 @@ It delivers fully-compatible and high-speed EVM implementation.
663823[ Cancun ] : https://github.com/ethereum/execution-specs/blob/master/network-upgrades/mainnet-upgrades/cancun.md 
664824
665825[ EVMC ] : https://github.com/ethereum/evmc 
826+ [ EVMC 12.0.0 ] : https://github.com/ethereum/evmc/releases/tag/v12.0.0 
666827[ EVMC 11.0.1 ] : https://github.com/ethereum/evmc/releases/tag/v11.0.1 
667828[ EVMC 10.1.0 ] : https://github.com/ethereum/evmc/releases/tag/v10.1.0 
668829[ EVMC 10.0.0 ] : https://github.com/ethereum/evmc/releases/tag/v10.0.0 
@@ -674,6 +835,7 @@ It delivers fully-compatible and high-speed EVM implementation.
674835[ EVMC 7.0.0 ] : https://github.com/ethereum/evmc/releases/tag/v7.0.0 
675836
676837[ intx ] : https://github.com/chfast/intx 
838+ [ intx 0.11.0 ] : https://github.com/chfast/intx/releases/tag/v0.11.0 
677839[ intx 0.10.1 ] : https://github.com/chfast/intx/releases/tag/v0.10.1 
678840[ intx 0.10.0 ] : https://github.com/chfast/intx/releases/tag/v0.10.0 
679841[ intx 0.8.0 ] : https://github.com/chfast/intx/releases/tag/v0.8.0 
@@ -685,12 +847,14 @@ It delivers fully-compatible and high-speed EVM implementation.
685847[ ethash 1.0.0 ] : https://github.com/chfast/ethash/releases/tag/v1.0.0 
686848
687849[ Ethereum Execution Tests ] : https://github.com/ethereum/tests 
850+ [ tests 14.0 ] : https://github.com/ethereum/tests/releases/tag/v14.0 
688851[ tests 13 ] : https://github.com/ethereum/tests/releases/tag/v13 
689852[ tests 12.2 ] : https://github.com/ethereum/tests/releases/tag/v12.2 
690853[ tests 9.0.2 ] : https://github.com/ethereum/tests/releases/tag/9.0.2 
691854[ tests 8.0.4 ] : https://github.com/ethereum/tests/releases/tag/8.0.4 
692855
693856[ Execution Spec Tests ] : https://github.com/ethereum/execution-spec-tests 
857+ [ Execution Spec Tests 3.0.0 ] : https://github.com/ethereum/execution-spec-tests/releases/tag/v3.0.0 
694858[ Execution Spec Tests 1.0.6 ] : https://github.com/ethereum/execution-spec-tests/releases/tag/v1.0.6 
695859
696860[ Aleth ] : https://github.com/ethereum/aleth 
0 commit comments