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