Fenic
Testing for concurrent code.
Quickstart
Add this to your Cargo.toml:
[]
= "0.7"
Next, create a test file and add a test:
use Arc;
use AtomicUsize;
use ;
use thread;
Then, run the test with
RUSTFLAGS="--cfg fenic" cargo test --test buggy_concurrent_inc --release
Unsupported features
Loom currently does not implement the full C11 memory model. Here is the (incomplete) list of unsupported features.
SeqCstaccesses (e.g.load,store, ..): They are are regarded asAcqRel. That is, they impose weaker synchronization, causing Loom to generate false alarms (not complete). See #180 for example. On the other hand,fence(SeqCst)is supported.- Load buffering behavior:
Loom does not explore some executions that are possible in the C11 memory
model. That is, there can be a bug in the checked code even if Loom says
there is no bug (not sound). See the
load_bufferingtest case intests/litmus.rs.
License
This project is licensed under the MIT license.
Contribution
Unless you explicitly state otherwise, any contribution intentionally
submitted for inclusion in fenic by you, shall be licensed as MIT,
without any additional terms or conditions.