Skip to content

Lincheck v2.0

Compare
Choose a tag to compare
@tsitelov tsitelov released this 03 Oct 17:27
· 5 commits to master since this release

Major changes in the release 2.0

General API changes (most of them are incompatible with the previous versions!):

  • core module is renamed to lincheck, what makes Lin-Check dependency specification more clear (com.devexperts.lincheck:lincheck:... instead of com.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, simpler threads, actorsPerThread, actorsBefore, and actorsAfter 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).

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.