Lincheck v2.0
Major changes in the release 2.0
General API changes (most of them are incompatible with the previous versions!):
core
module is renamed tolincheck
, what makes Lin-Check dependency specification more clear (com.devexperts.lincheck:lincheck:...
instead ofcom.devexperts.lincheck:core:...
);- Execution scenario began including not only a parallel part of the execution but initial and post-parts as well (see
ExecutionScenario
class); actorsPerThread
option is removed, simplerthreads
,actorsPerThread
,actorsBefore
, andactorsAfter
options are introduced instead;@Reset
method is removed, the default constructor is used instead;- Default parameter generators for the supported primitive types and strings are used if no one is specified;
- Logging level control is introduced.
Verification changes:
- All verifiers are moved to
verifier
package; - Different relaxed contracts (quiescent consistency, serializability, quantitative relaxation) are supported;
- All verifiers start using a labeled transition system (LTS) for their algorithms, what makes their logic more clear;
- All verifiers are based on a new
CacheVerifier
abstract verifier which keeps previous results and looks at them at first (results repeat in up to 80% of the time).
- All verifiers are based on a new
Other features:
- An infrastructure for managed strategies is introduced (look at the skeleton for random-switch strategy);
- Pretty printing for execution scenario and result is added;
- Kotlin becomes a primary language for new features.