## 0.41.0
- Migrate to `{In,Out}boundConnectionUpgrade` traits.
See [PR 4695](https://github.com/libp2p/rust-libp2p/pull/4695).
## 0.40.0
- Raise MSRV to 1.65.
See [PR 3715].
[PR 3715]: https://github.com/libp2p/rust-libp2p/pull/3715
## 0.39.0
- Update to `libp2p-core` `v0.39.0`.
## 0.38.0
- Update to `libp2p-core` `v0.38.0`.
- Update `rust-version` to reflect the actual MSRV: 1.60.0. See [PR 3090].
[PR 3090]: https://github.com/libp2p/rust-libp2p/pull/3090
## 0.37.0
- Bump rand to 0.8 and quickcheck to 1. See [PR 2857].
[PR 2857]: https://github.com/libp2p/rust-libp2p/pull/2857
## 0.36.0
- Update to `libp2p-core` `v0.36.0`
## 0.35.0
- Update to `libp2p-core` `v0.35.0`
## 0.34.0
- `Substream` now implements `AsyncRead` and `AsyncWrite`. See [PR 2706].
- Update to `libp2p-core` `v0.34.0`
[PR 2706]: https://github.com/libp2p/rust-libp2p/pull/2706/
## 0.33.0
- Update to `libp2p-core` `v0.33.0`.
## 0.32.0 [2022-02-22]
- Update to `libp2p-core` `v0.32.0`.
- Update to `parking_lot` `v0.12.0`. See [PR 2463].
[PR 2463]: https://github.com/libp2p/rust-libp2p/pull/2463/
## 0.31.0 [2022-01-27]
- Update dependencies.
- Add `fn set_protocol_name(&mut self, protocol_name: &'static [u8])` to MplexConfig
- Migrate to Rust edition 2021 (see [PR 2339]).
[PR 2339]: https://github.com/libp2p/rust-libp2p/pull/2339
## 0.30.0 [2021-11-01]
- Make default features of `libp2p-core` optional.
[PR 2181](https://github.com/libp2p/rust-libp2p/pull/2181)
- Update dependencies.
## 0.29.0 [2021-07-12]
- Update dependencies.
- Support stream IDs of up to 60 bit length. See [PR 2094] for details.
[PR 2094]: https://github.com/libp2p/rust-libp2p/pull/2094
## 0.28.0 [2021-03-17]
- Update dependencies.
## 0.27.1 [2021-02-15]
- Update dependencies.
## 0.27.0 [2021-01-12]
- Update dependencies.
## 0.26.0 [2020-12-17]
- Update `libp2p-core`.
## 0.25.0 [2020-11-25]
- Update `libp2p-core`.
- Change the default `split_send_size` from 1KiB to 8KiB.
[PR 1834](https://github.com/libp2p/rust-libp2p/pull/1834).
## 0.24.0 [2020-11-09]
- Change the default configuration to use `MaxBufferBehaviour::Block`
and yield from waiting for the next substream or reading from a
particular substream whenever the current read loop may have
already filled a substream buffer, to give the current task a
chance to read from the buffer(s) before the `MaxBufferBehaviour`
takes effect. This is primarily relevant for
`MaxBufferBehaviour::ResetStream`.
[PR 1825](https://github.com/libp2p/rust-libp2p/pull/1825/).
- Tweak the naming in the `MplexConfig` API for better
consistency with `libp2p-yamux`.
[PR 1822](https://github.com/libp2p/rust-libp2p/pull/1822).
- Update dependencies.
## 0.23.1 [2020-10-28]
- Be lenient with duplicate `Close` frames received. Version
`0.23.0` started treating duplicate `Close` frames for a
substream as a protocol violation. As some libp2p implementations
seem to occasionally send such frames and it is a harmless
redundancy, this releases reverts back to the pre-0.23 behaviour
of ignoring duplicate `Close` frames.
## 0.23.0 [2020-10-16]
- More granular execution of pending flushes, better logging and
avoiding unnecessary hashing.
[PR 1785](https://github.com/libp2p/rust-libp2p/pull/1785).
- Split receive buffers per substream.
[PR 1784](https://github.com/libp2p/rust-libp2p/pull/1784).
- Address a potential stall when reading from substreams.
- Send a `Reset` or `Close` to the remote when a substream is dropped,
as appropriate for the current state of the substream,
removing that substream from the tracked open substreams,
to avoid artificially running into substream limits.
- Change the semantics of the `max_substreams` configuration. Now,
outbound substream attempts beyond the configured limit are delayed,
with a task wakeup once an existing substream closes, i.e. the limit
results in back-pressure for new outbound substreams. New inbound
substreams beyond the limit are immediately answered with a `Reset`.
If too many (by some internal threshold) pending frames accumulate,
e.g. as a result of an aggressive number of inbound substreams being
opened beyond the configured limit, the connection is closed ("DoS protection").
- Update dependencies.
## 0.22.0 [2020-09-09]
- Bump `libp2p-core` dependency.
## 0.21.0 [2020-08-18]
- Bump `libp2p-core` dependency.
## 0.20.0 [2020-07-01]
- Update `libp2p-core`, i.e. `StreamMuxer::poll_inbound` has been renamed
to `poll_event` and returns a `StreamMuxerEvent`.
## 0.19.2 [2020-06-22]
- Deprecated method `Multiplex::is_remote_acknowledged` has been removed
as part of [PR 1616](https://github.com/libp2p/rust-libp2p/pull/1616).
- Updated dependencies.