Skip to content

Vineflower 1.11.0

Choose a tag to compare

@jaskarth jaskarth released this 25 Feb 04:22
· 9 commits to master since this release
904ead0

Vineflower 1.11.0 is the next major release of Vineflower, adding support for record pattern matching, improved bytecode mapping, as well as dozens of bug fixes and smaller improvements. Thanks to all the contributors who submitted patches for this release!

NOTE
This version bumps the minimum required Java version to Java 17!

NOTE
This release contains two different jars. The "regular" jar, with no classifier, contains both the main decompiler and the three bundled plugins. The "slim" jar, with the "-slim" classifier, contains only the main decompiler itself. If confused, just get the regular jar as usual.

The full changelog is as follows:

Click here to expand the full changelog
  • Added support for intersection types in cast (Thanks, coehlrich!)
  • Added option to disable inner class name validation (Thanks, EpicPlayerA10!)
  • Added support for Kotlin string concatenation
  • Added support for 'val' inference for Kotlin
  • Added support for record pattern matching
  • Added option to exclude classes from decompilation (Thanks, mvisat!)
  • Added support for Kotlin default arguments
  • Added more cases that if pattern matching supports
  • Improved inlining of empty lambda bodies and empty anonymous classes (Thanks, jpenilla!)
  • Improved clashing variable naming (Thanks, jpenilla!)
  • Improved switch pattern matching with stack vars
  • Improved analysis of assignments in loop headers
  • Improved inlining of ++/-- expressions
  • Improved conditionals with pattern matching
  • Improved superclass analysis when deciding which methods are ambiguous
  • Improved handling of synchronized blocks created with jsr/ret
  • Improved bytecode mapping significantly
  • Fixed redunant casts between primitives being emitted
  • Fixed non-static inner class 'this' var resolution for multiple constructors (Thanks, coehlrich!)
  • Fixed simple lambda indentation (Thanks, jpenilla!)
  • Fixed indent on simple switch branches (Thanks, jpenilla!)
  • Fixed switch-on-enum breaking when class is not in classpath (Thanks, EpicPlayerA10!)
  • Fixed default case of records not always being last (Thanks, coehlrich!)
  • Fixed variable in switch head not being inlined (Thanks, coehlrich!)
  • Fixed incorrect parameter type with synthetic params (Thanks, coehlrich!)
  • Fixed crash in string concat
  • Fixed crash in sequence flattening
  • Fixed crash in finally block processing in rare cases
  • Fixed crash in NewExprent type inference
  • Fixed crash in InitializerProcessor
  • Fixed static modifier being emitted inner records
  • Fixed race condition crash with duplicated classes
  • Fixed Kotlin decompiler saving files as .java instead of .kt
  • Fixed incorrect inlining of pattern matching of methods
  • Fixed float addition association
  • Fixed pattern matching not identified inside loops (Thanks, coehlrich!)
  • Fixed multiple crashes in Kotlin decompilation
  • Fixed Objects.requireNotNull() not being removed in some cases (Thanks, coehlrich!)
  • Fixed switch-on-enum being wrongly detected

Please report any issues to https://github.com/Vineflower/vineflower/issues!