Vineflower 1.10.0 is the next major release of Vineflower, bringing a plugin interface to allow interfacing with the decompiler, a prototype Kotlin decompiler, major performance optimizations, and dozens of bugfixes and minor improvements. Thanks to everyone who contributed to this release!
Release highlights:
An extensible plugin system, allowing third parties to modify decompiled code without modifying the decompiler itself
The addition of a prototype Kotlin decompiler
Improvements around variable handling
Large amounts of fixes to generics handling
Siginifcant improvements to decompiler speed and memory usage
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:
Added plugin API
Added prototype Kotlin decompiler
Added support for using MethodParameters attribute when there is no LVT
Added text token API
Added clashing names analysis
Added support for 'Type[]::new' (Thanks, coehlrich!)
Added support for variable inlining with pattern matching instanceof (Thanks, coehlrich!)
Added more descriptive names for options
Added support to hide spurious fields in records if they are already record components
Added space between operators (e.g. 'while(...)' -> 'while (...)')
Improved help message
Improved identification of if-pattern matches
Improved standalone '++i' by changing to the more idomatic 'i++' (Thanks, TheKodeTode!)
Improved some cases of variables not getting inlined
Significantly improved generics handling
Moved variable renaming to a separate plugin
Fixed a crash with a for loop over a static iterator method
Fixed "Invalid constant type" issue
Fixed try-with-resources processor creating illegal code with custom exception catching
Fixed concurrent modification exception with certain jars
Fixed generation of casts to type ""
Fixed some cases of fields not getting inlined into usage sites
Fixed labels pointing to blocks that don't exist
Fixed object casts to boolean type
Fixed cases of "Could not properly define all variable types" errors
Fixed for unrepresentable types
Fixed casts on null types
Fixed rare crash with 'longType++'
Fixed some multithreading issues
Fixed improper nested annotation formatting
Fixed casting of arrays with different dimensions
Fixed lambdas losing generics information
Fixed bug with for loop generation not respecting final variables (Thanks, coehlrich!)
Fixed decompiler not considering lambdas when searching for local class placement (Thanks, MiniDigger!)
... (truncated)
Commits
e0d0cc0 Merge pull request #353 from Vineflower/develop/1.10.0
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Bumps org.vineflower:vineflower from 1.9.3 to 1.10.0.
Release notes
Sourced from org.vineflower:vineflower's releases.
... (truncated)
Commits
e0d0cc0
Merge pull request #353 from Vineflower/develop/1.10.01882f77
Disable scala plugin6876f8f
Adjust synthetic parameter identification logic to account for multiple const...303ad8b
Check for anonymous class parents too79c1c2b
Fix default case being removed in non-pattern enum switchesd0c0888
Fix short name parsing for varnaming plugin23f73e1
Fix J21 inner class synthetic params not being removed56e942b
Also remove the .ordinal()57b23fd
Fix switch-on-enum for J2159d3088
I forgot to add a change :sob:Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting
@dependabot rebase
.Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show