This release contains the changes from polkadot-stable2503-7
to polkadot-stable2503-8
.
ℹ️ Please note:
⚠️ This is a patch release for the stable version: stable2503
and contains only patches and fixes to the crates (list below). No binary or docker images will be provided for this release.
The tag corresponding to the current patch release polkadot-stable2503-8
and matching the old pattern will be available under polkadot-v1.18.8.
The following crates were updated to the corresponding versions:
- substrate-prometheus-endpoint@0.17.3
- frame-benchmarking@40.2.1
- sc-network@0.50.1
- pallet-im-online@39.1.1
- staging-xcm-executor@19.1.3
- polkadot-node-network-protocol@23.1.0
- pallet-revive@0.6.2
- pallet-xcm@19.1.2
- parachains-common@21.0.1
- collectives-westend-runtime@19.0.1
- coretime-rococo-runtime@0.15.3
- coretime-westend-runtime@0.15.3
- glutton-westend-runtime@17.0.1
- people-rococo-runtime@0.15.2
- people-westend-runtime@0.15.2
- asset-hub-rococo-runtime@0.25.3
- asset-hub-westend-runtime@0.31.1
- penpal-runtime@0.29.1
- bridge-hub-rococo-runtime@0.19.2
- bridge-hub-westend-runtime@0.16.3
- emulated-integration-tests-common@21.1.0
- polkadot-availability-bitfield-distribution@23.0.1
- polkadot-gossip-support@23.0.1
- polkadot-omni-node-lib@0.6.1
- polkadot-sdk@2503.2.0
Changelog
Changelog for Node Dev
ℹ️ These changes are relevant to: Those who build around the client side code. Alternative client builders, SMOLDOT, those who consume RPCs. These are people who are oblivious to the runtime changes. They only care about the meta-protocol, not the protocol itself.
[#9355]: substrate-prometheus-endpoint: directly require the feature "tokio/net"
The crate substrate-prometheus-endpoint
use tokio items given by the feature "net" but it doesn't explictly requires it in the Cargo.toml
. It compiles on master because hyper-util
enables the feature "tokio/net". But upgrading hyper-util
break this indirect enabling.
This fix the issue by directly setting "net" feature as required, as it is used.
We should also backport this ideally. It is not a breaking change given the code doesn't compile without the feature and only compiles if indirectly enabled by another crate.
[#9281]: litep2p/discovery: Ensure non-global addresses are not reported as external
This PR ensures that external addresses discovered by the identify protocol are not propagated to the litep2p backend if they are not global. This leads to a healthier DHT over time, since nodes will not advertise loopback / non-global addresses.
We have seen various cases were loopback addresses were reported as external:
2025-07-16 16:18:39.765 TRACE tokio-runtime-worker sub-libp2p::discovery: verify new external address: /ip4/127.0.0.1/tcp/30310/p2p/12D3KooWNw19ScMjzNGLnYYLQxWcM9EK9VYPbCq241araUGgbdLM
2025-07-16 16:18:39.765 INFO tokio-runtime-worker sub-libp2p: 🔍 Discovered new external address for our node: /ip4/127.0.0.1/tcp/30310/p2p/12D3KooWNw19ScMjzNGLnYYLQxWcM9EK9VYPbCq241araUGgbdLM
This PR takes into account the network config for allow_non_global_addresses
.
Closes: #9261
cc @paritytech/networking
[#9094]: bitfield_distribution: fix subsystem clogged at begining of a session
handle_peer_view_change
gets called on NewGossipTopology with the existing view of the peer to cover for the case when the topology might arrive late, but in that case in the view will contain old blocks from previous session, so since the X/Y neighbour change because of the topology change you end up sending a lot of messages for blocks before the session changed.
Fix it by checking the send message only for relay chains that are in the same session as the current topology.
[#9264]: gossip-support: make low connectivity message an error
All is not well when a validator is not properly connected, e.g: of things that might happen:
- Finality might be slightly delay because validator will be no-show because they can't retrieve PoVs to validate approval work: #8915.
- When they author blocks they won't back things because gossiping of backing statements happen using the grid topology:, e.g blocks authored by validators with a low number of peers:
https://polkadot.js.org/apps/?rpc=wss%3A%2F%2Frpc-polkadot.helixstreet.io#/explorer/query/26931262
https://polkadot.js.org/apps/?rpc=wss%3A%2F%2Frpc-polkadot.helixstreet.io#/explorer/query/26931260
https://polkadot.js.org/apps/?rpc=wss%3A%2F%2Fpolkadot.api.onfinality.io%2Fpublic-ws#/explorer/query/26931334
https://polkadot.js.org/apps/?rpc=wss%3A%2F%2Fpolkadot-public-rpc.blockops.network%2Fws#/explorer/query/26931314
https://polkadot.js.org/apps/?rpc=wss%3A%2F%2Fpolkadot-public-rpc.blockops.network%2Fws#/explorer/query/26931292
https://polkadot.js.org/apps/?rpc=wss%3A%2F%2Fpolkadot-public-rpc.blockops.network%2Fws#/explorer/query/26931447
The problem is seen in polkadot_parachain_peer_count
metrics, but it seems people are not monitoring that well enough, so let's make it more visible nodes with low connectivity are not working in good conditions.
I also reduced the threshold to 85%, so that we don't trigger this error to eagerly.
Changelog for Runtime Dev
ℹ️ These changes are relevant to: All of those who rely on the runtime. A parachain team that is using a pallet. A DApp that is using a pallet. These are people who care about the protocol (WASM, not the meta-protocol (client).)
[#9354]: Remove whitespaces added by macros due to token re-parsing
Normalize result of stringify
in scenarios when used inside nested macros to stringify token streams for benchmarking framework
[#9195]: XCMv5 asset exchange test scenarios
Emulated test scenarios added to cover asset exchanging via Transact or ExchangeAsset instruction using XCMv5 capabilities
[#9179]: Fix subsume_assets incorrectly merging two AssetsInHolding
Fix subsume_assets incorrectly merging two AssetsInHolding instances under certain conditions,
which caused asset values to be overridden rather than summed.
[#9137]: Pallet XCM - transfer_assets pre-ahm patch
Pallet XCM's transfer_assets
extrinsic now returns an error when it determines that a reserve transfer of DOT|KSM|WND|PAS has to be done.
This is a safeguard in preparation for the Asset Hub Migration (AHM), where the reserve of DOT|KSM|WND|PAS will change from the Relay Chain to Asset Hub.
After the migration, another patch will remove this error case and use the correct reserve.
The pallet uses the UniversalLocation
configuration to figure out the correct asset being transferred. It's very important to have that configuration correct.
[#9325]: Fix pallet-im-online benchmarking for runtimes with MaxKeys < 1000
Fixes benchmarking for pallet-im-online when runtime configuration has MaxKeys < 1000.
Previously, the benchmark code used a hardcoded constant MAX_KEYS = 1000 which would cause benchmark failures for runtimes configured with fewer maximum keys. This change updates the benchmark to dynamically use the MaxKeys value from the pallet's Config trait.
[#9139]: Expose more constants for pallet-xcm
Exposes more constants (UniversalLocation, MaxLockers, MaxRemoteLockConsumers), similar as AdvertisedXcmVersion
.
Changelog for Node Operator
ℹ️ These changes are relevant to: Those who don't write any code and only run code.
Changelog for Runtime User
ℹ️ These changes are relevant to: Anyone using the runtime. This can be a token holder or a dev writing a front end for a chain.
[#9137]: Pallet XCM - transfer_assets pre-ahm patch
Pallet XCM's transfer_assets
extrinsic now returns an error when it determines that a reserve transfer of DOT|KSM|WND|PAS has to be done.
This is a safeguard in preparation for the Asset Hub Migration (AHM), where the reserve of DOT|KSM|WND|PAS will change from the Relay Chain to Asset Hub.
After the migration, another patch will remove this error case and use the correct reserve.
limited_reserve_transfer_assets
, transfer_assets_using_type_and_then
or execute
should be used instead, since they provide the ability to specify the reserve you want to use.
[#9139]: Expose more constants for pallet-xcm
Exposes more constants (UniversalLocation, MaxLockers, MaxRemoteLockConsumers), similar as AdvertisedXcmVersion
.
Rust compiler versions
This release was built and tested against the following versions of rustc
.
Other versions may work.
- Rust Stable:
1.84.1