UNPKG

43.8 kBMarkdownView Raw
1# Changelog
2
3All notable changes to this project will be documented in this file.
4
5The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
6(modification: no type change headlines) and this project adheres to
7[Semantic Versioning](http://semver.org/spec/v2.0.0.html).
8
9## [4.2.0] - 2020-05-05
10
11This is a maintenance release preceding the v5.
12
13**API**
14
15- Adding optional fields `skipNonce` and `skipBalance` to the [`runBlock`](https://github.com/ethereum-ts/ethereumjs-vm/blob/46a79d7c3e3e38343e285fc1d15cc8b51f378609/lib/runBlock.ts#L81) function
16 PR [#663](https://github.com/ethereumjs/ethereumjs-vm/pull/663)
17- Added `codeAddress` to the `step` event, allowing to have an address disambiguation when running `DELEGATECALL` or `CALLCODE`
18 PR [#651](https://github.com/ethereumjs/ethereumjs-vm/pull/651)
19
20**Fixes**
21
22- Properly copying BigNumbers on stack.
23 PR [#733](https://github.com/ethereumjs/ethereumjs-vm/pull/733)
24- Fixes installation on Node 12, by bumping `level` dependency from `^4.0.0` to `^6.0.0`
25 PR [#662](https://github.com/ethereumjs/ethereumjs-vm/pull/662)
26
27**Internal**
28
29- StateManager tests are now ran in the browser context as well.
30 PR [#653](https://github.com/ethereumjs/ethereumjs-vm/pull/653)
31- Run tests with `ts-node`
32 PRs [#654](https://github.com/ethereumjs/ethereumjs-vm/pull/654), [#658](https://github.com/ethereumjs/ethereumjs-vm/pull/658)
33
34[4.2.0]: https://github.com/ethereumjs/ethereumjs-vm/compare/%40ethereumjs%2Fvm%404.1.3...%40ethereumjs%2Fvm%404.1.4
35
36## [4.1.3] - 2020-01-09
37
38This release fixes a critical bug preventing the `MuirGlacier` release `4.1.2`
39working properly, an update is mandatory if you want a working installation.
40
41**Bug Fixes**
42
43- Fixed `getOpcodesForHF()` opcode selection for any HF > Istanbul,
44 PR [#647](https://github.com/ethereumjs/ethereumjs-vm/pull/647)
45
46**Test Related Changes**
47
48- Switched from `Coveralls` to `Codecov` (monorepo preparation, coverage
49 reports on PRs),
50 PR [#646](https://github.com/ethereumjs/ethereumjs-vm/pull/646)
51- Added nightly `StateTests` runs,
52 PR [#639](https://github.com/ethereumjs/ethereumjs-vm/pull/639)
53- Run consensus tests on `MuirGlacier`,
54 PR [#648](https://github.com/ethereumjs/ethereumjs-vm/pull/648)
55
56[4.1.3]: https://github.com/ethereumjs/ethereumjs-vm/compare/v4.1.2...v4.1.3
57
58## [4.1.2] - 2019-12-19 [DEPRECATED]
59
60**Deprecation Notice**: This is a broken release containing a critical bug
61affecting all installations using the `MuirGlacier` HF option. Please update
62to the `4.1.3` release.
63
64Release adds support for the `MuirGlacier` hardfork by updating relevant
65dependencies:
66
67- `ethereumjs-tx`:
68 [v2.1.2](https://github.com/ethereumjs/ethereumjs-tx/releases/tag/v2.1.2)
69- `ethereumjs-block`:
70 [v2.2.2](https://github.com/ethereumjs/ethereumjs-block/releases/tag/v2.2.2)
71- `ethereumjs-blockchain`:
72 [v4.0.3](https://github.com/ethereumjs/ethereumjs-blockchain/releases/tag/v4.0.3)
73- `ethereumjs-common`:
74 [v1.5.0](https://github.com/ethereumjs/ethereumjs-common/releases/tag/v1.5.0)
75
76Other changes:
77
78- Upgraded `ethereumjs-util` to `v6.2.0`,
79 PR [#621](https://github.com/ethereumjs/ethereumjs-vm/pull/621)
80- Removed outdated cb param definition in `runBlockchain`,
81 PR [#623](https://github.com/ethereumjs/ethereumjs-vm/pull/623)
82- Properly output zero balance in `examples/run-transactions-complete`,
83 PR [#624](https://github.com/ethereumjs/ethereumjs-vm/pull/624)
84
85[4.1.2]: https://github.com/ethereumjs/ethereumjs-vm/compare/v4.1.1...v4.1.2
86
87## [4.1.1] - 2019-11-19
88
89First stable `Istanbul` release passing all `StateTests` and `BlockchainTests`
90from the official Ethereum test suite
91[v7.0.0-beta.1](https://github.com/ethereum/tests/releases/tag/v7.0.0-beta.1).
92Test suite conformance have been reached along work on
93PR [#607](https://github.com/ethereumjs/ethereumjs-vm/pull/607) (thanks @s1na!)
94and there were several fixes along the way, so it is strongly recommended that
95you upgrade from the first `beta` `Istanbul` release `v4.1.0`.
96
97**Istanbul Related Fixes**
98
99- Refund counter has been moved from the `EEI` to the `EVM` module,
100 PR [#612](https://github.com/ethereumjs/ethereumjs-vm/pull/612), `gasRefund`
101 is re-added to the `execResult` in the `EVM` module at the end of message
102 execution in `EVM` to remain (for the most part) backwards-compatible in the
103 release
104- Fixed `blake2f` precompile for rounds > `0x4000000`
105- Fixed issues causing `RevertPrecompiled*` test failures
106- Fixed an issue where the `RIPEMD` precompile has to remain _touched_ even
107 when the call reverts and be considered for deletion,
108 see [EIP issue #716](https://github.com/ethereum/EIPs/issues/716) for context
109- Updated `ethereumjs-block` to `v2.2.1`
110- Updated `ethereumjs-blockchain` to `v4.0.2`
111- Limited `ethereumjs-util` from `^6.1.0` to `~6.1.0`
112- Hardfork-related fixes in test runners and test utilities
113
114**Other Changes**
115
116- Introduction of a new caching mechanism to cache calls towards `promisify`
117 being present in hot paths (performance optimization),
118 PR [#600](https://github.com/ethereumjs/ethereumjs-vm/pull/600)
119- Renamed some missing `result.return` to `result.returnValue` on `EVM`
120 execution in examples,
121 PR [#604](https://github.com/ethereumjs/ethereumjs-vm/pull/604)
122- Improved event documentation,
123 PR [#601](https://github.com/ethereumjs/ethereumjs-vm/pull/601)
124
125[4.1.1]: https://github.com/ethereumjs/ethereumjs-vm/compare/v4.1.0...v4.1.1
126
127## [4.1.0] - 2019-09-12
128
129This is the first feature-complete `Istanbul` release, containing implementations
130for all 6 EIPs, see the HF meta EIP [EIP-1679](https://eips.ethereum.org/EIPS/eip-1679)
131for an overview. Beside this release contains further unrelated features as
132well as bug fixes.
133
134Note that `Istanbul` support is still labeled as `beta`. All implementations
135have only basic test coverage since the official Ethereum consensus tests are
136not yet merged. There might be also last minute changes to EIPs during the
137testing period.
138
139**Istanbul Summary**
140
141See the VM `Istanbul` hardfork meta issue
142[#501](https://github.com/ethereumjs/ethereumjs-vm/issues/501) for a summary
143on all the changes.
144
145Added EIPs:
146
147- [EIP-152](https://eips.ethereum.org/EIPS/eip-152): Blake 2b `F` precompile,
148 PR [#584](https://github.com/ethereumjs/ethereumjs-vm/pull/584)
149- [EIP-1108](https://eips.ethereum.org/EIPS/eip-1108): Reduce `alt_bn128`
150 precompile gas costs,
151 PR [#540](https://github.com/ethereumjs/ethereumjs-vm/pull/540)
152 (already released in `v4.0.0`)
153- [EIP-1344](https://eips.ethereum.org/EIPS/eip-1344): Add ChainID Opcode,
154 PR [#572](https://github.com/ethereumjs/ethereumjs-vm/pull/572)
155- [EIP-1884](https://eips.ethereum.org/EIPS/eip-1884): Trie-size-dependent
156 Opcode Repricing,
157 PR [#581](https://github.com/ethereumjs/ethereumjs-vm/pull/581)
158- [EIP-2200](https://eips.ethereum.org/EIPS/eip-2200): Rebalance net-metered
159 SSTORE gas costs,
160 PR [#590](https://github.com/ethereumjs/ethereumjs-vm/pull/590)
161
162**Other Features**
163
164- Two new event types `beforeMessage` and `afterMessage`, emitting a `Message`
165 before and an `EVMResult` after running a `Message`, see also the
166 [updated section](https://github.com/ethereumjs/ethereumjs-vm#vms-tracing-events)
167 in the `README` on this,
168 PR [#577](https://github.com/ethereumjs/ethereumjs-vm/pull/577)
169
170**Bug Fixes**
171
172- Transaction error strings should not contain multiple consecutive whitespace
173 characters, this has been fixed,
174 PR [#578](https://github.com/ethereumjs/ethereumjs-vm/pull/578)
175- Fixed `vm.stateManager.generateCanonicalGenesis()` to produce a correct
176 genesis block state root (in particular for the `Goerli` testnet),
177 PR [#589](https://github.com/ethereumjs/ethereumjs-vm/pull/589)
178
179**Refactoring / Docs**
180
181- Preparation for separate lists of opcodes for the different HFs,
182 PR [#582](https://github.com/ethereumjs/ethereumjs-vm/pull/582),
183 see also follow-up
184 PR [#592](https://github.com/ethereumjs/ethereumjs-vm/pull/592) making this
185 list a property of the VM instance
186- Clarification in the docs for the behavior of the `activatePrecompiles`
187 VM option,
188 PR [#595](https://github.com/ethereumjs/ethereumjs-vm/pull/595)
189
190[4.1.0]: https://github.com/ethereumjs/ethereumjs-vm/compare/v4.0.0...v4.1.0
191
192## [4.0.0] - 2019-08-06
193
194First `TypeScript` based VM release, other highlights:
195
196- New Call and Code Loop Structure / EVM Encapsulation
197- EEI for Environment Communication
198- Istanbul Process Start
199- Promise-based API
200
201See [v4.0.0-beta.1](https://github.com/ethereumjs/ethereumjs-vm/releases/tag/v4.0.0-beta.1)
202release for full release notes.
203
204**Changes since last beta**
205
206- Simplification of execution results,
207 PR [#551](https://github.com/ethereumjs/ethereumjs-vm/pull/551)
208- Fix error propagation in `Cache.flush()` method from `StateManager`,
209 PR [#562](https://github.com/ethereumjs/ethereumjs-vm/pull/562)
210- `StateManager` storage key length validation (now throws on addresses not
211 having a 32-byte length),
212 PR [#565](https://github.com/ethereumjs/ethereumjs-vm/pull/565)
213
214[4.0.0]: https://github.com/ethereumjs/ethereumjs-vm/compare/v4.0.0-beta.1...v4.0.0
215
216## [4.0.0-beta.1] - 2019-06-19
217
218Since changes in this release are pretty deep reaching and broadly distributed,
219we will first drop out one or several `beta` releases until we are confident on
220both external API as well as inner structural changes. See
221[v4 branch](https://github.com/ethereumjs/ethereumjs-vm/pull/479) for some
222major entry point into the work on the release.
223
224It is highly recommended that you do some testing of your library against this
225and following `beta` versions and give us some feedback!
226
227These will be the main release notes for the `v4` feature updates, subsequent
228`beta` releases and the final release will just publish the delta changes and
229point here for reference.
230
231Breaking changes in the release notes are preeceeded with `[BREAKING]`, do a
232search for an overview.
233
234The outstanding work of [@s1na](https://github.com/s1na) has to be mentioned
235here. He has done the very large portion of the coding and without him this
236release wouldn't have been possible. Thanks Sina! 🙂
237
238So what's new?
239
240### TypeScript
241
242This is the first `TypeScript` release of the VM (yay! 🎉).
243
244`TypeScript` handles `ES6` transpilation
245[a bit differently](https://github.com/Microsoft/TypeScript/issues/2719) (at the
246end: cleaner) than `babel` so `require` syntax of the library slightly changes to:
247
248```javascript
249const VM = require('ethereumjs-vm').default
250```
251
252The library now also comes with **type declaration files** distributed along
253with the package published.
254
255##### Relevant PRs
256
257- Preparation, migration of `Bloom`, `Stack` and `Memory`,
258 PR [#495](https://github.com/ethereumjs/ethereumjs-vm/pull/495)
259- `StateManager` migration,
260 PR [#496](https://github.com/ethereumjs/ethereumjs-vm/pull/496)
261- Migration of precompiles, opcode list, `EEI`, `Message`, `TxContext` to
262 `TypeScript`, PR [#497](https://github.com/ethereumjs/ethereumjs-vm/pull/497)
263- Migration of `EVM` (old: `Interpreter`) and exceptions,
264 PR [#504](https://github.com/ethereumjs/ethereumjs-vm/pull/504)
265- Migration of `Interpreter` (old: `Loop`),
266 PR [#505](https://github.com/ethereumjs/ethereumjs-vm/pull/505)
267- Migration of `opFns` (opcode implementations),
268 PR [#506](https://github.com/ethereumjs/ethereumjs-vm/pull/506)
269- Migration of the main `index.js` `VM` class,
270 PR [#507](https://github.com/ethereumjs/ethereumjs-vm/pull/507)
271- Migration of `VM.runCode()`,
272 PR [#508](https://github.com/ethereumjs/ethereumjs-vm/pull/508)
273- Migration of `VM.runCall()`,
274 PR [#510](https://github.com/ethereumjs/ethereumjs-vm/pull/510)
275- Migration of `VM.runTx()`,
276 PR [#511](https://github.com/ethereumjs/ethereumjs-vm/pull/511)
277- Migration of `VM.runBlock()`,
278 PR [#512](https://github.com/ethereumjs/ethereumjs-vm/pull/512)
279- Migration of `VM.runBlockchain()`,
280 PR [#517](https://github.com/ethereumjs/ethereumjs-vm/pull/517)
281- `TypeScript` finalization PR, config switch,
282 PR [#518](https://github.com/ethereumjs/ethereumjs-vm/pull/518)
283- Doc generation via `TypeDoc`,
284 PR [#522](https://github.com/ethereumjs/ethereumjs-vm/pull/522)
285
286### EVM Modularization and Structural Refactoring
287
288##### New Call and Code Loop Structure / EVM Encapsulation
289
290This release switches to a new class based and promisified structure for
291working down VM calls and running through code loops, and encapsulates this
292logic to be bound to the specific `EVM` (so the classical Ethereum Virtual Machine)
293implementation in the
294[evm](https://github.com/ethereumjs/ethereumjs-vm/tree/master/lib/evm) module,
295opening the way for a future parallel `eWASM` additional implementation.
296
297This new logic is mainly handled by the two new classes `EVM` (old: `Interpreter`)
298and `Interpreter` (old: `Loop`),
299see PR [#483](https://github.com/ethereumjs/ethereumjs-vm/pull/483)
300for the initial work on this. The old `VM.runCall()` and `VM.runCode()`
301methods are just kept as being wrappers and will likely be deprecated on future
302releases once the inner API structure further stabilizes.
303
304This new structure should make extending the VM by subclassing and
305adopting functionality much easier, e.g. by changing opcode functionality or adding
306custom onces by using an own `Interpreter.getOpHandler()` implementation. You are
307highly encouraged to play around, see what you can do and give us feedback on
308possibilities and limitations.
309
310#### EEI for Environment Communication
311
312For interacting with the blockchain environment there has been introduced a
313dedicated `EEI` (Ethereum Environment Interface) module closely resembling the
314respective
315[EEI spec](https://github.com/ewasm/design/blob/master/eth_interface.md), see
316PR [#486](https://github.com/ethereumjs/ethereumjs-vm/pull/486) for the initial
317work.
318
319This makes handling of environmental data by the VM a lot cleaner and transparent
320and should as well allow for much easier extension and modification.
321
322##### Changes
323
324- Detached precompiles from the VM,
325 PR [#492](https://github.com/ethereumjs/ethereumjs-vm/pull/492)
326- Subdivided `runState`, refactored `Interpreter` (old: `Loop`),
327 PR [#498](https://github.com/ethereumjs/ethereumjs-vm/pull/498)
328- [BREAKING] Dropped `emitFreeLogs` flag, to replace it is suggested to
329 implement by inheriting `Interpreter` (old: `Loop`),
330 PR [#498](https://github.com/ethereumjs/ethereumjs-vm/pull/498)
331- Split `EVM.executeMessage()` with `EVM.executeCall()` and
332 `EVM.executeCreate()` for `call` and `create` specific logic
333 (old names: `Interpreter.[METHOD_NAME]()`),
334 PR [#499](https://github.com/ethereumjs/ethereumjs-vm/pull/499)
335- Further simplification of `Interpreter`/`EVM`
336 (old: `Loop`/`Interpreter`) structure,
337 PR [#506](https://github.com/ethereumjs/ethereumjs-vm/pull/506)
338- [BREAKING] Dropped `VM.runJit()` in favor of direct handling in
339 `EVM` (old: `Interpreter`),
340 officially not part of the external API but mentioning just in case,
341 PR [#515](https://github.com/ethereumjs/ethereumjs-vm/pull/515)
342- Removed `StorageReader`, moved logic to `StateManager`,
343 [#534](https://github.com/ethereumjs/ethereumjs-vm/pull/534)
344
345### Istanbul Process Start
346
347With this release we start the `Istanbul` hardfork integration process and
348have activated the `istanbul` `hardfork` option for the constructor.
349
350This is meant to be used experimentation and reference implementations, we have made
351a start with integrating draft [EIP-1108](https://eips.ethereum.org/EIPS/eip-1108)
352`Istanbul` candidate support reducing the gas costs for `alt_bn128` precompiles,
353see PR [#539](https://github.com/ethereumjs/ethereumjs-vm/issues/539) for
354implementation details.
355
356Note that this is still very early in the process since no EIP in a final
357state is actually accepted for being included into `Istanbul` on the time of
358release. The `v4` release series will be kept as an experimental series
359during the process with breaking changes introduced along the way without too
360much notice, so be careful and tighten the VM dependency if you want to give
361your users the chance for some early experimentation with some specific
362implementation state.
363
364Once scope of `Istanbul` as well as associated EIPs are finalized a stable
365`Istanbul` VM version will be released as a subsequent major release.
366
367### Code Modernization and Version Updates
368
369The main API with the `v4` release switches from being `callback` based to
370using promises,
371see PR [#546](https://github.com/ethereumjs/ethereumjs-vm/pull/546).
372
373Here is an example for changed API call `runTx`.
374
375Old `callback`-style invocation:
376
377```javascript
378vm.runTx(
379 {
380 tx: tx,
381 },
382 function(err, result) {
383 if (err) {
384 // Handle errors appropriately
385 }
386 // Do something with the result
387 },
388)
389```
390
391Promisified usage:
392
393```javascript
394try {
395 let result = await vm.runTx({ tx: tx })
396 // Do something with the result
397} catch (err) {
398 // handle errors appropriately
399}
400```
401
402##### Code Modernization Changes
403
404- Promisified internal usage of async opcode handlers,
405 PR [#491](https://github.com/ethereumjs/ethereumjs-vm/pull/491)
406- Promisified `runTx` internals,
407 PR [#493](https://github.com/ethereumjs/ethereumjs-vm/pull/493)
408- Promisified `runBlock` internals, restructure, reduced shared global state,
409 PR [#494](https://github.com/ethereumjs/ethereumjs-vm/pull/494)
410
411##### Version Updates
412
413- Updated `ethereumjs-account` from `2.x` to `3.x`, part of
414 PR [#496](https://github.com/ethereumjs/ethereumjs-vm/pull/496)
415
416##### Features
417
418- The VM now also supports a
419 [Common](https://github.com/ethereumjs/ethereumjs-common)
420 class instance for chain and HF setting,
421 PRs [#525](https://github.com/ethereumjs/ethereumjs-vm/pull/525) and
422 [#526](https://github.com/ethereumjs/ethereumjs-vm/pull/526)
423
424##### Bug Fixes
425
426- Fixed error message in `runTx()`,
427 PR [#523](https://github.com/ethereumjs/ethereumjs-vm/pull/523)
428- Changed default hardfork in `StateManager` to `petersburg`,
429 PR [#524](https://github.com/ethereumjs/ethereumjs-vm/pull/524)
430- Replaced `Object.assign()` calls and fixed type errors,
431 PR [#529](https://github.com/ethereumjs/ethereumjs-vm/pull/529)
432
433#### Development
434
435- Significant blockchain test speed improvements,
436 PR [#536](https://github.com/ethereumjs/ethereumjs-vm/pull/536)
437
438[4.0.0-beta.1]: https://github.com/ethereumjs/ethereumjs-vm/compare/v3.0.0...v4.0.0-beta.1
439
440## [3.0.0] - 2019-03-29
441
442This release comes with a modernized `ES6`-class structured code base, some
443significant local refactoring work regarding how `Stack` and `Memory`
444are organized within the VM and it finalizes a first round of module structuring
445now having separate folders for `bloom`, `evm` and `state` related code. The
446release also removes some rarely used parts of the API (`hookedVM`, `VM.deps`).
447
448All this is to a large extend preparatory work for a `v4.0.0` release which will
449follow in the next months with `TypeScript` support and more system-wide
450refactoring work leading to a more modular and expandable VM and providing the
451ground for future `eWASM` integration. If you are interested in the release
452process and want to take part in the refactoring discussion see the associated
453issue [#455](https://github.com/ethereumjs/ethereumjs-vm/issues/455).
454
455**VM Refactoring/Breaking Changes**
456
457- New `Memory` class for evm memory manipulation,
458 PR [#442](https://github.com/ethereumjs/ethereumjs-vm/pull/442)
459- Refactored `Stack` manipulation in evm,
460 PR [#460](https://github.com/ethereumjs/ethereumjs-vm/pull/460)
461- Dropped `createHookedVm` (BREAKING), being made obsolete by the
462 new `StateManager` API,
463 PR [#451](https://github.com/ethereumjs/ethereumjs-vm/pull/451)
464- Dropped `VM.deps` attribute (please require dependencies yourself if you
465 used this),
466 PR [#478](https://github.com/ethereumjs/ethereumjs-vm/pull/478)
467- Removed `fakeBlockchain` class and associated tests,
468 PR [#466](https://github.com/ethereumjs/ethereumjs-vm/pull/466)
469- The `petersburg` hardfork rules are now run as default
470 (before: `byzantium`),
471 PR [#485](https://github.com/ethereumjs/ethereumjs-vm/pull/485)
472
473**Modularization**
474
475- Renamed `vm` module to `evm`, move `precompiles` to `evm` module,
476 PR [#481](https://github.com/ethereumjs/ethereumjs-vm/pull/481)
477- Moved `stateManager`, `storageReader` and `cache` to `state` module,
478 [#443](https://github.com/ethereumjs/ethereumjs-vm/pull/443)
479- Replaced static VM `logTable` with dynamic inline version in `EXP` opcode,
480 [#450](https://github.com/ethereumjs/ethereumjs-vm/pull/450)
481
482**Code Modernization/ES6**
483
484- Converted `VM` to `ES6` class,
485 PR [#478](https://github.com/ethereumjs/ethereumjs-vm/pull/478)
486- Migrated `stateManager` and `storageReader` to `ES6` class syntax,
487 PR [#452](https://github.com/ethereumjs/ethereumjs-vm/pull/452)
488
489**Bug Fixes**
490
491- Fixed a bug where `stateManager.setStateRoot()` didn't clear
492 the `_storageTries` cache,
493 PR [#445](https://github.com/ethereumjs/ethereumjs-vm/issues/445)
494- Fixed longer output than return length in `CALL` opcode,
495 PR [#454](https://github.com/ethereumjs/ethereumjs-vm/pull/454)
496- Use `BN.toArrayLike()` instead of `BN.toBuffer()` (browser compatibility),
497 PR [#458](https://github.com/ethereumjs/ethereumjs-vm/pull/458)
498- Fixed tx value overflow 256 bits,
499 PR [#471](https://github.com/ethereumjs/ethereumjs-vm/pull/471)
500
501**Maintenance/Optimization**
502
503- Use `BN` reduction context in `MODEXP` precompile,
504 PR [#463](https://github.com/ethereumjs/ethereumjs-vm/pull/463)
505
506**Documentation**
507
508- Fixed API doc types for `Bloom` filter methods,
509 PR [#439](https://github.com/ethereumjs/ethereumjs-vm/pull/439)
510
511**Testing**
512
513- New Karma browser testing for the API tests,
514 PRs [#461](https://github.com/ethereumjs/ethereumjs-vm/pull/461),
515 [#468](https://github.com/ethereumjs/ethereumjs-vm/pull/468)
516- Removed unused parts and tests within the test setup,
517 PR [#437](https://github.com/ethereumjs/ethereumjs-vm/pull/437)
518- Fixed a bug using `--json` trace flag in the tests,
519 PR [#438](https://github.com/ethereumjs/ethereumjs-vm/pull/438)
520- Complete switch to Petersburg on tests, fix coverage,
521 PR [#448](https://github.com/ethereumjs/ethereumjs-vm/pull/448)
522- Added test for `StateManager.dumpStorage()`,
523 PR [#462](https://github.com/ethereumjs/ethereumjs-vm/pull/462)
524- Fixed `ecmul_0-3_5616_28000_96` (by test setup adoption),
525 PR [#473](https://github.com/ethereumjs/ethereumjs-vm/pull/473)
526
527[3.0.0]: https://github.com/ethereumjs/ethereumjs-vm/compare/v2.6.0...v3.0.0
528
529## [2.6.0] - 2019-02-07
530
531**Petersburg Support**
532
533Support for the `Petersburg` (aka `constantinopleFix`) hardfork by integrating
534`Petersburg` ready versions of associated libraries, see also
535PR [#433](https://github.com/ethereumjs/ethereumjs-vm/pull/433):
536
537- `ethereumjs-common` (chain and HF logic and helper functionality) [v1.1.0](https://github.com/ethereumjs/ethereumjs-common/releases/tag/v1.1.0)
538- `ethereumjs-blockchain` [v3.4.0](https://github.com/ethereumjs/ethereumjs-blockchain/releases/tag/v3.4.0)
539- `ethereumjs-block` [v2.2.0](https://github.com/ethereumjs/ethereumjs-block/releases)
540
541To instantiate the VM with `Petersburg` HF rules set the `opts.hardfork`
542constructor parameter to `petersburg`. This will run the VM on the new
543Petersburg rules having removed the support for
544[EIP 1283](https://eips.ethereum.org/EIPS/eip-1283).
545
546**Goerli Readiness**
547
548The VM is now also ready to execute on blocks from the final version of the
549[Goerli](https://github.com/goerli/testnet) cross-client testnet and can
550therefore be instantiated with `opts.chain` set to `goerli`.
551
552**Bug Fixes**
553
554- Fixed mixed `sync`/`async` functions in `cache`,
555 PR [#422](https://github.com/ethereumjs/ethereumjs-vm/pull/422)
556- Fixed a bug in `setStateroot` and caching by clearing the `stateManager` cache
557 after setting the state root such that stale values are not returned,
558 PR [#420](https://github.com/ethereumjs/ethereumjs-vm/pull/420)
559- Fixed cache access on the hooked VM (_deprecated_),
560 PR [#434](https://github.com/ethereumjs/ethereumjs-vm/pull/434)
561
562**Refactoring**
563
564Following changes might be relevant for you if you are hotfixing/monkey-patching
565on parts of the VM:
566
567- Moved `bloom` to its own directory,
568 PR [#429](https://github.com/ethereumjs/ethereumjs-vm/pull/429)
569- Moved `opcodes`, `opFns` and `logTable` to `lib/vm`,
570 PR [#425](https://github.com/ethereumjs/ethereumjs-vm/pull/425)
571- Converted `Bloom` to `ES6` class,
572 PR [#428](https://github.com/ethereumjs/ethereumjs-vm/pull/428)
573- Converted `Cache` to `ES6` class, added unit tests,
574 PR [427](https://github.com/ethereumjs/ethereumjs-vm/pull/427)
575
576[2.6.0]: https://github.com/ethereumjs/ethereumjs-vm/compare/v2.5.1...v2.6.0
577
578## [2.5.1] - 2019-01-19
579
580### Features
581
582- Added `memoryWordCount` to the `step` event object,
583 PR [#405](https://github.com/ethereumjs/ethereumjs-vm/pull/405)
584
585### Bug Fixes
586
587- Fixed a bug which caused an overwrite of the passed state trie (`opts.state`)
588 when instantiating the library with the `opts.activatePrecompiles` option,
589 PR [#415](https://github.com/ethereumjs/ethereumjs-vm/pull/415)
590- Fixed error handling in `runCode` (in case `loadContract` fails),
591 PR [#408](https://github.com/ethereumjs/ethereumjs-vm/pull/408)
592- Fixed a bug in the `StateManager.generateGenesis()` function,
593 PR [#400](https://github.com/ethereumjs/ethereumjs-vm/pull/400)
594
595### Tests
596
597- Upgraded `ethereumjs-blockchain` and `level` for test runs,
598 PR [#414](https://github.com/ethereumjs/ethereumjs-vm/pull/414)
599- Fixed issue when running code coverage on PRs from forks,
600 PR [#402](https://github.com/ethereumjs/ethereumjs-vm/pull/402)
601
602[2.5.1]: https://github.com/ethereumjs/ethereumjs-vm/compare/v2.5.0...v2.5.1
603
604## [2.5.0] - 2018-11-21
605
606This is the first release of the VM with full support for all `Constantinople` EIPs. It further comes along with huge improvements on consensus conformity and introduces the `Beta` version of a new `StateManager` API.
607
608### Constantinople Support
609
610For running the VM with `Constantinople` hardfork rules, set the [option](https://github.com/ethereumjs/ethereumjs-vm/blob/master/docs/index.md#vm) in the `VM` constructor `opts.hardfork` to `constantinople`. Supported hardforks are `byzantium` and `constantinople`, `default` setting will stay on `byzantium` for now but this will change in a future release.
611
612Changes related to Constantinople:
613
614- EIP 1283 `SSTORE`, see PR [#367](https://github.com/ethereumjs/ethereumjs-vm/pull/367)
615- EIP 1014 `CREATE2`, see PR [#329](https://github.com/ethereumjs/ethereumjs-vm/pull/329)
616- EIP 1052 `EXTCODEHASH`, see PR [#324](https://github.com/ethereumjs/ethereumjs-vm/pull/324)
617- Constantinople ready versions of [ethereumjs-block](https://github.com/ethereumjs/ethereumjs-block/releases/tag/v2.1.0) and [ethereumjs-blockchain](https://github.com/ethereumjs/ethereumjs-blockchain/releases/tag/v3.3.0) dependencies (difficulty bomb delay), see PRs [#371](https://github.com/ethereumjs/ethereumjs-vm/pull/371), [#325](https://github.com/ethereumjs/ethereumjs-vm/pull/325)
618
619### Consensus Conformity
620
621This release is making a huge leap forward regarding consensus conformity, and even if you are not interested in `Constantinople` support at all, you should upgrade just for this reason. Some context: we couldn't run blockchain tests for a long time on a steady basis due to performance constraints and when we re-triggered a test run after quite some time with PR [#341](https://github.com/ethereumjs/ethereumjs-vm/pull/341) the result was a bit depressing with over 300 failing tests. Thanks to joined efforts from the community and core team members we could bring this down far quicker than expected and this is the first release for a long time which practically comes with complete consensus conformity - with just three recently added tests failing (see `skipBroken` list in `tests/tester.js`) and otherwise passing all blockchain tests and all state tests for both `Constantinople` and `Byzantium` rules. 🏆 🏆 🏆
622
623Consensus Conformity related changes:
624
625- Reset `selfdestruct` on `REVERT`, see PR [#392](https://github.com/ethereumjs/ethereumjs-vm/pull/392)
626- Undo `Bloom` filter changes from PR [#295](https://github.com/ethereumjs/ethereumjs-vm/pull/295), see PR [#384](https://github.com/ethereumjs/ethereumjs-vm/pull/384)
627- Fixes broken `BLOCKHASH` opcode, see PR [#381](https://github.com/ethereumjs/ethereumjs-vm/pull/381)
628- Fix failing blockchain test `GasLimitHigherThan2p63m1`, see PR [#380](https://github.com/ethereumjs/ethereumjs-vm/pull/380)
629- Stop adding `account` to `cache` when checking if it is empty, see PR [#375](https://github.com/ethereumjs/ethereumjs-vm/pull/375)
630
631### State Manager Interface
632
633The `StateManager` (`lib/stateManager.js`) - providing a high-level interface to account and contract data from the underlying state trie structure - has been completely reworked and there is now a close-to-being finalized API (currently marked as `Beta`) coming with its own [documentation](https://github.com/ethereumjs/ethereumjs-vm/blob/master/docs/stateManager.md).
634
635This comes along with larger refactoring work throughout more-or-less the whole code base and the `StateManager` now completely encapsulates the trie structure and the cache backend used, see issue [#268](https://github.com/ethereumjs/ethereumjs-vm/issues/268) and associated PRs for reference. This will make it much easier in the future to bring along an own state manager serving special needs (optimized for memory and performance, run on mobile,...) by e.g. using a different trie implementation, cache or underlying storage or database backend.
636
637We plan to completely separate the currently still integrated state manager into its own repository in one of the next releases, this will then be a breaking `v3.0.0` release. Discussion around a finalized interface (we might e.g. drop all genesis-releated methods respectively methods implemented in the `DefaultStateManager`) is still ongoing and you are very much invited to jump in and articulate your needs, just take e.g. the issue mentioned above as an entry point.
638
639Change related to the new `StateManager` interface:
640
641- `StateManager` interface simplification, see PR [#388](https://github.com/ethereumjs/ethereumjs-vm/pull/388)
642- Make `StateManager` cache and trie private, see PR [#385](https://github.com/ethereumjs/ethereumjs-vm/pull/385)
643- Remove vm accesses to `StateManager` `trie` and `cache`, see PR [#376](https://github.com/ethereumjs/ethereumjs-vm/pull/376)
644- Remove explicit direct cache interactions, see PR [#366](https://github.com/ethereumjs/ethereumjs-vm/pull/366)
645- Remove contract specific commit, see PR [#335](https://github.com/ethereumjs/ethereumjs-vm/pull/335)
646- Fixed incorrect references to `trie` in tests, see PR [#345](https://github.com/ethereumjs/ethereumjs-vm/pull/345)
647- Added `StateManager` API documentation, see PR [#393](https://github.com/ethereumjs/ethereumjs-vm/pull/393)
648
649### New Features
650
651- New `emitFreeLogs` option, allowing any contract to emit an unlimited quantity of events without modifying the block gas limit (default: `false`) which can be used in debugging contexts, see PRs [#378](https://github.com/ethereumjs/ethereumjs-vm/pull/378), [#379](https://github.com/ethereumjs/ethereumjs-vm/pull/379)
652
653### Testing and Documentation
654
655Beyond the reintegrated blockchain tests there is now a separate test suite to test the API of the library, see `tests/api`. This should largely reduce the risk of introducing new bugs on the API level on future changes, generally ease the development process by being able to develop against the specific tests and also allows using the tests as a reference for examples on how to use the API.
656
657On the documentation side the API documentation has also been consolidated and there is now a unified and auto-generated [API documentation](https://github.com/ethereumjs/ethereumjs-vm/blob/master/docs/index.md) (previously being manually edited (and too often forgotten) in `README`).
658
659- Added API tests for `index.js`, `StateManager`, see PR [#364](https://github.com/ethereumjs/ethereumjs-vm/pull/364)
660- Added API Tests for `runJit` and `fakeBlockchain`, see PR [#331](https://github.com/ethereumjs/ethereumjs-vm/pull/331)
661- Added API tests for `runBlockchain`, see PR [#336](https://github.com/ethereumjs/ethereumjs-vm/pull/336)
662- Added `runBlock` API tests, see PR [#360](https://github.com/ethereumjs/ethereumjs-vm/pull/360)
663- Added `runTx` API tests, see PR [#352](https://github.com/ethereumjs/ethereumjs-vm/pull/352)
664- Added API Tests for the `Bloom` module, see PR [#330](https://github.com/ethereumjs/ethereumjs-vm/pull/330)
665- New consistent auto-generated [API documentation](https://github.com/ethereumjs/ethereumjs-vm/blob/master/docs/index.md), see PR [#377](https://github.com/ethereumjs/ethereumjs-vm/pull/377)
666- Blockchain tests now run by default on CI, see PR [#374](https://github.com/ethereumjs/ethereumjs-vm/pull/374)
667- Switched from `istanbul` to `nyc`, see PR [#334](https://github.com/ethereumjs/ethereumjs-vm/pull/334)
668- Usage of `sealEngine` in blockchain tests, see PR [#373](https://github.com/ethereumjs/ethereumjs-vm/pull/373)
669- New `tap-spec` option to get a formatted test run result summary, see [README](https://github.com/ethereumjs/ethereumjs-vm#running-tests-with-a-reporterformatter), see PR [#363](https://github.com/ethereumjs/ethereumjs-vm/pull/363)
670- Updates/fixes on the JSDoc comments, see PRs [#362](https://github.com/ethereumjs/ethereumjs-vm/pull/362), [#361](https://github.com/ethereumjs/ethereumjs-vm/pull/361)
671
672### Bug Fixes and Maintenance
673
674Some bug fix and maintenance updates:
675
676- Fix error handling in `fakeBlockChain`, see PR [#320](https://github.com/ethereumjs/ethereumjs-vm/pull/320)
677- Update of `ethereumjs-util` to [v6.0.0](https://github.com/ethereumjs/ethereumjs-util/releases/tag/v6.0.0), see PR [#369](https://github.com/ethereumjs/ethereumjs-vm/pull/369)
678
679### Thank You
680
681Special thanks to:
682
683- @mattdean-digicatapult for his indefatigable work on the new StateManager interface and for fixing a large portion of the failing blockchain tests
684- @rmeissner for the work on Constantinople
685- @vpulim for jumping in so quickly and doing a reliable `SSTORE` implementation within 4 days
686- @s1na for the new API test suite
687
688Beyond this release contains contributions from the following people:
689@jwasinger, @Agusx1211, @HolgerD77, @danjm, @whymarrh, @seesemichaelj, @kn
690
691Thank you all very much, and thanks @axic for keeping an ongoing eye on overall library quality!
692
693[2.5.0]: https://github.com/ethereumjs/ethereumjs-vm/compare/v2.4.0...v2.5.0
694
695## [2.4.0] - 2018-07-27
696
697With the `2.4.x` release series we now start to gradually add `Constantinople` features with the
698bitwise shifting instructions from [EIP 145](https://eips.ethereum.org/EIPS/eip-145)
699making the start being introduced in the `v2.4.0` release.
700
701Since both the scope of the `Constantinople` hardfork as well as the state of at least some of the EIPs
702to be included are not yet finalized, this is only meant for `EXPERIMENTAL` purposes, e.g. for developer
703tools to give users early access and make themself familiar with dedicated features.
704
705Once scope and EIPs from `Constantinople` are final we will target a `v2.5.0` release which will officially
706introduce `Constantinople` support with all the changes bundled together.
707
708Note that from this release on we also introduce new `chain` (default: `mainnet`) and `hardfork`
709(default: `byzantium`) initialization parameters, which make use of our new [ethereumjs-common](https://github.com/ethereumjs/ethereumjs-common) library and in the future will allow
710for parallel hardfork support from `Byzantium` onwards.
711
712Since `hardfork` default might be changed or dropped in future releases, you might want to explicitly
713set this to `byzantium` on your next update to avoid future unexpected behavior.
714
715All the changes from this release:
716
717**FEATURES/FUNCTIONALITY**
718
719- Improved chain and fork support, see PR [#304](https://github.com/ethereumjs/ethereumjs-vm/pull/304)
720- Support for the `Constantinople` bitwise shifiting instructions `SHL`, `SHR` and `SAR`, see PR [#251](https://github.com/ethereumjs/ethereumjs-vm/pull/251)
721- New `newContract` event which can be used to do interrupting tasks on contract/address creation, see PR [#306](https://github.com/ethereumjs/ethereumjs-vm/pull/306)
722- Alignment of behavior of bloom filter hashing to go along with mainnet compatible clients _BREAKING_, see PR [#295](https://github.com/ethereumjs/ethereumjs-vm/pull/295)
723
724**UPDATES/TESTING**
725
726- Usage of the latest `rustbn.js` API, see PR [#312](https://github.com/ethereumjs/ethereumjs-vm/pull/312)
727- Some cleanup in precompile error handling, see PR [#318](https://github.com/ethereumjs/ethereumjs-vm/pull/318)
728- Some cleanup for `StateManager`, see PR [#266](https://github.com/ethereumjs/ethereumjs-vm/pull/266)
729- Renaming of `util.sha3` usages to `util.keccak256` and bump `ethereumjs-util` to `v5.2.0` (you should do to if you use `ethereumjs-util`)
730- Parallel testing of the`Byzantium` and `Constantinople` state tests, see PR [#317](https://github.com/ethereumjs/ethereumjs-vm/pull/317)
731- For lower build times our CI configuration now runs solely on `CircleCI` and support for `Travis` have been dropped, see PR [#316](https://github.com/ethereumjs/ethereumjs-vm/pull/316)
732
733**BUG FIXES**
734
735- Programmatic runtime errors in the VM execution context (within an opcode) are no longer absorbed and displayed as a VMError but explicitly thrown, allowing for easier discovery of implementation bugs, see PR [#307](https://github.com/ethereumjs/ethereumjs-vm/pull/307)
736- Fix of the `Bloom.check()` method not working properly, see PR [#311](https://github.com/ethereumjs/ethereumjs-vm/pull/311)
737- Fix a bug when `REVERT` is used within a `CREATE` context, see PR [#297](https://github.com/ethereumjs/ethereumjs-vm/pull/297)
738- Fix a bug in `FakeBlockChain` error handing, see PR [#320](https://github.com/ethereumjs/ethereumjs-vm/pull/320)
739
740[2.4.0]: https://github.com/ethereumjs/ethereumjs-vm/compare/v2.3.5...v2.4.0
741
742## [2.3.5] - 2018-04-25
743
744- Fixed `BYTE` opcode return value bug, PR [#293](https://github.com/ethereumjs/ethereumjs-vm/pull/293)
745- Clean up touched-accounts management in `StateManager`, PR [#287](https://github.com/ethereumjs/ethereumjs-vm/pull/287)
746- New `stateManager.copy()` function, PR [#276](https://github.com/ethereumjs/ethereumjs-vm/pull/276)
747- Updated Circle CI configuration to 2.0 format, PR [#292](https://github.com/ethereumjs/ethereumjs-vm/pull/292)
748
749[2.3.5]: https://github.com/ethereumjs/ethereumjs-vm/compare/v2.3.4...v2.3.5
750
751## [2.3.4] - 2018-04-06
752
753- Support of external statemanager in VM constructor (experimental), PR [#264](https://github.com/ethereumjs/ethereumjs-vm/pull/264)
754- `ES5` distribution on npm for better toolchain compatibility, PR [#281](https://github.com/ethereumjs/ethereumjs-vm/pull/281)
755- `allowUnlimitedContractSize` VM option for debugging purposes, PR [#282](https://github.com/ethereumjs/ethereumjs-vm/pull/282)
756- Added `gasRefund` to transaction results, PR [#284](https://github.com/ethereumjs/ethereumjs-vm/pull/284)
757- Test coverage / coveralls support for the library, PR [#270](https://github.com/ethereumjs/ethereumjs-vm/pull/270)
758- Properly calculate totalgas for large return values, PR [#275](https://github.com/ethereumjs/ethereumjs-vm/pull/275)
759- Improve iterateVm check output after step hook, PR [#279](https://github.com/ethereumjs/ethereumjs-vm/pull/279)
760
761[2.3.4]: https://github.com/ethereumjs/ethereumjs-vm/compare/v2.3.3...v2.3.4
762
763## [2.3.3] - 2018-02-02
764
765- Reworked memory expansion/access for opcodes, PR [#174](https://github.com/ethereumjs/ethereumjs-vm/pull/174) (fixes consensus bugs on
766 large numbers >= 53 bit for opcodes using memory location)
767- Keep stack items as bn.js instances (arithmetic performance increases), PRs [#159](https://github.com/ethereumjs/ethereumjs-vm/pull/159), [#254](https://github.com/ethereumjs/ethereumjs-vm/pull/254) and [#256](https://github.com/ethereumjs/ethereumjs-vm/pull/256)
768- More consistent VM error handling, PR [#219](https://github.com/ethereumjs/ethereumjs-vm/pull/219)
769- Validate stack items after operations, PR [#222](https://github.com/ethereumjs/ethereumjs-vm/pull/222)
770- Updated `ethereumjs-util` dependency from `4.5.0` to `5.1.x`, PR [#241](https://github.com/ethereumjs/ethereumjs-vm/pull/241)
771- Fixed child contract deletion bug, PR [#246](https://github.com/ethereumjs/ethereumjs-vm/pull/246)
772- Fixed a bug associated with direct stack usage, PR [#240](https://github.com/ethereumjs/ethereumjs-vm/pull/240)
773- Fix error on large return fees, PR [#235](https://github.com/ethereumjs/ethereumjs-vm/pull/235)
774- Various bug fixes
775
776[2.3.3]: https://github.com/ethereumjs/ethereumjs-vm/compare/v2.3.2...v2.3.3
777
778## [2.3.2] - 2017-10-29
779
780- Better handling of `rustbn.js` exceptions
781- Fake (default if non-provided) blockchain fixes
782- Testing improvements (separate skip lists)
783- Minor optimizations and bug fixes
784
785[2.3.2]: https://github.com/ethereumjs/ethereumjs-vm/compare/v2.3.1...v2.3.2
786
787## [2.3.1] - 2017-10-11
788
789- `Byzantium` compatible
790- New opcodes `REVERT`, `RETURNDATA` and `STATICCALL`
791- Precompiles for curve operations and bigint mod exp
792- Transaction return data in receipts
793- For detailed list of changes see PR [#161](https://github.com/ethereumjs/ethereumjs-vm/pull/161)
794- For a `Spurious Dragon`/`EIP 150` compatible version of this library install latest version of `2.2.x`
795
796[2.3.1]: https://github.com/ethereumjs/ethereumjs-vm/compare/v2.2.2...v2.3.1
797
798## [2.3.0] - Version Skipped due to faulty npm release
799
800## [2.2.2] - 2017-09-19
801
802- Fixed [JS number issues](https://github.com/ethereumjs/ethereumjs-vm/pull/168)
803 and [certain edge cases](https://github.com/ethereumjs/ethereumjs-vm/pull/188)
804- Fixed various smaller bugs and improved code consistency
805- Some VM speedups
806- Testing improvements
807- Narrowed down dependencies for library not to break after Byzantium release
808
809[2.2.2]: https://github.com/ethereumjs/ethereumjs-vm/compare/v2.2.1...v2.2.2
810
811## [2.2.1] - 2017-08-04
812
813- Fixed bug prevent the library to be used in the browser
814
815[2.2.1]: https://github.com/ethereumjs/ethereumjs-vm/compare/v2.2.0...v2.2.1
816
817## [2.2.0] - 2017-07-28
818
819- `Spurious Dragon` & `EIP 150` compatible
820- Detailed list of changes in pull requests [#147](https://github.com/ethereumjs/ethereumjs-vm/pull/147) and [#143](https://github.com/ethereumjs/ethereumjs-vm/pull/143)
821- Removed `enableHomestead` option when creating a [ new VM object](https://github.com/ethereumjs/ethereumjs-vm#new-vmstatetrie-blockchain) (pre-Homestead fork rules not supported any more)
822
823[2.2.0]: https://github.com/ethereumjs/ethereumjs-vm/compare/v2.1.0...v2.2.0
824
825## [2.1.0] - 2017-06-28
826
827- Homestead compatible
828- update state test runner for General State Tests
829
830[2.1.0]: https://github.com/ethereumjs/ethereumjs-vm/compare/v2.0.1...v2.1.0
831
832## Older releases:
833
834- [2.0.1](https://github.com/ethereumjs/ethereumjs-vm/compare/v2.0.0...v2.0.1) - 2016-10-31
835- [2.0.0](https://github.com/ethereumjs/ethereumjs-vm/compare/v1.4.0...v2.0.0) - 2016-09-26
836- [1.4.0](https://github.com/ethereumjs/ethereumjs-vm/compare/v1.3.0...v1.4.0) - 2016-05-20
837- [1.3.0](https://github.com/ethereumjs/ethereumjs-vm/compare/v1.2.2...v1.3.0) - 2016-04-02
838- [1.2.2](https://github.com/ethereumjs/ethereumjs-vm/compare/v1.2.1...v1.2.2) - 2016-03-31
839- [1.2.1](https://github.com/ethereumjs/ethereumjs-vm/compare/v1.2.0...v1.2.1) - 2016-03-03
840- [1.2.0](https://github.com/ethereumjs/ethereumjs-vm/compare/v1.1.0...v1.2.0) - 2016-02-27
841- [1.1.0](https://github.com/ethereumjs/ethereumjs-vm/compare/v1.0.4...v1.1.0) - 2016-01-09
842- [1.0.4](https://github.com/ethereumjs/ethereumjs-vm/compare/v1.0.3...v1.0.4) - 2015-12-18
843- [1.0.3](https://github.com/ethereumjs/ethereumjs-vm/compare/v1.0.0...v1.0.3) - 2015-11-27
844- 1.0.0 - 2015-10-06