Skip to content

Commit

Permalink
Merge pull request #501 from ethereum/changelog
Browse files Browse the repository at this point in the history
Update CHANGELOG for 0.9.0 release
  • Loading branch information
chfast committed Aug 30, 2022
2 parents 02fa0ff + fe6c950 commit 94a6066
Show file tree
Hide file tree
Showing 2 changed files with 69 additions and 10 deletions.
71 changes: 67 additions & 4 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,66 @@ and this project adheres to [Semantic Versioning].

## [0.9.0] — unreleased

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][EVMC 10.0.0] 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](https://github.com/ethereum/evmone/pull/493)
- `PUSH0` instruction implementation ([EIP-3855]), enabled in [Shanghai].
[#448](https://github.com/ethereum/evmone/pull/448)
[#432](https://github.com/ethereum/evmone/pull/432)
- Experimental [EOF] validation and execution ([EIP-3540]), enabled in [Shanghai].
[#334](https://github.com/ethereum/evmone/pull/334)
[#366](https://github.com/ethereum/evmone/pull/366)
[#471](https://github.com/ethereum/evmone/pull/471)
- _In progress_ State Transition execution tool for testing purposes. So far we've merged:
- RLP encoding,
[#463](https://github.com/ethereum/evmone/pull/463)
- Merkle Patricia Trie root hash computing,
[#477](https://github.com/ethereum/evmone/pull/477)
[#478](https://github.com/ethereum/evmone/pull/478)
- JSON State Transition Test loader.
[#479](https://github.com/ethereum/evmone/pull/479)

### Changed

- EVMC options `O=0` (use Baseline) and `O=2` (use Advanced) have been replaced with single
option `advanced` to use the non-default Advanced interpreter.
[#500](https://github.com/ethereum/evmone/pull/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](https://github.com/ethereum/evmone/pull/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](https://github.com/ethereum/evmone/pull/495)
- Improvements to basic block metadata placement in the Advanced interpreter.
[#457](https://github.com/ethereum/evmone/pull/457)
[#474](https://github.com/ethereum/evmone/pull/474)
- [EVMC] has been upgraded to version [10.0.0][EVMC 10.0.0].
[#499](https://github.com/ethereum/evmone/pull/499)
- [intx] has been upgrade to version [0.8.0][intx 0.8.0].
[#446](https://github.com/ethereum/evmone/pull/446)

### Removed

- `evmone-fuzzer` has removed [aleth-interpreter][Aleth] as it is not maintained and lacks the latest EVM features.
- `evmone-fuzzer` has removed [aleth-interpreter][Aleth] as it is not maintained
and lacks the latest EVM features.
[#453](https://github.com/ethereum/evmone/pull/453)


Expand All @@ -33,7 +90,7 @@ and this project adheres to [Semantic Versioning].

## [0.8.0] — 2021-07-01

## Added
### Added

- Full support for **[London]** EVM revision:
- [EVMC] upgraded to version [9.0.0][EVMC 9.0.0].
Expand Down Expand Up @@ -312,19 +369,25 @@ It delivers fully-compatible and high-speed EVM implementation.
[EIP-2929]: https://eips.ethereum.org/EIPS/eip-2929
[EIP-3155]: https://eips.ethereum.org/EIPS/eip-3155
[EIP-3198]: https://eips.ethereum.org/EIPS/eip-3198
[EIP-3540]: https://eips.ethereum.org/EIPS/eip-3540
[EIP-3855]: https://eips.ethereum.org/EIPS/eip-3855
[Spurious Dragon]: https://eips.ethereum.org/EIPS/eip-607
[Petersburg]: https://eips.ethereum.org/EIPS/eip-1716
[Istanbul]: https://eips.ethereum.org/EIPS/eip-1679
[Berlin]: https://github.com/ethereum/eth1.0-specs/blob/master/network-upgrades/mainnet-upgrades/berlin.md
[London]: https://github.com/ethereum/eth1.0-specs/blob/master/network-upgrades/mainnet-upgrades/london.md
[Berlin]: https://github.com/ethereum/execution-specs/blob/master/network-upgrades/mainnet-upgrades/berlin.md
[London]: https://github.com/ethereum/execution-specs/blob/master/network-upgrades/mainnet-upgrades/london.md
[Shanghai]: https://github.com/ethereum/execution-specs/blob/master/network-upgrades/mainnet-upgrades/shanghai.md
[EOF]: https://notes.ethereum.org/@ipsilon/evm-object-format-overview
[EVMC]: https://github.com/ethereum/evmc
[EVMC 10.0.0]: https://github.com/ethereum/evmc/releases/tag/v10.0.0
[EVMC 9.0.0]: https://github.com/ethereum/evmc/releases/tag/v9.0.0
[EVMC 8.0.0]: https://github.com/ethereum/evmc/releases/tag/v8.0.0
[EVMC 7.5.0]: https://github.com/ethereum/evmc/releases/tag/v7.5.0
[EVMC 7.4.0]: https://github.com/ethereum/evmc/releases/tag/v7.4.0
[EVMC 7.1.0]: https://github.com/ethereum/evmc/releases/tag/v7.1.0
[EVMC 7.0.0]: https://github.com/ethereum/evmc/releases/tag/v7.0.0
[intx]: https://github.com/chfast/intx
[intx 0.8.0]: https://github.com/chfast/intx/releases/tag/v0.8.0
[intx 0.6.0]: https://github.com/chfast/intx/releases/tag/v0.6.0
[intx 0.5.0]: https://github.com/chfast/intx/releases/tag/v0.5.0
[ethash]: https://github.com/chfast/ethash
Expand Down
8 changes: 2 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -41,12 +41,6 @@ The codebase of _evmone_ is optimized to provide fast and efficient execution of

## Usage

### Optimization levels

The option `O` controls the "optimization level":
- `O=2` uses Advanced interpreter (default),
- `O=0` uses Baseline interpreter.

### As geth plugin

evmone implements the [EVMC] API for Ethereum Virtual Machines.
Expand All @@ -63,6 +57,7 @@ geth --vm.evm=./libevmone.so
```

### Building from source

To build the evmone EVMC module (shared library), test, and benchmark:

1. Fetch the source code:
Expand Down Expand Up @@ -94,6 +89,7 @@ To build the evmone EVMC module (shared library), test, and benchmark:
build/bin/evmone-unittests
build/bin/evmone-bench test/benchmarks
```

### Tools

#### evm-test
Expand Down

0 comments on commit 94a6066

Please sign in to comment.