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
Constantinople
bitwise shifiting instructionsSHL
,SHR
andSAR
, see PR #251 - New
newContract
event 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.js
API, see PR #312 - Some cleanup in precompile error handling, see PR #318
- Some cleanup for
StateManager
, see PR #266 - Renaming of
util.sha3
usages toutil.keccak256
and bumpethereumjs-util
tov5.2.0
(you should do to if you useethereumjs-util
) - Parallel testing of the
Byzantium
andConstantinople
state tests, see PR #317 - For lower build times our CI configuration now runs solely on
CircleCI
and support forTravis
have 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
REVERT
is used within aCREATE
context, see PR #297 - Fix a bug in
FakeBlockChain
error handing, see PR #320
2.3.5 - 2018-04-25
- Fixed
BYTE
opcode 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
ES5
distribution on npm for better toolchain compatibility, PR #281allowUnlimitedContractSize
VM option for debugging purposes, PR #282- Added
gasRefund
to 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-util
dependency from4.5.0
to5.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.js
exceptions - Fake (default if non-provided) blockchain fixes
- Testing improvements (separate skip lists)
- Minor optimizations and bug fixes
2.3.1 - 2017-10-11
Byzantium
compatible- New opcodes
REVERT
,RETURNDATA
andSTATICCALL
- 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 150
compatible 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 150
compatible- Detailed list of changes in pull requests #147 and #143
- Removed
enableHomestead
option 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