-
Notifications
You must be signed in to change notification settings - Fork 2
Open
Labels
enhancementNew feature or requestNew feature or request
Description
The loom crate is a model checker for concurrent programs. In principle, it allows more in-depth checking by exploring exhaustive combinations of program traces (as opposed to interpreters like Miri). It would in particular be helpful to build confidence in changes like #14.
However, in practice it suffers from several shortcommings:
- As seen in the
loombranch, several APIs of the standard library aren't mirrored in loom (yet?), e.g. MissingCondvar::wait_whileAPI tokio-rs/loom#393, MirrorPoisonErrorfrom the standard library? tokio-rs/loom#394, Missingimpl FromIterator<T>forArc[T]tokio-rs/loom#395, Missingthread::scope()API tokio-rs/loom#396. This is inconvenient (some code has to be duplicated), although not blocking. - Testing with
RUSTFLAGS="-D warnings --cfg loom" cargo +nightly test --release -- loooomshows that the model is indeed really slow to run for all but the most trivial examples. In particular using relaxed orderings (a304245) causes a combinatorial explosion and only the 2-thread example completed on my machine within 1 minute. This makes the usefulness of Loom quite limited for Paralight at the moment.
Metadata
Metadata
Assignees
Labels
enhancementNew feature or requestNew feature or request