Notable changes to GenMC will be documented in this file. This repository is only updated whenever a new version of GenMC is released.
- Support for LLVM 17/18
- GenMC now warns when memory is not freed
- Minor performance improvements
- Landing page for doxygen + rudimentary development documentation
__VERIFIER_assume()
and__VERIFIER_spin_end()
now take a boolean argument (instead of int)- GenMC now uses the new LLVM pass manager
- IMM performance may incur a minor penalty
- Project layout under
src
- Minor bug fixes
- Fixed in-place revisiting for CASes
- Fixed genmc include path (by Jonathan Schwender)
- Minor bug fixes
- Verbosity level is now respected for stdout too
- GenMC is less conservative when reporting ww-races
- Support for SC, TSO, RA memory models
- Symmetry reduction (automatic or via
__VERIFIER_spawn_symmetric
) - In-place revisiting (from Awamoche [CAV 2023])
- Preemption/Round-Robin bounding under SC [TACAS 2023, FMCAD 2023]
- State-space size estimation before verification begins
- Performance optimizations
- Support for LLVM-16
- Rudimentary doxygen documentation
- GenMC now requires a compiler with C++20 support
- Support for LLVM-{7,8,9}
- Support for LKMM, Persevere
- Various bug issues
- Better C++ code support
- Performance optimizations
- Faster
configure
- Support for LLVM-{14, 15}
- GenMC now requires a C++14-compliant compiler
- Support for LLVM-6.0
- Dependency on libclang-dev
- Bug fixes
- Built-in support for hazard pointers
- Annotations for faster data-structure verification via
-helper
(experimental) -no-unroll
switch to exclude functions from unrolling- Performance optimizations
- GenMC now runs under
-mo
by default - Enhanced graph and DOT printing
- Support for LLVM-{3.8, 4.0}
- Documentation
- Various bug fixes
- Core algorithm now follows TruSt
- Support for concurrent verification (
-nthreads=<uint>
) - Support for atomic_{nand,umax,umin,max,min}
- Support for LLVM-{12,13}
- LAPOR is temporarily disabled
- Support for LLVM-{3.8,4.0}
- Verification of user-defined libraries
- Bug fixes
- Documentation for for
__VERIFIER_spin_{start,end}
- More accesses to freed memory are detected
- GenMC warns about execution graphs getting too large
- Liveness checks are only allowed under
-mo
now
- Bug fixes
- Support for LKMM (experimental)
- Native support for
pthread_barrier_t
(via BAM) - More loops are automatically transformed into
assume
statements - Support for liveness checks reinstated
- Documentation for new features
- Error message for mixed-size accesses
- GenMC's output is now properly directed to stdout
- Proper support for
pthread_mutex_init
andpthread_mutex_destroy
- Various bugs
- Support for
aligned_alloc()
- Fixes for ppo calculation in IMM
malloc()
now returns aligned addresses- Documentation fix and update
- Other minor bugs
- Documentation for Persevere, LAPOR
- Support for LLVM 11
- Temporarily removed liveness support for fixing
- Build fixes for LLVM 10
- Support for some unistd.h system calls
- Support for checking persistency semantics of files under ext4 (experimental)
- Race detection on automatic variables
- Checking for accessing uninitialized memory
- Symmetry reduction (unstable)
- Liveness checks (experimental)
- Support for memcpy() (experimental)
- Support for C++ (experimental)
- Support for <threads.h>
- Support for LLVM-9
- New CHANGELOG.md file to track changes in the project.
- Names of various switches
- Support for LLVM 3.5
- Various bug fixes
- Test cases under macOS