Skip to content

Releases: awslabs/shuttle

v0.9.0

20 Apr 05:45
6299686

Choose a tag to compare

  • Fix: JoinHandle<T> is now Send and Sync even if T is not.
  • Gate vector clocks behind the vector-clocks feature flag. (#187)
  • Fix: Once can now be moved (#188 and #208)
  • Various performance improvements (#191, #211)
  • std::sync::{LockResult, PoisonError, TryLockError, TryLockResult} are now exported from shuttle::sync (#198)
  • Task names are now logged in the step span (#206)
  • Task backtraces are now printed on deadlock if the SHUTTLE_BACKTRACE environment variable is set (#205, #213)
  • Spawn events are now traced at DEBUG (down from INFO) (#211)
  • Stable resource ids (#207)
  • UniformRandomWalk scheduler added (#200)
  • Panic path refactored. 1: Aborting panics should more often have their schedule serialized, 2: Schedule is no longer part of the panic message, 3: There will now be multiple schedules serialized on multiple panics, 4: if Config::immediately_return_on_panic is set then we will return immediately on a failure and not finish unwinding the panic. (#202)
  • Change scheduling points to always precede operations (#216)
  • Change the backend for the tasks to be the Corosensei crate instead of the generators crate (#204)
  • Add SHUTTLE_PERSIST_SEED in the RandomScheduler to persist schedule before running the test (to be used for aborting tests) (#201)
  • Add BatchSemaphore::close_no_scheduling_point (#227)
  • Add config for ungraceful shutdowns (#230)
  • Add {RwLock, Mutex}::clear_poison (#233)
  • Bump to rand 0.8.6 (#264)

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)