All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog (modification: no type change headlines) and this project adheres to Semantic Versioning.
2.4.0 - 2018-07-27
With the 2.4.x release series we now start to gradually add Constantinople features with the
bitwise shifting instructions from EIP 145
making the start being introduced in the v2.4.0 release.
Since both the scope of the Constantinople hardfork as well as the state of at least some of the EIPs
to be included are not yet finalized, this is only meant for EXPERIMENTAL purposes, e.g. for developer
tools to give users early access and make themself familiar with dedicated features.
Once scope and EIPs from Constantinople are final we will target a v2.5.0 release which will officially
introduce Constantinople support with all the changes bundled together.
Note that from this release on we also introduce new chain (default: mainnet) and hardfork
(default: byzantium) initialization parameters, which make use of our new ethereumjs-common library and in the future will allow
for parallel hardfork support from Byzantium onwards.
Since hardfork default might be changed or dropped in future releases, you might want to explicitly
set this to byzantium on your next update to avoid future unexpected behavior.
All the changes from this release:
FEATURES/FUNCTIONALITY
- Improved chain and fork support, see PR #304
- Support for the
Constantinoplebitwise shifiting instructionsSHL,SHRandSAR, see PR #251 - New
newContractevent which can be used to do interrupting tasks on contract/address creation, see PR #306 - Alignment of behavior of bloom filter hashing to go along with mainnet compatible clients BREAKING, see PR #295
UPDATES/TESTING
- Usage of the latest
rustbn.jsAPI, see PR #312 - Some cleanup in precompile error handling, see PR #318
- Some cleanup for
StateManager, see PR #266 - Renaming of
util.sha3usages toutil.keccak256and bumpethereumjs-utiltov5.2.0(you should do to if you useethereumjs-util) - Parallel testing of the
ByzantiumandConstantinoplestate tests, see PR #317 - For lower build times our CI configuration now runs solely on
CircleCIand support forTravishave been dropped, see PR #316
BUG FIXES
- 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
- Fix of the
Bloom.check()method not working properly, see PR #311 - Fix a bug when
REVERTis used within aCREATEcontext, see PR #297 - Fix a bug in
FakeBlockChainerror handing, see PR #320
2.3.5 - 2018-04-25
- Fixed
BYTEopcode return value bug, PR #293 - Clean up touched-accounts management in
StateManager, PR #287 - New
stateManager.copy()function, PR #276 - Updated Circle CI configuration to 2.0 format, PR #292
2.3.4 - 2018-04-06
- Support of external statemanager in VM constructor (experimental), PR #264
ES5distribution on npm for better toolchain compatibility, PR #281allowUnlimitedContractSizeVM option for debugging purposes, PR #282- Added
gasRefundto transaction results, PR #284 - Test coverage / coveralls support for the library, PR #270
- Properly calculate totalgas for large return values, PR #275
- Improve iterateVm check output after step hook, PR #279
2.3.3 - 2018-02-02
- Reworked memory expansion/access for opcodes, PR #174 (fixes consensus bugs on large numbers >= 53 bit for opcodes using memory location)
- Keep stack items as bn.js instances (arithmetic performance increases), PRs #159, #254 and #256
- More consistent VM error handling, PR #219
- Validate stack items after operations, PR #222
- Updated
ethereumjs-utildependency from4.5.0to5.1.x, PR #241 - Fixed child contract deletion bug, PR #246
- Fixed a bug associated with direct stack usage, PR #240
- Fix error on large return fees, PR #235
- Various bug fixes
2.3.2 - 2017-10-29
- Better handling of
rustbn.jsexceptions - Fake (default if non-provided) blockchain fixes
- Testing improvements (separate skip lists)
- Minor optimizations and bug fixes
2.3.1 - 2017-10-11
Byzantiumcompatible- New opcodes
REVERT,RETURNDATAandSTATICCALL - Precompiles for curve operations and bigint mod exp
- Transaction return data in receipts
- For detailed list of changes see PR #161
- For a
Spurious Dragon/EIP 150compatible version of this library install latest version of2.2.x
2.2.2 - 2017-09-19
- Fixed JS number issues and certain edge cases
- Fixed various smaller bugs and improved code consistency
- Some VM speedups
- Testing improvements
- Narrowed down dependencies for library not to break after Byzantium release
2.2.1 - 2017-08-04
- Fixed bug prevent the library to be used in the browser
2.2.0 - 2017-07-28
Spurious Dragon&EIP 150compatible- Detailed list of changes in pull requests #147 and #143
- Removed
enableHomesteadoption when creating a new VM object (pre-Homestead fork rules not supported any more)
2.1.0 - 2017-06-28
- Homestead compatible
- update state test runner for General State Tests