## 0.44.1 - unreleased
- Impose `Sync` on `ping::Failure::Other`.
`ping::Event` can now be shared between threads.
See [PR 5250]
[PR 5250]: https://github.com/libp2p/rust-libp2p/pull/5250
## 0.44.0
## 0.43.1
- Honor ping interval in case of errors.
Previously, we would immediately open another ping stream if the current one failed.
See [PR 4423].
[PR 4423]: https://github.com/libp2p/rust-libp2p/pull/4423
## 0.43.0
- Raise MSRV to 1.65.
See [PR 3715].
- Remove deprecated items. See [PR 3702].
- Don't close connections on ping failures.
To restore the previous behaviour, users should call `Swarm::close_connection` upon receiving a `ping::Event` with a `ping::Failure`.
This also removes the `max_failures` config option.
See [PR 3947].
[PR 3715]: https://github.com/libp2p/rust-libp2p/pull/3715
[PR 3702]: https://github.com/libp2p/rust-libp2p/pull/3702
[PR 3947]: https://github.com/libp2p/rust-libp2p/pull/3947
## 0.42.0
- Update to `libp2p-core` `v0.39.0`.
- Update to `libp2p-swarm` `v0.42.0`.
## 0.41.0
- Update to `libp2p-core` `v0.38.0`.
- Update to `libp2p-swarm` `v0.41.0`.
- Replace `Behaviour`'s `NetworkBehaviour` implemention `inject_*` methods with the new `on_*` methods.
See [PR 3011].
- Replace `Handler`'s `ConnectionHandler` implemention `inject_*` methods with the new `on_*` methods.
See [PR 3085].
- Update `rust-version` to reflect the actual MSRV: 1.62.0. See [PR 3090].
[PR 3085]: https://github.com/libp2p/rust-libp2p/pull/3085
[PR 3011]: https://github.com/libp2p/rust-libp2p/pull/3011
[PR 3090]: https://github.com/libp2p/rust-libp2p/pull/3090
## 0.40.0
- Bump rand to 0.8 and quickcheck to 1. See [PR 2857].
- Deprecate types with `Ping` prefix. Prefer importing them via the `ping` namespace, i.e. `libp2p::ping::Event` instead
of `libp2p::ping::PingEvent`. See [PR 2937].
- Update to `libp2p-core` `v0.37.0`.
- Update to `libp2p-swarm` `v0.40.0`.
- Deprecate `Config::with_keep_alive`. See [PR 2859].
[PR 2857]: https://github.com/libp2p/rust-libp2p/pull/2857
[PR 2937]: https://github.com/libp2p/rust-libp2p/pull/2937
[PR 2859]: https://github.com/libp2p/rust-libp2p/pull/2859/
## 0.39.0
- Update to `libp2p-swarm` `v0.39.0`.
- Update to `libp2p-core` `v0.36.0`.
## 0.38.0
- Update to `libp2p-swarm` `v0.38.0`.
- Expose `PROTOCOL_NAME`. See [PR 2734].
- Update to `libp2p-core` `v0.35.0`.
[PR 2734]: https://github.com/libp2p/rust-libp2p/pull/2734/
## 0.37.0
- Update to `libp2p-core` `v0.34.0`.
- Update to `libp2p-swarm` `v0.37.0`.
## 0.36.0
- Update to `libp2p-core` `v0.33.0`.
- Update to `libp2p-swarm` `v0.36.0`.
## 0.35.0
- Update to `libp2p-swarm` `v0.35.0`.
## 0.34.0 [2022-02-22]
- Update to `libp2p-core` `v0.32.0`.
- Update to `libp2p-swarm` `v0.34.0`.
- Merge NetworkBehaviour's inject_\* paired methods (see PR 2445).
[PR 2445]: https://github.com/libp2p/rust-libp2p/pull/2445
## 0.33.0 [2022-01-27]
- Update dependencies.
- Migrate to Rust edition 2021 (see [PR 2339]).
[PR 2339]: https://github.com/libp2p/rust-libp2p/pull/2339
## 0.32.0 [2021-11-16]
- Use `instant` and `futures-timer` instead of `wasm-timer` (see [PR 2245]).
- Update dependencies.
[PR 2245]: https://github.com/libp2p/rust-libp2p/pull/2245
## 0.31.0 [2021-11-01]
- Make default features of `libp2p-core` optional.
[PR 2181](https://github.com/libp2p/rust-libp2p/pull/2181)
- Update dependencies.
- Don't close connection if ping protocol is unsupported by remote.
Previously, a failed protocol negotation for ping caused a force close of the connection.
As a result, all nodes in a network had to support ping.
To allow networks where some nodes don't support ping, we now emit
`PingFailure::Unsupported` once for every connection on which ping is not supported.
In case you want to stick with the old behavior, you need to close the connection
manually on `PingFailure::Unsupported`.
Fixes [#2109](https://github.com/libp2p/rust-libp2p/issues/2109). Also see [PR 2149].
[PR 2149]: https://github.com/libp2p/rust-libp2p/pull/2149/
- Rename types as per [discussion 2174].
`Ping` has been renamed to `Behaviour`.
The `Ping` prefix has been removed from various types like `PingEvent`.
Users should prefer importing the ping protocol as a module (`use libp2p::ping;`),
and refer to its types via `ping::`. For example: `ping::Behaviour` or `ping::Event`.
[discussion 2174]: https://github.com/libp2p/rust-libp2p/discussions/2174
## 0.30.0 [2021-07-12]
- Update dependencies.
## 0.29.0 [2021-04-13]
- Update `libp2p-swarm`.
## 0.28.0 [2021-03-17]
- Update `libp2p-swarm`.
## 0.27.0 [2021-01-12]
- Update dependencies.
## 0.26.0 [2020-12-17]
- Update `libp2p-swarm` and `libp2p-core`.
## 0.25.0 [2020-11-25]
- Update `libp2p-swarm` and `libp2p-core`.
## 0.24.0 [2020-11-09]
- Update dependencies.
## 0.23.0 [2020-10-16]
- Update `libp2p-swarm` and `libp2p-core`.
- Ensure the outbound ping is flushed before awaiting
the response. Otherwise the behaviour depends on
implementation details of the stream muxer used.
The current behaviour resulted in stalls with Mplex.
## 0.22.0 [2020-09-09]
- Update `libp2p-swarm` and `libp2p-core`.
## 0.21.0 [2020-08-18]
- Refactor the ping protocol for conformity by (re)using
a single substream for outbound pings, addressing
[#1601](https://github.com/libp2p/rust-libp2p/issues/1601).
- Bump `libp2p-core` and `libp2p-swarm` dependencies.
## 0.20.0 [2020-07-01]
- Updated dependencies.
## 0.19.3 [2020-06-22]
- Updated dependencies.
## 0.19.2 [2020-06-18]
- Close substream in inbound upgrade
[PR 1606](https://github.com/libp2p/rust-libp2p/pull/1606).