Recaf
Recaf copied to clipboard
Better phantom class support
Generating phantom classes using JPhantom (My fork, since it has some optimizations) lets us compile against things we don't have direct access to. On larger jars the process can be slow and is more prone to failure.
Regarding crashes: We may need to do some active maintenance and test coverage of our JPhantom fork to cover more advanced cases such as obfuscation
Regarding speed: Generating phantoms in the context of the whole primary resource's classes creates more accurate skeleton classes, but is more error prone. But in most cases we probably do not need them to be that specifically accurate. For example, if the original class uses List but our code uses ArrayList will it change our generated bytecode if the phantom class is defined with ArrayList instead of List due to a less informed analysis process?
In 4x we only generate missing data per-class when requesting a compilation for the code of that class's decompilation. This reduces the speed concerns as there are many less constraints to consider.
We also want to look into getting https://github.com/Nowilltolife/Reconstruct fully operational to get away from the psuedo-random behavior of JPhantom.
Closing in favor of #707