Skip to content

Latest commit

 

History

History
129 lines (90 loc) · 5 KB

CHANGELOG.md

File metadata and controls

129 lines (90 loc) · 5 KB

0.8.0 (Sep 30, 2024)

  • 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)

0.7.1 (May 31, 2024)

  • Implement try_send and iterators for mpsc channels (#120)
  • Implement get_mut for Mutex and RwLock (#120)

0.7.0 (March 7, 2024)

  • 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)

0.6.1 (May 23, 2023)

  • 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)

0.6.0 (January 24, 2023)

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)

0.5.0 (November 22, 2022)

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)

0.4.1 (November 14, 2022)

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

0.4.0 (September 30, 2022)

  • Dependency updates

0.3.0 (August 29, 2022)

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)

0.2.0 (July 7, 2022)

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)

0.1.0 (April 5, 2022)

  • Implement Condvar::wait_while and Condvar::wait_timeout_while (#59)
  • Remove implicit Sized bounds on Mutex and RwLock (#62)
  • Dependency updates (#58, #60)

0.0.7 (September 21, 2021)

  • Fix a number of issues in support for async tasks (#50, #51, #52, #54)
  • Improve error messages when using Shuttle primitives outside a Shuttle test (#42)
  • Add support for thread local storage (the thread_local! macro) (#43, #53)
  • Add support for Once cells (#49)
  • Simplify some dependencies to improve build times (#55)
  • Move context_switches and my_clock functions into a new current module (#56)

0.0.6 (July 8, 2021)

  • Add support for std::sync::atomic (#33)
  • Add shuttle::context_switches to get a logical clock for an execution (#37)
  • Track causality between threads (#38)
  • Better handling for double panics and poisoned locks (#30, #40)
  • Add option to not persist failures (#34)

0.0.5 (June 11, 2021)

  • Fix a performance regression with tracing introduced by #24 (#31)
  • Include default features for the rand crate to fix compilation issues (#29)

0.0.4 (June 1, 2021)

  • Add a timeout option to run tests for a fixed amount of time (#25)
  • Include task ID in all tracing log output (#24)
  • Implement thread::current (#23)

0.0.3 (April 13, 2021)

  • Update for Rust 1.51 (#11)
  • Add option to bound how many steps a test runs on each iterations (#14)
  • Remove option to configure the maximum number of threads/tasks (#16, #19)
  • Make yield_now a hint to the scheduler to allow validating busy loops (#18)
  • Add ReplayScheduler::new_from_file (#20)

0.0.2 (March 19, 2021)

  • Add Default impl to RwLock (#7)
  • Add option to persist schedules to a file (#4)

0.0.1 (March 2, 2021)

  • Initial release