Releases: ethereum/go-ethereum
Budapest (v1.8.16)
Geth v1.8.16 is out regular maintenance release focusing on bugfixes:
- Fix RPC timeouts on WebSockets when using the
ethclient
package (#17549). - Fix the ABI decoder for negative integers which previously overflown (#17583).
- Fix the Clique consensus regression that caused the Rinkeby split (#17620).
- Fix incorrect file permissions for the proof-of-concept Clef signer (#17652).
- Fix a light client deadlock causing the Rinkeby faucet hangs (#17705, #17727).
- Fix the evm state tester to support more prestate fields (#17685).
- Fix the
ethash
mining hashrate reporting regression (#17667). - Fix nil-pointer panic when processing malicious ABIs (#17653).
- Fix a rare panic in the light client on shutdown (#17639).
Also on adding a few minor features:
- Miners will prefer their own blocks if all else is equal during fork choice (17656, 17715).
- Reduce
les
overhead via internal caching on the Rinkeby faucet (#17732). - Double check account creation password after writing to disk (#17348).
- Support basic authentication for WebSockets through URLs (#17699).
- Polish confusing info logs for insta-mining dev chains (#17614).
- Add support for Clique based test chain generation (#17622).
- Add Constantinople ice-age delay implementation (#17675).
- Add Constantinople net gas store implementation (#17383).
- Add initial switches for EVM/EWASM extensions (#17687).
- Add block
age
fields to chain import logs (#17718). - Bump the build servers to Go 1.11 (#17701).
For a full rundown of the changes please consult the Geth 1.8.16 release milestone.
Geth binaries and mobile libraries are available on the Geth download page.
This release contains Swarm v0.3.4, which among many bugfixes features:
- Fixed ENS resolver bug (17483).
- Fixed
bzz-immutable
URLS (17602). - Refactored and simplified Kademlia code (17641).
- Refactored chunk storage and synchronization (17659).
- Add passwords as access controlled entities (17598).
Swarm binaries are available on the Swarm download page.
Khazad-dûm² (v1.8.15)
Geth v1.8.15 is a small patch release on top of v1.8.14 (Khazad-dûm) to fix a few issues discovered post-release and to implement a few missing features to make mining "complete":
- Fix a data race that could lead to corruption if multiple PoW solutions are found concurrently within the same mining cycle, but for different work tasks (#17489).
- Fix a data corruption if a PoW solution is found to an older block within a single mining cycle (#17490).
- Fix the timestamp and difficulty for recommitted transaction sets at the same block height (17547).
- Fix CPU mining for embedded in-process go-ethereum instances (#17492).
- Extend the logs to differentiate between reorged-but-included and reorged-and-excluded blocks (#17494).
- Extend
ethash
to accept stale results for past mining tasks and track them as potential uncles (#17506). - Make uncle tracking stateless to permit correct inclusion even in the face or large-ish reorgs (#17540).
- Support skipping PoW verification for remote miner submissions via
--miner.noverify
(#17506). - Support hard capping the gas limit of mined blocks via
--miner.gaslimit
(#17546).
Note, --miner.gastarget
and --miner.gaslimit
defaults to 8M starting from this release. If you require different values, make sure you set them explicitly. Puppeth was also extended to support both configs.
For a full rundown of the changes please consult the Geth 1.8.15 release milestone.
Geth binaries and mobile libraries are available on the Geth download page.
A quick recap of the miner features introduced in v1.8.14:
- Track multiple miner work packages concurrently, permitting miners to start working on an empty block and replace it in the background with a full one, reducing mining delay by 200+ ms on mainnet (#15853, #17323).
- Insert uncles instantly into active work packages instead of waiting till the next block (#17320, #17469).
- Recommit active mining work every 3 seconds, maximizing block fullness and miner fees (#17413).
- Configurable recommit interval with dynamic adjustment in case of system overload (#17444).
- Support miner push notifications for new work packages via HTTP POST requests (#17347).
- Support priority mining for local transactions, specifiable via
--txpool.locals
(#17472). - Log block fullness and expected fees for current miner work package (#17416, #17426).
- Remote mining will use memory mapped ethash DAGs instead of caches (#17405).
- Clean up miner CLI flags and deprecate old ones (#17402).
Note, there are two minor breaking changes wrt mining: 1) remote mining requires the --mine
flag from now on and will not automatically start on a eth_getWork
request; 2) --mine
will not start a CPU miner, you need to explicitly specify --miner.threads=N
in addition.
Khazad-dûm (v1.8.14)
Geth v1.8.14 is our regular maintenance release, the current one focusing on heavy miner improvements and general polishes throughout the code base. Big shout-out to @rjl493456442 for championing this release and @ppratscher for helping test it.
First up, the newly introduced miner features:
- Track multiple miner work packages concurrently, permitting miners to start working on an empty block and replace it in the background with a full one, reducing mining delay by 200+ ms on mainnet (#15853, #17323).
- Insert uncles instantly into active work packages instead of waiting till the next block (#17320, #17469).
- Recommit active mining work every 3 seconds, maximizing block fullness and miner fees (#17413).
- Configurable recommit interval with dynamic adjustment in case of system overload (#17444).
- Support miner push notifications for new work packages via HTTP POST requests (#17347).
- Support priority mining for local transactions, specifiable via
--txpool.locals
(#17472). - Log block fullness and expected fees for current miner work package (#17416, #17426).
- Remote mining will use memory mapped ethash DAGs instead of caches (#17405).
- Clean up miner CLI flags and deprecate old ones (#17402).
Note, there are two minor breaking changes wrt mining: 1) remote mining requires the --mine
flag from now on and will not automatically start on a eth_getWork
request; 2) --mine
will not start a CPU miner, you need to explicitly specify --miner.threads=N
in addition.
Other smaller features:
- Light client checkpoint support for Rinkeby and Clique in general to avoid long sync times (#17466).
- Light client CHT and log bloom indexers are supported in light client mode too (16534, #17419, 17465).
- Support trusted peer management (addition/removal) via RPC API function calls (#16333).
- Support specifying the block gas limit for simulated test chains (minor API break) (#17358).
- Support specifying pubkey identity files into puppeth connection strings (#17407).
- Gracefully shut down puppeth instances when deploying new versions (#17311).
- Add missing
bn256
license, release package under BSD-3 (#17451).
Noteworthy bugfixes:
- Fix a trie GC error in the transaction tracer that occasionally resulted in panics (#17357).
- Fix a transaction chain tracing panic if an invalid parametrization was specified (#17460).
- Fix a crash in the mobile framework when setting a transaction recipient to
nil
(#17310). - Fix the
alltools
cross compiled bundles to properly build every binary (#17288). - Fix a puppeth
nil
panic caused by non responsive remote servers (#17412). - Update Constantinople
CREATE2
contract formula to the new spec (#17393). - Break accidental PPA dependency of Geth -> Swarm (#17425).
- Fix compilation issues on Go 1.11 (#17368, #17467).
For a full rundown of the changes please consult the Geth 1.8.14 release milestone.
Geth binaries and mobile libraries are available on the Geth download page.
This release contains Swarm v0.3.2, which among many bugfixes features:
- Access control to content in Swarm using password or Elliptic Curve keys (#17404).
- Updated Swarm bootnodes (#17414).
- MRU panic fix (#17313).
You can download stable versions of Swarm using the ethereum-swarm
debian package through the well known Ethereum PPA repository.
Swarm binaries are available on the Swarm download page.
Swarming (v1.8.13)
Geth v1.8.13 (Swarming) is our ~biweekly maintenance release, currently focusing on minor code polishes, build reorganization and general bug fixes. A highlight of the release is a version and bundle separation for Swarm. Furthermore, we'll also do combo release notes going forward, explicitly detailing both Geth and Swarm!
- Support block filtering via hashes, not just range queries (#16734, #17284).
- Upgrade leveldb to resume writes during heavy compaction too (#17144).
- Support swappable interpreters in preparation for ewasm (#17093).
- Implement progress reports for long running chain exports (#17066).
- Switch the Azure blobstore client API to fix deprecated builds (#17245).
- Configurable timeout values for the HTTP RPC API web server (#17240).
- Polish puppeth's status listing to display long ethstats ban lists (#17279).
- Fix a puppeth node id retrieval issue on <2GB RAM machines (#17281).
- Fix a miner race condition for low block-period (1s) chains (#17173).
- Disable Ubuntu Artful, enable Ubuntu Cosmic PPA builds (#17251).
- Detect and reject invalid flag/argument usage (#17248).
- Write
evm
utility errors tostderr
(#17118).
Preliminary EIPs for the upcoming Constantinople fork:
- Skinny create to allow counterfactual contract creation (#17196).
- Extcodehash to allow smart contracts to retrieve code hashes (#17202).
Other notable changes:
For a full rundown of the changes please consult the Geth 1.8.13 release milestone.
Geth binaries and mobile libraries are available on the Geth download page.
This release contains Swarm v0.3.1, which features:
- Own Launchpad PPA package
ethereum-swarm
and custom version tracking (#16988). - Client-side MRU signatures: create and update mutable resources through any node, including Web3 support (Mist, Metamask, etc) (#17231).
- PSS generic notifications (#17150).
- Refactored network simulation framework (#17241).
- Better abstraction for HTTP request hangling (#17164).
- Cross process and machine tracing support (#17169, #17170).
From now on you can now download stable versions of Swarm using the ethereum-swarm
debian package through the well known Ethereum PPA repository.
Swarm binaries are available on the Swarm download page.
Waggle Dance (v1.8.12)
This release contains the PoC 3 version of Swarm as well as some minor improvements and
bug fixes. The Swarm update merges one year of development effort back into the main
go-ethereum repository. Read the announcement blog post for more information.
Performance changes:
- The intermediate trie GC buffer now uses less memory (#16876)
- The EVM big integer pool is reused across transactions (#17070)
- MSTORE and SLOAD EVM instructions are a bit faster (#16939)
Networking changes:
- A crash in the LES header fetcher is resolved (#17034)
- Discovery ping/pong logic uses less goroutines (#17048)
Miscellaneous changes:
- Log message time stamps are properly aligned again (#17054)
- Network ID is set correctly when -dev is set (#16833)
- Opcode analysis tracers have been added (#16954)
- Geth now supports exporting metrics to InfluxDB (#16979)
For a full rundown of the changes please consult the Geth 1.8.12 release milestone.
Binaries and mobile libraries are available on our download page.
Streamline (v1.8.11)
Geth v1.8.11 (Streamline) is our biweekly maintenance release, focusing mainly on performance. Overall this release is ~28% lighter on disk IO and ~23% faster on block processing:
- Reduce full-node database rate of growth by 28% (#16810).
- Speed up
ethash
verification cache generation by 24% (#16857). - Increase the Merkle trie hashing performance by 12-50% (#16896).
- Increase block processing and propagation speed by 15-25% (#16882).
- Reduce runtime complexity of retrieving pending transactions (#16958).
- Cap cache allowance to Go's GC limits and stabilize memory (#16800).
- Reduce database lookups for reverse header retrieval requests (#16946).
Not performance improvement, but nice nonetheless:
- Extend
abigen
to support binding contracts fromSTDIN
(#16683). - Extend bad block tracking and reporting to full blocks (#16902).
Beside the improvements, there are also a few bugs squashed:
- Fix invalid errors for balance retrievals of non-existing blocks (#16942).
- Enforce RPC timeouts to avoid stalling HTTP connections (#16880).
- Fix a goroutine leak in light clients for cancelled requests (#16861).
- Fix a goroutine leak in light clients for timed out requests (#16776).
- Fix an invalid header request handling in light servers (#16891).
- Fix light server tracking regression in light clients (#16947).
- Fix miner to handle side blocks more gracefully (#16751).
- Fix 4byte tracer to count external CALLs too (#16879).
- Fix shutdown hang on invalid genesis json (#16794).
For a full rundown of the changes please consult the Geth 1.8.11 release milestone.
Binaries and mobile libraries are available on our download page.
Sacrosancter (v1.8.10)
Geth Sacrosancter (v1.8.10) is a tiny hotfix release to the v1.8.9 release:
- Fixes a deadlock in the transaction pool during high churn (#16843).
The original v1.8.9 release contained:
- Handle transaction churn gracefully, reducing idle CPU load on mainnet by an entire core (#16720).
- Fix an issue where slow peers could cause goroutine leaks and out-of-memory crashes (#16769).
- Warn user when database performance is degraded/paused due to leveldb compaction (#16766).
- Reduce transaction retrieval API median/worstcase call times by an order of magnitude (#16670).
Feature wise, we've added a few Go API niceties, mostly building blocks for later releases:
- Support Go tags for ABI structures during marshalling and unmarshalling (#16648).
- Ensure Ethereum Node Records are compatible with discovery v4 (#16679).
- Support Merkle proof generation from trie iterators too (#16722).
For a full rundown of the changes please consult the Geth 1.8.9 and Geth 1.8.10 release milestones.
Binaries and mobile libraries are available on our download page.
Sacrosanct (v1.8.9)
Geth Sacrosanct (v1.8.9) is our biweekly maintenance release, focusing on stability improvements:
- Handle transaction churn gracefully, reducing idle CPU load on mainnet by an entire core (#16720).
- Fix an issue where slow peers could cause goroutine leaks and out-of-memory crashes (#16769).
- Warn user when database performance is degraded/paused due to leveldb compaction (#16766).
- Reduce transaction retrieval API median/worstcase call times by an order of magnitude (#16670).
Feature wise, we've added a few Go API niceties, mostly building blocks for later releases:
- Support Go tags for ABI structures during marshalling and unmarshalling (#16648).
- Ensure Ethereum Node Records are compatible with discovery v4 (#16679).
- Support Merkle proof generation from trie iterators too (#16722).
For a full rundown of the changes please consult the Geth 1.8.9 release milestone.
Binaries and mobile libraries are available on our download page.
Coffice (v.1.8.8)
Geth Coffice (v1.8.8) is a tiny biweekly release, containing countless code cleanup PRs from @kielbarry and:
- Upgrade Android NDK to 16b for the mobile archives (#16562).
- Fix crash when using an invalid private network genesis (#16682).
- Clean up memory database initialization for cleaner code (#16716).
- Handle Android signing keys flexibly, hopefully fixing Maven (#16696).
- Clean up high level raw database access APIs used internally (#16666).
- Support retrieving receipt status codes from the mobile libraries (#16598).
For a full rundown of the changes please consult the Geth 1.8.8 release milestone.
Binaries and mobile libraries are available on our download page.
Titanium (v1.8.7)
Geth Titanium (v1.8.7) is a hotfix release to address a leveldb crash affecting archive nodes.
- Fixes some faulty transaction traces due to a dirty handling bug in the tracer (#16588).
- Fixes
goleveldb
to handle databases exceeding 1 tebibyte (Ti) storage (#16630). - Fixes a transaction discard bug for underpriced but local transactions (#16576).
For a full rundown of the changes please consult the Geth 1.8.7 release milestone.
Binaries and mobile libraries are available on our download page.