PackageTrack
Sign in Get early access

yamux

Multiplexer over reliable, ordered connections

0.14.0 27M downloads/mo #1793 most downloaded on crates.io paritytech/yamux

What this package is like to depend on

Last release 2 months ago

20 Jun 2026

Ships fairly regularly

a new release about every 2 months

Nearly every release is documented

notes for 47 of 48 stable releases

1 version withdrawn

withdrawn after publishing

8 years old

50 releases · first in 2018

5 releases in the last 12 months

see the full history below

Release timeline

50 releases · Nov 2018 to Jun 2026
2019 2020 2021 2022 2023 2024 2025 2026
Release Pre-release Withdrawn

Releases

latest 50
  1. 0.14.0 20 Jun 2026
    Release notes

    0.14.0

    • Replace rand-based connection IDs and ping nonces with per-connection atomic counters.
      Removes rand from runtime dependencies.
      See PR 229.
    • Update dependencies. See PR 230.
    Open source →
    Release notes
    • Replace rand-based connection IDs and ping nonces with per-connection atomic counters. Removes rand from runtime dependencies. See PR 229.
    • Update dependencies. See PR 230.
    Open source →
  2. 0.13.10 09 Mar 2026
    Release notes

    Fix panic when processing oversized inbound Data|SYN frames. See ac71745 and GHSA-vxx9-2994-q338.

    Open source →
    Release notes
    Open source →
  3. 0.13.9 27 Feb 2026
    Release notes

    Improve flow-control credit verification for window updates. See #221.

    Open source →
    Release notes
    • Improve flow-control credit verification for window updates. See PR 221.
    Open source →
  4. 0.13.8 24 Oct 2025
    Release notes

    Introduce WriteState::Poisoned to avoid further reads after the returned number of bytes from a write operation is bigger than the header size. See #211.

    Open source →
    Release notes
    • Introduce WriteState::Poisoned to avoid further reads after the returned number of bytes from a write operation is bigger than the header size. See PR 211.
    Open source →
  5. 0.13.7 01 Oct 2025
    Release notes

    Fix compilation on rust versions < 1.87.0. See #208.

    Open source →
    Release notes
    • Fix compilation on rust versions < 1.87.0. See PR 208.
    Open source →
  6. 0.13.6 24 Jul 2025
    Release notes

    Fix panic on frame io when the returned number of bytes from a write operation is bigger than the header size. See #202.

    Open source →
    Release notes
    • Fix panic on frame io when the returned number of bytes from a write operation is bigger than the header size. See PR 202.
    Open source →
  7. 0.13.5 14 May 2025
    Release notes

    Fix possible poisoned connection when closing. See #199.

    Open source →
    Release notes
    • Fix possible poisoned connection when closing. See PR 199.
    Open source →
  8. 0.13.4 18 Nov 2024
    Release notes

    Fix sending pending frames after closing. See #194.

    Open source →
    Release notes
    • Fix sending pending frames after closing. See PR 194.
    Open source →
  9. 0.13.3 07 Jun 2024
    Release notes

    0.13.3

    • Wake up readers after setting the state to RecvClosed to not miss EOF. See #190.

    • Use web-time instead of instant. See #191.

    Open source →
    Release notes
    • Wake up readers after setting the state to RecvClosed to not miss EOF. See PR 190.

    • Use web-time instead of instant. See PR 191.

    Open source →
  10. 0.13.2 30 Apr 2024
    Release notes

    See changelog for details.

    Open source →
    Release notes
    • Bound Active's pending_frames to enforce backpressure. See 460baf2
    Open source →
  11. 0.13.1 06 Dec 2023
    Release notes
    • Fix WASM support using instant::{Duration, Instant} instead of std::time::{Duration, Instant}. See PR 179.
    Open source →
  12. 0.13.0 06 Dec 2023
    Release notes
    • Introduce dynamic stream receive window auto-tuning. While low-resourced deployments maintain the benefit of small buffers, high resource deployments eventually end-up with a window of roughly the bandwidth-delay-product (ideal) and are thus able to use the entire available bandwidth. See PR 176 for performance results and details on the implementation.
    • Remove WindowUpdateMode. Behavior will always be WindowUpdateMode::OnRead, thus enabling flow-control and enforcing backpressure. See PR 178.
    Open source →
  13. 0.12.1 24 Nov 2023
    Release notes
    • Deprecate WindowUpdateMode::OnReceive. It does not enforce flow-control, i.e. breaks backpressure. Use WindowUpdateMode::OnRead instead. See PR #177.
    Open source →
  14. 0.12.0 20 Jul 2023
    Release notes
    • Remove Control and ControlledConnection. Users have to move to the poll_ functions of Connection. See PR #164.

    • Fix a bug where Streams would not be dropped until their corresponding Connection was dropped. See PR #167.

    Open source →
  15. 0.11.1 26 May 2023
    Release notes
    • Avoid race condition between pending frames and closing stream. See PR 156.
    Open source →
  16. 0.11.0 01 Dec 2022
    Release notes
    • Remove Connection::control in favor of Control::new. Remove Connection::next_stream in favor of Connection::poll_next_inbound. See PR 142.
    Open source →
  17. 0.10.2 05 Aug 2022
    Release notes
    • Process command or socket result immediately and thereby no longer accessing the socket after it returned an error. See PR 138 for details.
    Open source →
  18. 0.10.1 14 Mar 2022
    Release notes
    • Update parking_lot dependency. See PR 126.

    • Flush socket while waiting for next frame. See PR 130.

    Open source →
  19. 0.10.1-rc.1 25 Feb 2022 pre-release

    Nothing published for this version

  20. 0.10.0 13 Jan 2022
    Release notes
    • Default to WindowUpdateMode::OnRead, thus enabling full Yamux flow-control, exercising back pressure on senders, preventing stream resets due to reaching the buffer limit.

      See the WindowUpdateMode documentation for details, especially the section on deadlocking when sending data larger than the receivers window.

    Open source →
  21. 0.9.0 16 Feb 2021
    Release notes
    • Force-split larger frames, for better interleaving of reads and writes between different substreams and to avoid single, large writes. By default frames are capped at, and thus split at, 16KiB, which can be adjusted by a new configuration option, if necessary.

    • Send window updates earlier, when half of the window has been consumed, to minimise pauses due to transmission delays, particularly if there is just a single dominant substream.

    • Avoid possible premature stream resets of streams that have been properly closed and already dropped but receive window update or other frames while the remaining buffered frames are still sent out. Incoming frames for unknown streams are now ignored, instead of triggering a stream reset for the remote.

    Open source →
  22. 0.8.1 16 Feb 2021
    Release notes
    • Avoid possible premature stream resets of streams that have been properly closed and already dropped but receive window update or other frames while the remaining buffered frames are still sent out. Incoming frames for unknown streams are now ignored, instead of triggering a stream reset for the remote.
    Open source →
  23. 0.8.0 08 Sep 2020
    Release notes
    • Upgrade step 4 of 4. This version always assumes the new semantics and no longer sets the non-standard flag in intial window updates.
    • The configuration option lazy_open is removed. Initial window updates are sent automatically if the receive window is configured to be larger than the default.
    Open source →
  24. 0.7.0 08 Sep 2020
    Release notes

    Upgrade step 3 of 4. This version sets the non-standard flag, but irrespective of whether it is present or not, always assumes the new additive semantics of the intial window update.

    Open source →
  25. 0.6.0 08 Sep 2020
    Release notes

    Upgrade step 2 of 4. This version sets the non-standard flag, version 0.5.0 already recognises.

    Open source →
  26. 0.5.0 08 Sep 2020
    Release notes

    This version begins the upgrade process spawning multiple versions that changes the meaning of the initial window update from "This is the total size of the receive window." to "This is the size of the receive window in addition to the default size." This is necessary for compatibility with other yamux implementations. See issue #92 for details.

    As a first step, version 0.5.0 interprets a non-standard flag to imply the new meaning. Future versions will set this flag and eventually the new meaning will always be assumed. Upgrading from the current implemention to the new semantics requires deployment of every intermediate version, each of which is only compatible with its immediate predecessor. Alternatively, if the default configuration together with lazy_open set to true is deployed on all communicating endpoints, one can skip directly to the end of the transition.

    Open source →
  27. 0.4.9 27 Aug 2020
    Release notes
    • Bugfixes (#93).
    Open source →
  28. 0.4.8 26 Aug 2020
    Release notes
    • Bugfixes (#91).
    • Improve documentation (#88).
    Open source →
  29. 0.4.7 18 Jun 2020
    Release notes
    • Bugfix release (#85).
    Open source →
  30. 0.4.6 17 Jun 2020 withdrawn
    Release notes
    • Send RST frame if the window of a dropped stream is 0 and it is in state SendClosed (#84).
    Open source →
  31. 0.4.5 23 Mar 2020
    Release notes
    • Removed bytes (#77) and thiserror (#78) dependencies.
    • Removed implicit BufWriter creation (#77). Client code that depends on this (undocumented) behaviour needs to wrap the socket in a BufWriter before passing it to Connection::new.
    • Added Connection::is_closed flag (#80) to immediately return Ok(None) from Connection::next_stream after Err(_) or Ok(None) have been returned previously.
    Open source →
  32. 0.4.4 28 Feb 2020
    Release notes
    • Control and stream command channels are now closed and drained immediately on error. This is done to prevent client code from submitting further close or other commands which will never be acted upon since the API contract of Connection::next_stream is that after None or an Err(_) is returned it must not be called again.
    Open source →
  33. 0.4.3 18 Feb 2020
    Release notes
    • Updates nohash-hasher dependency to v0.2.0.
    Open source →
  34. 0.4.2 04 Feb 2020
    Release notes
    • A new configuration option lazy_open (off by default) has been added and inbound streams are now acknowledged (#73). If lazy_open is set to true we will not immediately send an initial WindowUpdate frame but instead just set the SYN flag on the first outbound Data frame. See Configuration::set_lazy_open for details.
    Open source →
  35. 0.4.1 28 Jan 2020
    Release notes
    • Log connection reset errors on debug level (#72).
    Open source →
  36. 0.4.0 30 Dec 2019
    Release notes
    • Hide StreamId::new and update dependencies.
    Open source →
  37. 0.3.0 20 Dec 2019
    Release notes

    Update to use and work with async/await:

    • Config::set_max_pending_frames has been removed. Internal back-pressure made the setting unnecessary. As another consequence the error ConnectionError::TooManyPendingFrames has been removed.
    • Connection no longer has methods to open a new stream or to close the connection. Instead a separate handle type Control has been added which allows these operations concurrently to the connection itself.
    • In Yamux 0.2.x every StreamHandle I/O operation would drive the Connection. Now, the only way the Connection makes progress is through its next_stream method which must be called continuously. For convenience a function into_stream has been added which turns the Connection into a futures::stream::Stream impl, invoking next_stream in its poll_next method.
    • StreamHandle has been renamed to Stream and its methods credit and state have been removed.
    • Stream also implements futures::stream::Stream and produces Packets.
    • ConnectionError::StreamNotFound has been removed. Incoming frames for unknown streams are answered with a RESET frame, unless they finish the stream.
    • DecodeError has been renamed to FrameDecodeError and DecodeError::Type corresponds to FramedDecodeError::Header which handles not just unknown frame type errors, but more. Hence a new error HeaderDecodeError has been added for those error cases.
    Open source →
  38. 0.2.2 18 Oct 2019
    Release notes
    • Updated dependencies (#56).
    Open source →
  39. 0.2.1 26 Apr 2019
    Release notes
    • Bugfix release (pull request #54).
    Open source →
  40. 0.2.0 18 Apr 2019
    Release notes
    • Added max_pending_frames setting to Config. A Connection buffers outgoing frames up to this limit (see pull request #51).
    • Added ConnectionError::TooManyPendingFrames if max_pending_frames has been reached.
    • Changed error types of Connection::close and Connection::flush from std::io::Error to yamux::ConnectionError.
    • Removed Connection::shutdown method which was deprecated since version 0.1.8.
    Open source →
  41. 0.1.9 11 Mar 2019
    Release notes
    • Add read_after_close setting to Config which defaults to true to match the behaviour of previous versions. Setting read_after_close to false will cause stream reads to return with Ok(0) as soon as the connection is closed, preventing them from reading data from their buffer.
    Open source →
  42. 0.1.8 01 Mar 2019
    Release notes
    • Mark Connection::shutdown as deprecated (#44).
    Open source →
  43. 0.1.7 18 Feb 2019
    Release notes
    • Bugfix release (#36).
    • Support for half-closed streams (#38).
    • Avoids redundant RESET frames (#37).
    • Better test coverage (#40, #42).
    Open source →
  44. 0.1.6 07 Jan 2019
    Release notes
    • Bugfix release (pull requests #34 and #35).
    Open source →
  45. 0.1.5 03 Jan 2019
    Release notes
    • Bugfix release (pull request #33).
    Open source →
  46. 0.1.4 21 Dec 2018
    Release notes
    • Bugfix release (pull requests #30 and #31).
    Open source →
  47. 0.1.3 17 Dec 2018
    Release notes
    • Bugfix release (pull requests #27 and #28).
    Open source →
  48. 0.1.2 10 Dec 2018
    Release notes
    • Bugfix release. See pull request #26 for details.
    Open source →
  49. 0.1.1 04 Dec 2018
    Release notes
    • Forward Stream::poll to the newly added Connection::poll method which accepts self as a shared reference. See pull request #24 for details.
    Open source →
  50. 0.1.0 09 Nov 2018

    Nothing published for this version

Every package, every release, already written down.

The archive is open and free. Watching your own project is what we are building next.

Browse the archive