Releases: hernanponcedeleon/Dat3M
Dat3M 4.2.0 is out!
What's Changed
- Update README.md by @hernanponcedeleon in #707
- add support to show source location in witness graph for spirv by @CapZTr in #738
- Pass the C file to the svcomp runner rather than the optimized llvm by @hernanponcedeleon in #739
- Add support for atomic_exchange_explicit in litmus code by @hernanponcedeleon in #740
- Backwards reaching definitions by @xeren in #726
- Better may set for sync barrier by @natgavrilenko in #745
- Fix UI parsing by @ThomasHaas in #747
- Relation analysis with immutable and lazy data structures by @natgavrilenko in #743
- Updated model in spirv tests by @natgavrilenko in #749
- Support for Apple silicon by @hernanponcedeleon in #748
- Some improvements to aarch64 pseudo-assembly by @hernanponcedeleon in #741
- Add support for show statement in cat parser by @hernanponcedeleon in #742
- Introduce stdlib.cat by @hernanponcedeleon in #751
- Add support for variable-sized and variable-aligned allocations by @ThomasHaas in #750
- Require the existence of violation node when validate violation witness by @hernanponcedeleon in #754
- Add OpenCL Model by @tonghaining in #744
- Fix overlap queries in Alias Analysis by @xeren in #753
- Configuration files and management by @xeren in #752
- Svcomp config by @hernanponcedeleon in #756
- Fix #757 by @ThomasHaas in #758
- Allow bounds to be saved to and loaded from files by @hernanponcedeleon in #759
- Improve PPC grammar and visitor by @hernanponcedeleon in #762
- Fix usages of non-determinism in intrinsics by @ThomasHaas in #763
- Improvements for SVCOMP 2025 by @hernanponcedeleon in #765
- Check if events may alias when deriving RA knowledge from witnesses (… by @hernanponcedeleon in #766
- Fix witnesses excluding the rf edges they enforce. by @xeren in #771
- Spirv OpUndef by @natgavrilenko in #769
- Remove svcomp specific options by @hernanponcedeleon in #773
- Support explicitly defined offsets in aggregate type by @natgavrilenko in #770
- Remove empty tag from vulkan litmus tests by @natgavrilenko in #774
- Support of Showing Local Events Location in Spirv by @CapZTr in #761
- Fix handling of empty type by @ThomasHaas in #776
- Further changes for SVCOMP 2025 by @hernanponcedeleon in #777
- Update to version 4.2.0 by @hernanponcedeleon in #782
New Contributors
Full Changelog: 4.1.0...4.2.0
Dat3M 4.1.0 is out!
What's Changed
- Lazy method supports dataraces/cat_spec by @ThomasHaas in #660
- Option to get dartagnan version by @hernanponcedeleon in #662
- New Pointer Analysis by @xeren in #616
- Add vmm version 0.9.1 by @hernanponcedeleon in #664
- Log a warning instead of throwing an exception when opt is not availa… by @hernanponcedeleon in #666
- Propagate correct memory order tags when compiling to C11 by @hernanponcedeleon in #665
- Fix collectSideEffects for manually annotated spinloops by @hernanponcedeleon in #669
- New AssignmentInlining pass by @ThomasHaas in #667
- Streamline witness options by @hernanponcedeleon in #670
- Add atomicity axiom to sc.cat by @hernanponcedeleon in #671
- Add 4 litmus tests demonstrating unordered failing cmpxchg. by @hernanponcedeleon in #672
- Check all three properties by default by @hernanponcedeleon in #675
- Add some missing LKMM tests by @hernanponcedeleon in #677
- Remove support for LISA format by @hernanponcedeleon in #678
- Support fences as inline assembly by @hernanponcedeleon in #679
- Fix performance issue in DominatorTree.computePredecessorMap by @ThomasHaas in #680
- Lazy cycle detection in inclusion based ailas analysis by @xeren in #676
- Replace several back jumps with via forward jumping by @hernanponcedeleon in #681
Full Changelog: 4.0.1...4.1.0
Dat3M 4.0.1 is out!
This release does not contain major new features. It is mostly code refactoring, bug fixing and improving usability of the tool.
Dat3M 4.0.0 is out!
These are the main changes of this version:
- More precise support of the C language (function pointers, dynamic memory allocation, dynamic thread creation, and recursion)
- Support llvm files as input
- Remove boogie as supported input format
- Remove dependencies on smack and atomic-replace pass
- Implement static analysis of memory models, as described in the OOSPLA’23 paper
- Support for PTX (v6.0 and v7.5) and vulkan memory models
- Several changes related to SVCOMP 2024 participation
- Support for many intrinsics (pthread, llvm, UBSAN)
- Update JavaSMT to version 4.1.0
- Fix unsoundness of symmetry learning
- Optimize memory consumption for RA sets
- Bound refining (CAAT)
- Update LKMM to latest version
- Support SRCU for LKMM
- Allow to update relations in cat
- Improve user output (lines of code and call stack related to violations / witnesses)
- Add coverage report
- Make semantics of pthread events closer to reality
- Force addresses to be even (as in reality)
- Fix / improve liveness encoding
- Improve performance of alias analysis
- Improve / fix compilation schemes
- Replace constant propagation by sparse conditional constant propagation
- Improve most program transformation passes
- Fix refinement cutting
- Add support for ARM-based MacOS
- Move to java 17
- Several refactors / bug fixing
Dat3M 3.1.1 is out!
This release contains our submission for SVCOMP 2023.
It mostly contains changes related to code refactoring and bug fixing for SVCOMP.
Dat3M 3.1.0 is out!
These are the main changes of this version:
- Implements the theory solver for CAAT (Consistency as a Theory) as described in the OOSPLA’22 paper
- Adds support for checking liveness
- Adds support to RC11, IMM and RISCV memory models
- Updates the support to the latests version of LKMM (including data races)
- Implements the compilation schemes from LKMM to hardware models
- Adds macro
__VERIFIER_loop_bound
to use different unrolling bounds for specific loops - Adds option
encoding.wmm.idl2sat
to encode acyclicity constraint using SAT instead of IDL - Adds option
witness.graphviz
to generate violation graphs - Updates JavaSMT version to 3.13.3
- Several bug fixing and performance improvements
Dat3M 3.0.0 is out!
This new major version contains several improvements:
- Support for several SMT solvers based on JavaSMT
- Several performance improvements
- New docker container for easy use
- Extended compilation scheme for more instructions and architectures
- Support for validation of violation witnesses
- Drop support for IDL and KLEENE encodings
- Drop support for Porthos
- Bug fixing
This is the version participating in SVCOMP 2022.
Dat3M 2.0.7 is out!
This is the version participating in SVCOMP 2021. The main new features are listed below.
- Support for bit-vectors
- Improved (machine readable) witness generation
- Checking different properties: currently reachability and no-data-race
Dat3M 2.0.6 is out!
Dartagnan can now verify program written in C.
It uses SMACK (needs to be installed independently) as a backend to convert C programs to Boogie and it then performs the verification on the Boogie representation of the program.
We also improved the IR of programs to support more kind of expressions (including input non-determinism) and implemented loop unrolling of goto instructions.
Dat3M 2.0.3 is out!
The main new feature of this release is the user interface that allows to simulate memory models in just a few clicks instead of running the tools from the console.