@ethereumjs/common v10.0.0-rc.1
Pre-releaseThis is the first (and likely the last) round of RC
releases for the upcoming breaking releases, following the alpha
releases from October 2024. The releases are somewhat delayed (sorry for that), but final releases can now be expected very very soon, to be released once the Ethereum Pectra hardfork is scheduled for mainnet and all EIPs are fully finalized. Pectra will then also be the default hardfork setting for all EthereumJS libraries.
New Versioning Scheme
This breaking release round will come with a new versioning scheme (thanks to paulmillr for the suggestion), aligning the package numbers on breaking releases for all EthereumJS packages. This will make it easier to report bugs ("bug happened on EthereumJS version 10 releases"), reason about release series and make library compatibility more transparent and easier to grasp.
As a start we bump all major release versions to version 10, these RC
releases are the first to be released with the new versioning scheme.
Native Node.js EventEmitter Replacement
We removed the last remaining internal Node.js utility dependency to make the packages more browser friendly and replace the native Node.js EventEmitter
by using the eventemitter3 package as a replacement, see PR #3746.
The new package is meant to be more performant while remaining almost entirely API compatible with native Node.js event emitters.
If you directly import the Node.js event emitter, you need to switch your imports to:
import { EventEmitter } from 'events' // old
import { EventEmitter } from 'eventemitter3' // new
All this might affect you if you listen to events emitted by the common.events
EventEmitter
instance, e.g. to detect hardfork changes.
Pectra Spec Updates
- Support for generalized EL requests coming with EIP-7685 introduction (devnet-4), PR #3706
- Add
requestsHash
to genesis block/configuration, PR #3771 - Allow specifying eip-7840 blobSchedule via geth genesis, PR #3835
EthereumJS-wide Error Objects
We have done preparations to allow for handling specific error sub types in the future by introducing a monorepo-wide EthereumJSError
error class in the @ethereumjs/util
package, see PR #3879. This error is thrown for all error cases within the monorepo and can be specifically handled by comparing with instanceof EthereumJSError
.
We will introduce a set of more specific sub error classes inheriting from this generic type in upcoming minor releases, and so keeping things fully backwards compatible. This will allow for a more specific and robust handling of errors thrown by EthereumJS libraries.