shuttle-std 0.1.1

Mirrors of std compatible with the Shuttle concurrency testing tool
Documentation

shuttle-std

This crate contains Shuttle-compatible mirrors of the std concurrency primitives, used by the Shuttle concurrency testing tool. Each type here shows how to express a std API in terms of the shuttle-engine runtime, which makes this a useful reference for building Shuttle-compatible versions of other concurrency primitives.

Most codebases should get these primitives through the shuttle-sync wrapper rather than from here. That wrapper exposes either std::sync or the Shuttle-compatible implementation depending on a feature flag, so the same code can run both with and without Shuttle and no imports need to change.

Contents

Each type mirrors its std counterpart's API, but defers to the Shuttle runtime in shuttle-engine so that the scheduler can control and observe every operation:

  • sync — Mutex, RwLock, Condvar, Barrier, Once, mpsc channels, and the atomic types (including 128-bit atomics).
  • thread — thread spawning, joining, parking, scoped threads, and thread-local storage.
  • future — the async equivalents: task spawning, block_on, and yield_now.

Because these are drop-in mirrors rather than the real primitives, they only work inside a Shuttle test. Note also that they cover the concurrency surface of std rather than all of it, so code that uses parts of std::sync which Shuttle does not model will need to keep taking those from std.