github paritytech/polkadot-sdk polkadot-stable2503-8
Polkadot stable2503-8

latest releases: polkadot-stable2506-2-rc1, polkadot-stable2503-9, polkadot-stable2503-9-rc1...
one month ago

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:

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

Don't miss a new polkadot-sdk release

NewReleases is sending notifications on new releases.