Releases: JetBrains/lincheck
Releases · JetBrains/lincheck
Lincheck 2.36
New Features
- Multiple suspension points support by @avpotapov00 and @eupp in #348
- Support thread pools in the general-purpose model checking API by @eupp in #447
- Plugin integration with general-purpose model checking by @avpotapov00 and @eupp in #472
Bug Fixes
- Instantiate
testClass
taking into account its enclosing class by @ivandev0 in #466 - Fix instrumentation of newly loaded classes by @eupp in #525
- fix: broken links to test samples by @danil-pavlov in #527
Improvements
- Improve default function representation in trace by @bbrockbernd in #523
- Fix
Unit
representation in the trace by @eupp in #528 - Move Intellij plugin related functionality into
IdeaPlugin.kt
by @eupp in #465 - Move
ideaPluginEnabled
into the file scope by @ivandev0 in #471 - Ignore flaky coroutines multiple suspensions test by @eupp in #509
Lincheck 2.35
Features
- Draft API for the general-purpose model checker by @dmitrii-artuhov in #411
- Support custom threads by @eupp in #415
Bug Fixes
- Process
kotlin.random.Random
similarly tojava.util.Random
by @ndkoval in #375 - Fix resumption trace collection and printing logic by @eupp in #361
- Non-determinism fix: ClassLoaders are now transformed in the Model Checking mode by @avpotapov00 in #413
- Fix local objects detector by @eupp in #422
- Fix object creation tracking by @eupp in #426
- Fix of
NoClassDefFoundError
due to unintended Lincheck analysis ofStackTraceElement
methods by @eupp in #423 - Fix internal Lincheck bug check by @eupp in #417
- Prevent IllegalArgumentException by @jbonzohln in #421
- Fix atomicfu instrumentation rules (exclude atomics only) by @eupp in #462
Improvements
- Add ➜ and = signs instead of READ and WRITE in representations tests by @dmitrii-artuhov in #458
- Support Java 8 by @zhelenskiy in #416
- Plugin speed-up: decrease the number of #beforeEvent calls by @zuevmaxim in #433
- Remove atomic setter transformers by @eupp in #428
- Static memory snapshot collecting and restoring by @dmitrii-artuhov in #418
- Static memory snapshot: add support for Unsafe, VarHandle, and AtomicFieldUpdater by @dmitrii-artuhov in #429
- Internal trackers APIs by @eupp in #369
- Utility function for unified object hierarchy traversing by @dmitrii-artuhov in #420
- Make some of the representation tests single-threaded by @eupp in #366
- Do not depend on the
bootstrap
module in tests by @ndkoval in #352 - Collect sources from the bootstrap module by @zuevmaxim in #432
- Remove
InternalLincheckTestUnexpectedException
by @eupp in #427 - Fix some flaky tests by @eupp in #439
- Add new tests for atomic primitives and array accesses by @eupp in #442
- Fix test JDK version by @zhelenskiy in #446
- Automate representation tests repair process by @eupp in #456
Lincheck 2.34
Bug Fixes
- Fix typo in
AtomicMethods.kt
by @eupp in #356 - Fix byte array element type in the bytecode transformation code by @eupp in #357
- Do not use Kotlin in the
bootstrap
module by @ndkoval in #351 - Fix possible
ConcurrentModificationException
when collection information inFinalFields
andMethodIds
by @ndkoval in #354 - Avoid recursive enumeration of class and classloader instances when plugin is enabled by @avpotapov00 in #364
- Use
ClassReader.EXPAND_FRAMES
as dictated by theAnalyzerAdapter
documentation by @eupp in #368 - In
FieldSearchHelper
skip protected or private fields that cannot be read byUnsafe
by @eupp in #367 - Ensure that array elements are transformed by @ndkoval in #372
Lincheck 2.33
What's Changed
- Bytecode Transformation Refactoring by @eupp in #322
- Fix Java 11 performance bug by @eupp in #316
- Strategy run API refactoring by @eupp in #262
- Coverage bytecode filter by @dmitrii-artuhov in #335
- Detect atomic primitive method calls dynamically by @eupp in #336
- Output fixed in case of an incorrect arguments count in custom scenarios by @avpotapov00 in #338
- Spin locks detection enchancements by @avpotapov00 in #331
- AllowExtraSuspension parameter deprecated, SUSPENDED prefix removed from the output by @avpotapov00 in #339
- Make all compilation warnings errors by @ndkoval in #341
- Do not show clocks when they don't provide any useful information by @ndkoval in #349
- Minimization improvement: try to remove two operations and move operations to init and post parts by @ndkoval in #350
New Contributors
- @dmitrii-artuhov made their first contribution in #335
Full Changelog: lincheck-2.32...lincheck-2.33
Lincheck 2.32
Improvements
- Show the field name in the trace when calling a method on the final field by @avpotapov00 in #327
Lincheck 2.31
Improvements
- Loop detector refactoring by @eupp in #310
- Set lincheck version in tests for the plugin compatibility by @zuevmaxim in #312
- Exception message when no operations defined impoved by @avpotapov00 in #233
- Improve trace representation: show non-
this
object instances on method calls and show field names when usingVarHandle
,AtomicReference
, andUnsafe
by @avpotapov00 in #325
IntelliJ IDEA Plugin support:
- Object traverser fix by @avpotapov00 in #313
- Exceptions provided to the plugin by @avpotapov00 in #304
- Execution results are presented in case of any failure by @avpotapov00 in #314
Lincheck 2.30
This is a big release for Lincheck. We changed how Lincheck instruments byte-code, so no more annoying add-opens ...
are needed 🎉
Improvements
- Byte-code transformation via a dynamically attached Java agent by @avpotapov00, @eupp, and @ndkoval in #296
- Increase number of invocations for flaky stress tests by @ndkoval in #289
- Remove redundant default managed strategy guarantees by @eupp in #306
- Bump minimal plugin version to 0.2 by @zuevmaxim in #305
Full Changelog: lincheck-2.29...lincheck-2.30
Lincheck 2.29
Improvements:
- Optimize spin loops and fix regression by @eupp in #298
- Optimize
TransformationUtils.isCoroutineStateMachineClass
by @ndkoval in #294 - Optimize Method.isSuspendable implementation by @ndkoval in #293
- Implement
final
field detection withoutClass.forName(..)
by @avpotapov00 in #297 - Improve UX when running
*IsolatedTest
s from IntelliJ IDEA by @ndkoval in #274 - Display enum values as enum names instead of
<className>@<hashCode>
by @ndkoval in #300 - Object numeration representation fix by @avpotapov00 in #302