Skip to content

Commit f466dcd

Browse files
authored
Merge pull request ethereumjs#482 from ethereumjs/new-release-v300
New release v3.0.0
2 parents b48b5c2 + 1465a73 commit f466dcd

File tree

3 files changed

+94
-12
lines changed

3 files changed

+94
-12
lines changed

CHANGELOG.md

Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,95 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
66
[Semantic Versioning](http://semver.org/spec/v2.0.0.html).
77

88

9+
## [3.0.0] - 2019-03-29
10+
11+
This release comes with a modernized ``ES6``-class structured code base, some
12+
significant local refactoring work regarding how ``Stack`` and ``Memory``
13+
are organized within the VM and it finalizes a first round of module structuring
14+
now having separate folders for ``bloom``, ``evm`` and ``state`` related code. The
15+
release also removes some rarely used parts of the API (``hookedVM``, ``VM.deps``).
16+
17+
All this is to a large extend preparatory work for a ``v4.0.0`` release which will
18+
follow in the next months with ``TypeScript`` support and more system-wide
19+
refactoring work leading to a more modular and expandable VM and providing the
20+
ground for future ``eWASM`` integration. If you are interested in the release
21+
process and want to take part in the refactoring discussion see the associated
22+
issue [#455](https://github.com/ethereumjs/ethereumjs-vm/issues/455).
23+
24+
**VM Refactoring/Breaking Changes**
25+
26+
- New ``Memory`` class for evm memory manipulation,
27+
PR [#442](https://github.com/ethereumjs/ethereumjs-vm/pull/442)
28+
- Refactored ``Stack`` manipulation in evm,
29+
PR [#460](https://github.com/ethereumjs/ethereumjs-vm/pull/460)
30+
- Dropped ``createHookedVm`` (BREAKING), being made obsolete by the
31+
new ``StateManager`` API,
32+
PR [#451](https://github.com/ethereumjs/ethereumjs-vm/pull/451)
33+
- Dropped ``VM.deps`` attribute (please require dependencies yourself if you
34+
used this),
35+
PR [#478](https://github.com/ethereumjs/ethereumjs-vm/pull/478)
36+
- Removed ``fakeBlockchain`` class and associated tests,
37+
PR [#466](https://github.com/ethereumjs/ethereumjs-vm/pull/466)
38+
- The ``petersburg`` hardfork rules are now run as default
39+
(before: ``byzantium``),
40+
PR [#485](https://github.com/ethereumjs/ethereumjs-vm/pull/485)
41+
42+
**Modularization**
43+
44+
- Renamed ``vm`` module to ``evm``, move ``precompiles`` to ``evm`` module,
45+
PR [#481](https://github.com/ethereumjs/ethereumjs-vm/pull/481)
46+
- Moved ``stateManager``, ``storageReader`` and ``cache`` to ``state`` module,
47+
[#443](https://github.com/ethereumjs/ethereumjs-vm/pull/443)
48+
- Replaced static VM ``logTable`` with dynamic inline version in ``EXP`` opcode,
49+
[#450](https://github.com/ethereumjs/ethereumjs-vm/pull/450)
50+
51+
**Code Modernization/ES6**
52+
53+
- Converted ``VM`` to ``ES6`` class,
54+
PR [#478](https://github.com/ethereumjs/ethereumjs-vm/pull/478)
55+
- Migrated ``stateManager`` and ``storageReader`` to ``ES6`` class syntax,
56+
PR [#452](https://github.com/ethereumjs/ethereumjs-vm/pull/452)
57+
58+
**Bug Fixes**
59+
60+
- Fixed a bug where ``stateManager.setStateRoot()`` didn't clear
61+
the ``_storageTries`` cache,
62+
PR [#445](https://github.com/ethereumjs/ethereumjs-vm/issues/445)
63+
- Fixed longer output than return length in ``CALL`` opcode,
64+
PR [#454](https://github.com/ethereumjs/ethereumjs-vm/pull/454)
65+
- Use ``BN.toArrayLike()`` instead of ``BN.toBuffer()`` (browser compatibility),
66+
PR [#458](https://github.com/ethereumjs/ethereumjs-vm/pull/458)
67+
- Fixed tx value overflow 256 bits,
68+
PR [#471](https://github.com/ethereumjs/ethereumjs-vm/pull/471)
69+
70+
**Maintenance/Optimization**
71+
72+
- Use ``BN`` reduction context in ``MODEXP`` precompile,
73+
PR [#463](https://github.com/ethereumjs/ethereumjs-vm/pull/463)
74+
75+
**Documentation**
76+
77+
- Fixed API doc types for ``Bloom`` filter methods,
78+
PR [#439](https://github.com/ethereumjs/ethereumjs-vm/pull/439)
79+
80+
**Testing**
81+
82+
- New Karma browser testing for the API tests,
83+
PRs [#461](https://github.com/ethereumjs/ethereumjs-vm/pull/461),
84+
[#468](https://github.com/ethereumjs/ethereumjs-vm/pull/468)
85+
- Removed unused parts and tests within the test setup,
86+
PR [#437](https://github.com/ethereumjs/ethereumjs-vm/pull/437)
87+
- Fixed a bug using ``--json`` trace flag in the tests,
88+
PR [#438](https://github.com/ethereumjs/ethereumjs-vm/pull/438)
89+
- Complete switch to Petersburg on tests, fix coverage,
90+
PR [#448](https://github.com/ethereumjs/ethereumjs-vm/pull/448)
91+
- Added test for ``StateManager.dumpStorage()``,
92+
PR [#462](https://github.com/ethereumjs/ethereumjs-vm/pull/462)
93+
- Fixed ``ecmul_0-3_5616_28000_96`` (by test setup adoption),
94+
PR [#473](https://github.com/ethereumjs/ethereumjs-vm/pull/473)
95+
96+
[3.0.0]: https://github.com/ethereumjs/ethereumjs-vm/compare/v2.6.0...v3.0.0
97+
998
## [2.6.0] - 2019-02-07
1099

11100
**Petersburg Support**

README.md

Lines changed: 4 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -5,24 +5,19 @@
55
https://img.shields.io/circleci/project/github/ethereumjs/ethereumjs-vm/master.svg
66
)](https://circleci.com/gh/ethereumjs/ethereumjs-vm)
77
[![Coverage Status](https://img.shields.io/coveralls/ethereumjs/ethereumjs-vm.svg?style=flat-square)](https://coveralls.io/r/ethereumjs/ethereumjs-vm)
8-
[![Gitter](https://img.shields.io/gitter/room/ethereum/ethereumjs-lib.svg?style=flat-square)](https://gitter.im/ethereum/ethereumjs-lib) or #ethereumjs on freenode
8+
[![Gitter](https://img.shields.io/gitter/room/ethereum/ethereumjs.svg?style=flat-square)](https://gitter.im/ethereum/ethereumjs)
99

1010
[![js-standard-style](https://cdn.rawgit.com/feross/standard/master/badge.svg)](https://github.com/feross/standard)
1111

1212
Implements Ethereum's VM in Javascript.
1313

1414
#### Fork Support
1515

16-
The VM (`v2.6.x` release series) currently supports the following hardforks
17-
(default: `Byzantium`):
16+
The VM currently supports the following hardfork rules:
1817

1918
- `Byzantium`
2019
- `Constantinople`
21-
- `Petersburg`
22-
23-
Parallel HF support was introduced in the `v2.5.0` release, if you want
24-
some background have a look at the respective
25-
[release notes](https://github.com/ethereumjs/ethereumjs-vm/releases/tag/v2.5.0).
20+
- `Petersburg` (default)
2621

2722
If you are still looking for a [Spurious Dragon](https://github.com/ethereum/EIPs/blob/master/EIPS/eip-607.md) compatible version of this library install the latest of the ``2.2.x`` series (see [Changelog](./CHANGELOG.md)).
2823

@@ -60,9 +55,7 @@ For documentation on ``VM`` instantiation, exposed API and emitted ``events`` se
6055

6156
## StateManger
6257

63-
The API for the ``StateManager`` is currently in ``Beta``, separate documentation can be found [here](./docs/stateManager.md).
64-
65-
The ``StateManager`` API has been largely reworked recently and the ``StateManager`` will be removed from the VM and provided as a separate package in a future ``v3.0.0`` release, see [release notes](https://github.com/ethereumjs/ethereumjs-vm/releases/tag/v2.5.0) for the ``v2.5.0`` VM release for further details.
58+
The API for the ``StateManager`` is currently in ``Beta``, separate documentation can be found [here](./docs/stateManager.md), see also [release notes](https://github.com/ethereumjs/ethereumjs-vm/releases/tag/v2.5.0) from the ``v2.5.0`` VM release for details on the ``StateManager`` rewrite.
6659

6760
# Internal Structure
6861
The VM processes state changes at many levels.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "ethereumjs-vm",
3-
"version": "2.6.0",
3+
"version": "3.0.0",
44
"description": "An Ethereum VM implementation",
55
"main": "dist/index.js",
66
"files": [

0 commit comments

Comments
 (0)