PackageTrack
Sign in Get early access

turmoil

Simulation testing framework for distributed systems

0.7.2 16M downloads/mo #2404 most downloaded on crates.io tokio-rs/turmoil

What this package is like to depend on

Last release 4 months ago

24 Apr 2026

Release timing varies

gaps range from 2 weeks to 8 months

Most releases are documented

notes for 23 of 26 stable releases

Nothing withdrawn

no release was ever pulled

4 years old

26 releases · first in 2022

3 releases in the last 12 months

see the full history below

Release timeline

26 releases · Aug 2022 to Apr 2026
2023 2024 2025 2026
Release Pre-release

Releases

latest 26
  1. 0.7.2 24 Apr 2026
    Release notes

    Added

    • Add end-to-end flow control for TCP streams (#265)

    Changed

    • Send RST when a TcpStream is dropped with unread data (#269)
    • Enforce O_DIRECT buffer alignment in simulated filesystem (#266)
    • Drop parking_lot from tokio feature list (#267)
    • Remove experimental disclaimer from README (#268)
    • Fix rng warning and flakey example test (#263)
    Open source →
    Release notes

    Added

    • Add end-to-end flow control for TCP streams (#265)

    Changed

    • Send RST when a TcpStream is dropped with unread data (#269)
    • Enforce O_DIRECT buffer alignment in simulated filesystem (#266)
    • Drop parking_lot from tokio feature list (#267)
    • Remove experimental disclaimer from README (#268)
    • Fix rng warning and flakey example test (#263)
    Open source →
  2. 0.7.1 29 Jan 2026
    Release notes

    Added

    • Add simulated filesystem and barriers for deterministic testing (#250, #254)
      • unstable-fs feature: Drop-in replacements for std::fs and tokio::fs with durability simulation
      • unstable-barriers feature: Inject hooks at specific code points for deterministic test control
    • Add turmoil::net::lookup_host (#257)
    • Add API to check whether we are inside a simulation (#258)
    • Add UdpSocket::try_recv (#255)
    • Add crate::since_epoch() API to return logical time elapsed since epoch (#249)
    • Add ci to check external types (#250)
    • Update to rand 0.9 (#215)

    Changed

    • Let network faults affect in-flight messages (#252)
    • Provide clearer panic message when link is missing (#261)
    Open source →
    Release notes

    Added

    • Add simulated filesystem and barriers for deterministic testing (#250, #254)
      • unstable-fs feature: Drop-in replacements for std::fs and tokio::fs with durability simulation
      • unstable-barriers feature: Inject hooks at specific code points for deterministic test control
    • Add turmoil::net::lookup_host (#257)
    • Add API to check whether we are inside a simulation (#258)
    • Add UdpSocket::try_recv (#255)
    • Add crate::since_epoch() API to return logical time elapsed since epoch (#249)
    • Add ci to check external types (#250)
    • Update to rand 0.9 (#215)

    Changed

    • Let network faults affect in-flight messages (#252)
    • Provide clearer panic message when link is missing (#261)
    Open source →
  3. 0.7.0 03 Nov 2025
    Release notes

    Added

    • Add a basic cluster simulation example (#233)
    • Seed tokio with the world rng (#245)
    • Update deps (#236, #237, #239, #241)
    • Add bind drop test (#235)

    Fixed

    • Fix clippy lint violations (#242, #244)
    • Remove prost from build-dependencies (#238)

    Breaking

    • Change Builder to accept an rng seed (#246)
    Open source →
    Release notes

    Added

    • Add a basic cluster simulation example (#233)
    • Seed tokio with the world rng (#245)
    • Update deps (#236, #237, #239, #241)
    • Add bind drop test (#235)

    Fixed

    • Fix clippy lint violations (#242, #244)
    • Remove prost from build-dependencies (#238)

    Breaking

    • Change Builder to accept an rng seed (#246)
    Open source →
  4. 0.6.6 10 Mar 2025
    Release notes

    Added

    • Add UDP multicast, broadcast simulation (#224, #226)
    • Improve host ports exhausted panic message (#218)
    • Add explicit tracing output when runtime shuts down due to no clients (#213)
    • Update Axum example to 0.8 (#221)

    Fixed

    • TcpListener: fix a race condition where a peer going away causes the next connection to hang (#224)
    • sim_elapsed(): Synchronize host clock against global clock following restart (#216)
    • Small typo fixes (#214)
    Open source →
    Release notes

    Added

    • Add UDP multicast, broadcast simulation (#224, #226)
    • Improve host ports exhausted panic message (#218)
    • Add explicit tracing output when runtime shuts down due to no clients (#213)
    • Update Axum example to 0.8 (#221)

    Fixed

    • TcpListener: fix a race condition where a peer going away causes the next connection to hang (#224)
    • sim_elapsed(): Synchronize host clock against global clock following restart (#216)
    • Small typo fixes (#214)
    Open source →
  5. 0.6.5 29 Jan 2025
    Release notes

    Added

    • Add peek to TcpStream (#206)

    Fixed

    • Various clippy and dependency chores
    Open source →
    Release notes

    Added

    • Add peek to TcpStream (#206)

    Fixed

    • Various clippy and dependency chores
    Open source →
  6. 0.6.4 09 Oct 2024
    Release notes

    Added

    • Add established_tcp_stream_count{,_on} (#188)
    • Allow one way partitionings (#187)
    • Implement Debug for UdpSocket (#179)
    Open source →
    Release notes

    Added

    • Add established_tcp_stream_count{,_on} (#188)
    • Allow one way partitionings (#187)
    • Implement Debug for UdpSocket (#179)
    Open source →
  7. 0.6.3 15 Jul 2024
    Release notes

    Added

    • Add try_write to TcpStream (#176)
    • Add ability to run hosts in random order (#173)
    • Add API parity stubs for UDP sockets/TCP streams (#174)
    Open source →
    Release notes

    Added

    • Add try_write to TcpStream (#176)
    • Add ability to run hosts in random order (#173)
    • Add API parity stubs for UDP sockets/TCP streams (#174)
    Open source →
  8. 0.6.2 03 Apr 2024
    Release notes

    Added

    • Enable tokio io driver (#171)

    Fixed

    • Make sim_elapsed function safe to call outside of simulation (#170)
    Open source →
    Release notes

    Added

    • Enable tokio io driver (#171)

    Fixed

    • Make sim_elapsed function safe to call outside of simulation (#170)
    Open source →
  9. 0.6.1 16 Jan 2024
    Release notes

    Added

    • Documentation on using tracing with Turmoil (#155 #164)
    • Add a check for port exhaustion (#157)
    • Add `turmoil::sim_elapsed`` for retrieving total simulation virtual time (#164)
    • Update Axum example to use axum 0.7 and hyper 1 (#154)
    Open source →
  10. 0.6.0 17 Nov 2023
    Release notes

    Added

    • Documentation to the sim builder (#152)

    Fixed

    • Avoid trying to spawn on teardown when rt is gone (#153)
    • Deliver loopback packets in the next step (#153)

    Breaking

    • Remove rng from sim builder as it wasn't applied when building.
      This is technically a bug fix, but will break consumers.
      Use build_with_rng instead (#150)
    Open source →
    Release notes

    Added

    • Documentation to the sim builder (#152)

    Fixed

    • Avoid trying to spawn on teardown when rt is gone (#153)
    • Deliver loopback packets in the next step (#153)

    Breaking

    • Remove rng from sim builder as it wasn't applied when building. This is technically a bug fix, but will break consumers. Use build_with_rng instead (#150)
    Open source →
  11. 0.5.8 06 Nov 2023
    Release notes

    Fixed

    • Fix subtraction overflow bug with latency (#147)
    • Fix ephemeral port leak upon tcp stream shutdown (#145)
    Open source →
    Release notes

    Fixed

    • Fix subtraction overflow bug with latency (#147)
    • Fix ephemeral port leak upon tcp stream shutdown (#145)
    Open source →
  12. 0.5.7 20 Oct 2023
    Release notes

    Added

    • Add reverse DNS resolution capabilities (#141)

    Fixed

    • Fix duplicate FIN in the drop glue (#142)
    • Extend loopback workaround (#140)
    Open source →
  13. 0.5.6 24 Jul 2023
    Release notes

    Added

    • Return io::Error instead of panicking (#130)
    • Add network manipulation capabilities to Sim (#129)
    • Tracing improvments (#124)
    Open source →
  14. 0.5.5 06 Jun 2023
    Release notes

    Added

    • Make socket buffer capacity configurable (#121)

    Fixed

    • Fix reverse dns lookups on static binds (#120)
    Open source →
  15. 0.5.4 24 May 2023
    Release notes

    Added

    • Support ephemeral port assignments on bind (#110)
    • Add support for Ipv6 network/binds (#113)
    • Add support for loopback (#118)

    Fixed

    • Filter out equal IpAddrs for regex matching (#116)
    • Remove inconsistent address resolution (#114)
    • Fix bug in binding an in use port (#117)
    Open source →
  16. 0.5.3 23 Mar 2023
    Release notes

    Added

    • Expose whether a host has software running (#108)
    • DNS improvements (#109)

    Fixed

    • Fix AsyncRead impl for TcpStream (#107)
    Open source →
  17. 0.5.2 13 Mar 2023
    Release notes

    Added

    Open source →
  18. 0.5.1 02 Mar 2023
    Release notes

    Added

    • gRPC example (#81)
    • axum example (#91)

    Fixed

    • Handle task cancellation due to crashing a host (#85)
    • Remove runtime after host crashes (#89)
    Open source →
  19. 0.5.0 08 Feb 2023

    Nothing published for this version

  20. 0.4.0 10 Jan 2023

    Nothing published for this version

  21. 0.3.3 07 Dec 2022
    Release notes

    Fixed

    • Fix host elapsed time across software restarts (#65)
    Open source →
  22. 0.3.2 14 Nov 2022
    Release notes

    Added

    • Expose the sim's epoch and elapsed duration (#54)
    Open source →
  23. 0.3.1 10 Nov 2022
    Release notes

    Added

    • Add local/peer addrs to tcp types
    • Expose host elapsed time

    Changed

    • Use tracing levels for different network events (#53)

    Fixed

    • Fix host crash behavior (#52)
    Open source →
  24. 0.3.0 28 Oct 2022
    Release notes

    Added

    • Bind to multiple ports per host
    • Simulated networking (UDP and TCP) that mirror tokio::net
    • Client host error handling

    Changed

    • Logging uses tracing for writing events
    Open source →
  25. 0.2.0 11 Aug 2022
    Release notes
    • Initial release
    Open source →
  26. 0.1.0 03 Aug 2022

    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