Skip to content

Releases: awslabs/shuttle

v0.8.1

21 Jun 02:20
28dca1c

Choose a tag to compare

0.8.1 (Jun 19, 2025)

  • Fix bug in BatchSemaphore (#167)
  • Fix bug in RwLock (#170)
  • Add current::reset_step_count (#175)
  • Add spawn_local (#176)
  • Add thread::scope (#181)
  • Add AbortHandle (#182)

v0.8

11 Oct 23:21
63a7aa9

Choose a tag to compare

  • Add BatchSemaphore (#151)
  • block_on now has one less thread switch point, which breaks schedules. (#155)
  • ReplayScheduler::set_target_clock added (#156)
  • Schedulers now receive references to Tasks instead of TaskIds (#156)
  • Expose check_random_with_seed (#161)
  • Make check_random optionally take a seed by providing the environment variable SHUTTLE_RANDOM_SEED (#161)
  • Shuttle Explorer extension (#163).
  • AnnotationScheduler and annotated schedule support added under feature "annotation" (#163)

v0.7.0

07 Mar 18:58
c8aa400

Choose a tag to compare

  • Add support for task labels. These replace task tags, which are deprecated and will be removed in a future release. (#138)
  • In the meantime, Tags are now implemented with a trait. This is a breaking change from 0.6.1. (#111)
  • Implement is_finished() for future::JoinHandle (#118)

v0.6.1

23 May 20:18
7188c7d

Choose a tag to compare

  • Add feature to tag tasks (#98)
  • Add scheduler to check for uncontrolled nondeterminism (#96, #97)
  • Support spurious wakeups for thread::park (#101)
  • Support different leaders when sync::Barrier is reused (#102)
  • Make {Mutex, Condvar, RwLock}::new const (#106)
  • Improve tracing spans (#99)
  • Fix spurious deadlocks with FuturesUnordered (#105)
  • Split schedule output over multiple lines (#103)
  • Bump futures dependency (#107)

v0.6.0

25 Jan 00:30
97e0396

Choose a tag to compare

This version renames the silence_atomic_ordering_warning configuration option to silence_warnings, as well as the corresponding environment variables, to enable future warnings to be controlled by the same mechanism.

  • Implement lazy_static support (#93)

v0.5.0

23 Nov 00:25
ea63f65

Choose a tag to compare

This version updates the embedded rand library to v0.8. Tests that use shuttle::rand will need to update to the v0.8 interface of rand, which included some breaking changes.

  • Update rand and other dependencies (#89)
  • Implement abort for future::JoinHandle (#87)
  • Correctly handle the main thread's thread-local storage destructors (#88)

v0.4.1

23 Nov 00:15
5e0034f

Choose a tag to compare

  • Make PCT scheduling not linear in max number of tasks (#84)

v0.4.0

29 Oct 05:18
1c87c0e

Choose a tag to compare

  • Depdendency updates

v0.3.0

01 Sep 20:00
d4b1c28

Choose a tag to compare

Note that clients using async primitives provided by Shuttle (task spawn, block_on, yield_now) will
need to be updated due to the renaming of the asynch module to future in this release.

  • Rust 2021 conversion and dependency bumps (#76)
  • Implement thread::park and thread::unpark (#77)
  • Implement std::hint (#78)
  • Rename the asynch module to future (#79)

v0.2.0

27 Jul 14:51
4a00174

Choose a tag to compare

Note that failing test schedules created by versions of Shuttle before 0.2.0 will not successfully
replay on version 0.2.0, and vice versa, as the changes below affect Mutex and RwLock
scheduling decisions.

  • Implement Mutex::try_lock (#71)
  • Implement RwLock::{try_read, try_write} (#72)
  • Export a version of std::sync::Weak (#69)
  • Provide better error messages for deadlocks caused by non-reentrant locking (#66)