Releases: JetBrains/lincheck
Releases · JetBrains/lincheck
lincheck-2.9
This is a very major release that introduces a model checking mode (#40)! In this mode, Lincheck studies all possible schedules with a bounded number of context switches by fully controlling the execution and putting context switches in different locations in threads. In order to make the test time predictable, Lincheck bounds the number of schedules to be studied and increases the number of context switches gradually. The main advantages of the model checking mode are better coverage and providing a trace that reproduces the found error.
lincheck-2.8
Features
- Allow extra suspensions in the dual data structures formalism (#43, #48)
- Support
Serializable
classes as operation parameters and results (#46) - Add a mechanism to provide the thread number as an operation parameter (#47)
Bug Fixes
- Do not show old threads in deadlock/livelock thread dumps (#41)
Improvements
- Improve the execution performance by Implementing a custom executor for ParallelThreadsRunner that keeps the threads active (#44)
lincheck-2.7
lincheck-2.6
Features
- Linearizability support additionally to sequential consistency #33
lincheck-2.5
Improvements
- Allow extra suspensions in executions
- Fix starvation on internal spin-loop based synchronizations if the number of available cores is less than the number of scenario threads
lincheck-2.4
Improvements
- The stress strategy now detects hanging, stops the test and prints the thread dump in this case (#25)
- It becomes possible to write a part of the test in a superclass (#24)
Breaking Changes
- We decided to remove quantitative relaxation, it requires too many resources to support it, and we do not use relaxed algorithms in Kotlin (#22)
lincheck-2.3
Features
- Instead of using the testing data structure in a sequential way to specify the behavior of the operations, it is now possible to use a separate simple implementation as a specification. See
sequentialSpecification
parameter in both options and annotations.
Bug Fixes
- There were some bugs fixed with
suspend
functions support
lincheck-2.2
Features
- Lincheck tries to minimize scenarios on which the test fails; thus, it is now easier to investigate found bugs (#13)
Bug Fixes
- Tests do not fail if there is a suspendable operation and the
actorsAfter
parameter is non-zero (#15) - Fixed incorrect exception result representation in logs (#14)
- Fixed wrong alignment in init/post parts in logs (#10)
Improvements
- Empty post and init scenarios parts are omitted in logs if they are empty (added under #10)
lincheck 2.1
Main Change
A suspend
functions support has been introduced, so that it becomes possible to test data structures like channels or mutexes from the Kotlin Coroutines library; see the corresponding README section.