Releases: JetBrains/lincheck
Releases · JetBrains/lincheck
Lincheck 3.1
Bug Fixes
Improvements
- Do not show stacktrace elements in the short execution trace and shorten assertion functions by @ndkoval in #761
- Store
MethodCallTracePoint
directly in the trace by @ivandev0 in #667 - Extract trace module into separate subproject by @eupp in #734
- Modularization of the project by @dmitrii-artuhov in #744
- Integration tests modularization by @dmitrii-artuhov in #739
Trace Recorder
- New on-disk trace format: Supports streaming write and lazy loading. by @lev-serebryakov-jetbrains in #738
Full Changelog: lincheck-3.0...lincheck-3.1
Lincheck 3.0
This release brings new major feature: general-purpose model checking.
Lincheck now allows to test arbitrary concurrent code. To write a Lincheck test, you need to wrap your concurrent logic with the Lincheck.runConcurrentTest { ... }
function. Lincheck will automatically study different thread interleavings and report an error if one leads to a test failure. See the example in README.md.
⚠️ Lincheck 3.0 Changes️:
- Lincheck now focuses on testing arbitrary concurrent code still providing declarative API for testing concurrent data structures.
- The API has been moved from
org.jetbrains.kotlinx.lincheck
toorg.jetbrains.lincheck
.- The artifact is now published to Maven Central under the
org.jetbrains.lincheck
group ID.
Features
- Finalize the GPMC API by @ndkoval in #658
- Support thread interruptions by @eupp in #605
- Support for aborting
Parked
/LiveLocked
user threads when test threads are finished by @dmitrii-artuhov in #647 - Preliminary support for inline calls. by @lev-serebryakov-jetbrains in #633
Bug Fixes
- Fix hanging problems with standard streams by @dmitrii-artuhov in #580
- Fix the illegal
lookupClass
issue when usingMethodHandles.Lookup
on JDK 8 by @zhelenskiy in #594 - Finish user thread when exception is throw from it by @dmitrii-artuhov in #609
- Hotfixes for livelock detection inside validation function by @eupp in #713
Improvements
- Add support for intrinsic candidate methods handling by @dmitrii-artuhov in #578
- Transform lambdas correctly and enhance the GPMC API shape by @ndkoval in #545
- Optimize
LoopDetector
memory consumption by @ndkoval in #623 - Improve suspend function trace representation by @bbrockbernd in #621
- Java lambda argument representation by @bbrockbernd in #655
- Change object numeration implementation by @eupp in #702
- Render Pair and Triple in the trace by @ndkoval in #712
- Print the Lincheck error to the console when debugging with the IntelliJ plugin by @ndkoval in #721
- Don't instrument args reads at code line 0 (#722). by @lev-serebryakov-jetbrains in #724
Full Changelog: lincheck-2.39...lincheck-3.0
Lincheck 2.39
Bug Fixes
- Fix missing type info for ij plugin by @bbrockbernd in #570
- Add coroutines delay support by @dmitrii-artuhov in #568
Improvements
- Track local variables to improve object representation in the trace by @eupp in #579
- Additional info in trace sent to plugin for code coloring by @bbrockbernd in #563
- Custom threads: remove
run()
, remove lambda and remove result by @bbrockbernd in #557 - Implement infrastructure to check recorded trace by @ivandev0 in #510
- Add new tests with gpmc & coroutines by @dmitrii-artuhov in #569
Lincheck 2.38
Bug Fixes
Improvements
Lincheck 2.37
Bug Fixes:
- Ignore
MethodHandles.Lookup.*
and related methods during the analysis by @eupp in #548 - Fix Idea plugin integration with GPMC by @avpotapov00 in #551
- Supress internal
ThreadAbortedError
in user threads by @eupp in #526
Improvements
- Allow loop detector replayer to continue executing after it finished the replayed part by @eupp in #524
- Improve thread creation representation by @bbrockbernd in #534
- Remove access calls from trace by @bbrockbernd in #538
- Add minimalistic logger to Lincheck by @dmitrii-artuhov in #546
- Automate representation test overwrite by @bbrockbernd in #550
- Add basic general-purpose model checker test for coroutines by @eupp in #539
- Pass location information of each trace point to IDEA debugger. by @lev-serebryakov-jetbrains in #533
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