github paritytech/polkadot-sdk polkadot-stable2506-1
Polkadot polkadot-stable2506-1

latest releases: polkadot-stable2503-9, polkadot-stable2503-9-rc1, polkadot-v1.18.9...
15 days ago

This release contains the changes from polkadot-stable2506 to polkadot-stable2506-1.

ℹ️ Please note:

This is a patch release for the latest stable version: stable2506. If your nodes are already running on this version, you can consider upgrading to it to have the latest fixes.

The tag corresponding to the current patch release polkadot-stable2506-1 and matching the old pattern will be available under polkadot-v1.19.1.

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.

[#9338]: fatxpool: instant seal support

This PR introduces creation of view for known best block during instantiation of fatxpool. This is intended to fix an instant-seal nodes, where block building is triggered via transaction import.

[#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.

[#9189]: fatxpool: avoid premature revalidation of transactions

After this PR transactions will be revalidated in mempool on finalized blocks only if height of finalized block is greater then the height of the block at which transactions was originally submitted.

[#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

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

[#9489]: Remove free balance check in prepare_unlock

The free balance check during unlocking is unnecessary since a lock can cover both free and reserved balances. Removing it allows locks to be cleared even if part of the locked funds is reserved or already slashed.

[#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.

[#8857]: [FRAME] Custom log level for the runtime benchmarks

Changes:

  • Add --runtime-log option to omni-bencher CLI
  • Read env var RUNTIME_LOG as fallback to the --runtime-log option
  • Set custom log level for runtime benchmarks that can be different form CLI level
  • Fix issue where old runtimes have a space in the pallet or instance name from breaking change in quote macro

[#9445]: pallet-xcm: fix authorized_alias benchmarks

Depending on runtime configuration of ED and storage deposits, the old benchmark code did not set up enough funds to cover authorized aliases storage deposits. Fix it by adding more funds as part of benchmark setup.

[#9250]: implement InspectMessageQueues for UnpaidRemoteExporter

Add missing implementation of InspectMessageQueues for UnpaidRemoteExporter

[#9195]: XCMv5 asset exchange test scenarios

Emulated test scenarios added to cover asset exchanging via Transact or ExchangeAsset instruction using XCMv5 capabilities

Changelog for Node Operator

ℹ️ These changes are relevant to: Those who don't write any code and only run code.

[#8838]: fatxpool: fork aware transaction pool is now default

This PR changes the default transaction pool to the fork aware implementation. The old implementation can be still used with --pool-type=single-state command line argument.

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.

Rust compiler versions

This release was built and tested against the following versions of rustc.
Other versions may work.

  • Rust Stable: 1.84.1

Docker images

The docker images for the polkadot node binary and the polkadot-parachain binary can be found at Docker hub (will be available a few minutes after the release has been published):

You may also pull it with:

docker pull parity/polkadot:stable2506-1

or

docker pull parity/polkadot-parachain:stable2506-1

Don't miss a new polkadot-sdk release

NewReleases is sending notifications on new releases.