Releases: JetBrains/lincheck
Releases · JetBrains/lincheck
Lincheck 3.5
Bug fixes
- Exclude relocated packages (starting with
shadow.) from transformation by @dmitrii-artuhov in #927 - Fix checks for shadowed package names by @eupp in #938
- Fix CFG loop validation check by @eupp in #936
- Swallow lincheck abort exceptions by @eupp in #961
Improvements
- Add memory tracker interface and supporting cast by @viliamDokov in #909
- New experimental model checker implementation by @viliamDokov in #934
- Bump ASM version to 9.9.1 by @ndkoval in #954
- Optimize reflection and unsafe data caching by @eupp in #982
- Optimize
ThreadSchedulerrelated allocations by @eupp in #983 - Optimize result interceptor allocations by @eupp in #984
- Make model checker more robust against potential interleaving non-replayability problems by @eupp in #986
- Clean-up static and dynamic javaagent attach code by @eupp in #916
- Refactor transformation profile by @eupp in #962
- Refactor Lincheck trace printing code by @eupp in #923
- Improve descriptors and
TraceContextAPI by @dmitrii-artuhov in #959
Deprecated
Trace Recorder
- Prototype trace diff by @lev-serebryakov-jetbrains in #918
- Support dynamic trace recording attach and remote control by @eupp in #917
- Collect local variables for snapshot breakpoints by @bbrockbernd in #929
- Add new tracepoints for trace recorder: Throw and Catch block start by @lev-serebryakov-jetbrains in #930
- Fix redundant temporary object creation by @lev-serebryakov-jetbrains in #951
Full Changelog: lincheck-3.4...lincheck-3.5
Lincheck 3.4
Bug fixes
- Add a check for local vars count before inserting
afterLocalWriteby @dmitrii-artuhov in #881 - Fix performance regression by @eupp in #889
- Fix ignored section constructor instrumentation by @eupp in #912
- Fix unsafe field resolve bug by @eupp in #914
Improvements
- Refactor runner API to avoid creating
testInstance(and other scenario-specific logic) in case of GPMC by @eupp in #529 - Loops instrumentation by @eupp and @dmitrii-artuhov in #847, #851, #855, #864
- Improve trace representation for mangled declarations by @zhelenskiy in #874
- Refactor injection code to make injections unconditional by @eupp in #878
- New Result Intercepting API by @viliamDokov in #908
- Optimize class retransformation by @eupp in #913
Deprecated
- Deprecate
@ModelCheckingCTestand@ModelCheckingCTestannotations by @jetbrains-junie[bot] in #818
Infrastructure
- Various improvements of integration test infrastructure by @zhelenskiy, @ivandev0, @dmitrii-artuhov, and @bbrockbernd in #846, #865, #891, #885, #893, #901
- Add the script to simplify minor release by @ivandev0 in #858
- Simplify Gradle build files by @ivandev0 in #866
- Collect bytecode instrumentation statistics by @eupp in #887
Trace Recorder
- Add features to support loading trace in IDEA plugin by @lev-serebryakov-jetbrains in #834
- Print injection exceptions and hide them from
EventTracker::onThreadRunExceptionby @dmitrii-artuhov in #844 - Fix bug with completing threads with loops by @dmitrii-artuhov in #861
- Pass exception to the
afterLoopExitinjection hook by @dmitrii-artuhov in #862 - Implement "null" output strategy for TR benchmarking by @lev-serebryakov-jetbrains in #869
- Implement background I/O for streaming trace recorder. by @lev-serebryakov-jetbrains in #873
- Track constructor calls for trace recorder by @dmitrii-artuhov in #875
- Fix multiple concurrent calls leading to error by @lev-serebryakov-jetbrains in #882
- Add statistics about trace points count and trace size. by @lev-serebryakov-jetbrains in #890
- Fix trace recorder calling project code by @lev-serebryakov-jetbrains in #894
- Fix invalid code location of the method which is run via button click by @lev-serebryakov-jetbrains in #897
- Fix io.ktor.client.engine.okhttp.OkHttpEngineTests::testRequestAfterRecreate failure by @lev-serebryakov-jetbrains in #896
- Enable eager instrumentation for Trace Recorder by @eupp in #898
- Shadow asm and bytebuddy by @bbrockbernd in #903
- Fix problem with targeting methods where source files are not available by @bbrockbernd in #904
New Contributors
- @viliamDokov made their first contribution in #908
Full Changelog: lincheck-3.3...lincheck-3.4
Lincheck 3.3
Features
- Support Kotlin SMAP by @lev-serebryakov-jetbrains in #807
Bug fixes
- Quickfix for
ClassReadererror by @eupp in #802 - Fix stack overflow error on object graph traversal in
ensureObjectIsTransformedby @eupp in #804 - Do not track MethodHandle static calls added by the compiler and ignored methods in general by @ndkoval in #803
- Fix possible deadlock involving
Throwableby @eupp in #840
Improvements
- Update Kotlin to 2.2.0 by @eupp in #799
- Owner name analyzer by @eupp in #777
- Minimize the static field traversals during lazy re-transformation by @eupp in #805
- Disable local variables tracking in lincheck by @eupp in #811
- Call
Thread.stopwith reflection. by @cpovirk in #841
Trace Recorder
- Support character escaping for args passed to javaagent by @bbrockbernd in #798
- Fix bug with missing thread forks in Trace Recorder by @dmitrii-artuhov in #810
- Implement (de)serialization of thread names by @dmitrii-artuhov in #812
- Add support for all-threads tracking by @dmitrii-artuhov in #824
- Add new format of agent options: key=value pairs. by @lev-serebryakov-jetbrains in #819
- Add packed (single-file) trace format. by @lev-serebryakov-jetbrains in #820
- Implement bytecode class transformation filters for Trace Recorder by @eupp in #822
- Disabled field and array reads by default for Trace Recorder by @bbrockbernd in #825
- Fix local variable writes instrumentation logic by @ndkoval in #836
- Do not trace
java.lang.NumberandCollection.sizemethod calls by @ndkoval in #827 - Prettify static method calls (DR-398) by @dmitrii-artuhov in #831
- Print simple class name for exception method call results by @eupp in #837
- Account for throwing 'CharSequence::subSequence()' method implementations at
TRObjectconstruction by @dmitrii-artuhov in #838 - Fix
$Refobjectselementaccess representation by @dmitrii-artuhov in #835
New Contributors
Full Changelog: lincheck-3.2...lincheck-3.3
Lincheck 3.2
Bug fixes
- Call
ensureObjectIsTransformedfor all fields recursively, even when the analyzing object class should not be retransformed by @ndkoval in #796
Improvements
- Inline methods revamp by @lev-serebryakov-jetbrains in #782
- Fix inline
$ivcompression for lincheck by @dmitrii-artuhov in #787 - Various fixes for Lincheck's owner names resolution by @eupp in #784
- Generator adapter refactoring by @eupp in #774
- Collect actor results during trace collection by @bbrockbernd in #672
Trace Recorder
- Trace compression for default implementations of getters and setters of fields by @dmitrii-artuhov in #775
- Refactor pretty printers: add an abstract class
AbstractTRAppendableby @dmitrii-artuhov in #778 - Wrap
<clinit>'s in ignored section transformers for trace recorder by @dmitrii-artuhov in #794 - Fix possible ConcurrentModificationException by @lev-serebryakov-jetbrains in #789
- Fix StackOverflowError by @bbrockbernd in #785
- SeekableChannelBufferedInputStream.position() can be wrong … by @lev-serebryakov-jetbrains in #791
- Instrument only "natural" methods for agent setup. by @lev-serebryakov-jetbrains in #792
- Fix issue with non-transformed classes accessed from other constructors by @dmitrii-artuhov in #793
- Remove Lambda addresses from print out. by @lev-serebryakov-jetbrains in #790
- Turn off local reads for trace recorder. by @lev-serebryakov-jetbrains in #783
Full Changelog: lincheck-3.1.3...lincheck-3.2
Lincheck 3.1.1
Improvements
Other
- Temporarily disable inline method call transformer. by @lev-serebryakov-jetbrains in #766
Full Changelog: lincheck-3.1...lincheck-3.1.1
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
MethodCallTracePointdirectly 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.linchecktoorg.jetbrains.lincheck.- The artifact is now published to Maven Central under the
org.jetbrains.lincheckgroup ID.
Features
- Finalize the GPMC API by @ndkoval in #658
- Support thread interruptions by @eupp in #605
- Support for aborting
Parked/LiveLockeduser 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
lookupClassissue when usingMethodHandles.Lookupon 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
LoopDetectormemory 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
ThreadAbortedErrorin 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