Skip to content

Releases: JetBrains/lincheck

Lincheck 3.1

17 Jul 18:20
Compare
Choose a tag to compare

Bug Fixes

  • Wrap IntelliJ runtime debugger/coverage agent methods into ignored sections by @eupp in #759

Improvements

Trace Recorder

Full Changelog: lincheck-3.0...lincheck-3.1

Lincheck 3.0

01 Jul 14:23
Compare
Choose a tag to compare

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 to org.jetbrains.lincheck.
  • The artifact is now published to Maven Central under the org.jetbrains.lincheck group ID.

Features

Bug Fixes

  • Fix hanging problems with standard streams by @dmitrii-artuhov in #580
  • Fix the illegal lookupClass issue when using MethodHandles.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

Full Changelog: lincheck-2.39...lincheck-3.0

Lincheck 2.39

19 Mar 14:06
Compare
Choose a tag to compare

Bug Fixes

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

10 Mar 18:55
Compare
Choose a tag to compare

Bug Fixes

  • Rollback to make ideaPluginEnabled flag lazy by @eupp in #561

Improvements

  • Improve performance by caching some reflection-related data by @ndkoval in #560
  • Pass whether Lincheck is in the trace debugger mode to the plugin by @dmitrii-artuhov in #562
  • Set JDK 17 as a default JDK for representation tests by @eupp in #559

Lincheck 2.37

06 Mar 18:58
Compare
Choose a tag to compare

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

Lincheck 2.36

18 Feb 21:50
Compare
Choose a tag to compare

New Features

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

03 Feb 09:43
Compare
Choose a tag to compare

Features

Bug Fixes

  • Process kotlin.random.Random similarly to java.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 of StackTraceElement 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

Lincheck 2.34

09 Sep 14:46
Compare
Choose a tag to compare

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 in FinalFields and MethodIds 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 the AnalyzerAdapter documentation by @eupp in #368
  • In FieldSearchHelper skip protected or private fields that cannot be read by Unsafe by @eupp in #367
  • Ensure that array elements are transformed by @ndkoval in #372

Lincheck 2.33

01 Aug 21:59
Compare
Choose a tag to compare

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

Full Changelog: lincheck-2.32...lincheck-2.33

Lincheck 2.32

09 May 13:47
Compare
Choose a tag to compare

Improvements

  • Show the field name in the trace when calling a method on the final field by @avpotapov00 in #327