Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support Vineflower Decompiler #3262

Open
halotroop2288 opened this issue Sep 2, 2024 · 2 comments
Open

Support Vineflower Decompiler #3262

halotroop2288 opened this issue Sep 2, 2024 · 2 comments

Comments

@halotroop2288
Copy link

Fernflower is a pretty archaic decompiler at this point, given the countless improvements Vineflower has made over it. I would like to be able to set Vineflower as my preferred content provider for jdtls in NeoVim. And to do that, I believe it needs to be supported here, first.

Vineflower is a fork of- and a drop-in replacement for Fernflower. So adding support for it should be dead-simple. (But when are things ever that easy?)

@rgrunber
Copy link
Contributor

rgrunber commented Sep 3, 2024

@testforstephen , thoughts on replacing fernflower with vineflower ? Based on #2704, we should just be able to replace it with https://central.sonatype.com/artifact/org.vineflower/vineflower . We'd also have to verify the settings in FernFlowerDecompiler are available.

@0dinD
Copy link
Contributor

0dinD commented Sep 3, 2024

It could also be implemented as a JDT LS plugin, via the decompiler/content provider extension point. This means it could be maintained externally, perhaps in the Vineflower organization (which already has a plugin for IntelliJ IDEA).


For context regarding Fernflower being "archaic", I think it's worth mentioning that both projects are still being maintained. The difference is that Fernflower is being maintained by JetBrains (whose interest in improving the decompiler output quality seems limited), whereas Vineflower is largely being maintained by various people from the Minecraft: Java Edition modding community (where improving the decompiler output quality is of great interest, due to the source code of the game being unavailable). From what I've heard, JetBrains have not been all that interested in accepting the various improvements to Fernflower made by the Minecraft community as contributions (perhaps due to a lack of resources), hence the fork.

Do note that if you want an apples-to-apples comparison between Fernflower and Vineflower, special care has to be taken in regards to IFernflowerPreferences because some of the default values have been changed in Vineflower, and I believe some new preferences may have been added.

But for what it's worth, my opinion is that Vineflower is superior to Fernflower in terms of output quality, having used it extensively in the context of Minecraft: Java Edition modding. So in the interest of providing the best possible decompilation results out of the box in JDT LS, I think replacing Fernflower with Vineflower is a good idea.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants