6.0-0.pre.3
Pre-release
Pre-release
highlights
- jdk 8-17 support
- detailed classinfo - classloader and origin now can be printed
- init of classes - classes can be initiated if needed
- override management - overwritten classes can be restored
- classpathless-compiler now should be feature-completed and by one click working with full setup
- many gui improvements
- cli remains future completed with gui
- gui console (especially for compile errors), but now all what goes wrong is well visible
- api to insert new fields and variables to overwritten classes. With code completion!
- filesystem support follows runtime features
- improved work on classes listing
full log:
Main Features
* detailed class info
classloader and origin of class is printed
* init class - if class is not yet loaded (and thus invisible) by runtime, it can be forcibly initiated
this is heavily used by runtime classapthless compiler to restore dependencies
future work in 7.0 is to allow upload of utterly new classes
* overrides management
each class which is override by the new bytecode, can be restructured to the original state
this works also for filesystem work in single gui session
* runtime (classapth-less) compilation
With host classes, do not be fatal on failed BYTE command, as it may be system class
Cli-compile now should get all config
Passed --verbose flag to compilers
the compielr now can get arguments
eg.: source/target (more to do in this field in 7.0)
the arguments are persistent, and reused by cli
use new cplc dependencies
it now depends on object web asmtools to scan for dependencies in byte code
Before decompilation with inner classes, all inner classes are activated
If CPLC is requesting class which do not exists, it tries init it before failing
for runtime, in FS, it fall-back to host
Fixed return of untransformed bytecode of overwritten classes
As it was, our own return, contained original, untransformed byte[]
Now it returns bytecode correctly in by-us transformed form
* runtime compiler got api, which can allow to insert new variables
all global, fields and instance's variables in both synchornised and unsynchronised way are supported
the complexity goes fro int to any runnable with custom code
there is code completion for this api, as it is quite complex
* file system
FSvm now can list locations (as in class details, just without class-loader)
nested jars no longer have cache
Each read now leads to unpack, and each write leads to pack
Adds option to edit which file extensions are searched as inner jars
Made nested jar extensions save to config file
Frontend
quick compile and upload buttons
by one click you can upload modified code back to running vm!
many GUI improvements, like LaF, icons, borders...
Replaced other MainFrameView text-based buttons with icon-based ones
Improved tip for multi-select
Made Classlist scroll to the top on reload when nothing is selected
Added case sensitivity option to Source buffer search
copypasting of class list - via rich popup menu
Fixed being able to select multiple classes
Implemented right click class list interval selection
Copy of (detailed) classes to clipboard is now more customizable
Added classloader string to class loading with info
Implemented frontend for loading classes with info
loading of decompiled bytecode now have progressbar
Majorly refactored SettingsView into 3 separate panels to ease future setting additions
implemented global console
Plugin compiler is now logging to gui and decompilers in verbose mode too
In verbose mode, put whole trace to console
Make globalconsole able to change verbose in runtime
Extracted Undo and Redo buttons onto the toolbar common for both buffers
Implemented frontend for CPLC settings
Implemented frontend for saving FS VMs after JRD closes
Added 'Remove VM' GUI buttons to remote and FS VM tabs, with backend support
Made bytecode buffers detachable via a toolbar button
improved search in both decompiled code and binary
Added regex support to bytecode search
Made binary buffer editable by pressing 'Space' or 'Enter'
Implemented undo and redo functionalities of text fields
Made both bytecodeSearch and hexSearch text blink red if it was not found
Implemented bytecode search 'Previous' and 'Next' buttons
The bytecode search field now uses the same JPanel design as hex search.
Moved the search bar to the bottom to match hex search.
Fixed bytecode search match-case discrepancy
Cli
cli now can print details
listjvms, listplugins, api now can use saveaas
Added generation of manpage to image
Cli now have access to agent api
Development
Made jdk17 compilable
on both development and runtime
Restored source/release 1.8 comaptibility
jdk11 ramins the latest runtime usable for host
agnet can be injected to jdk8 and up
Introduced & configured a Checkstyle-compliant Maven Formatter plugin
errors from agent now are propagated with trace and messages
Made agent location overwritable by property org.jrd.agent.jar
added tests
Our tests, requires agent. And theyneed current agent,not somr random
Building first agent
Introduced automatic filling of agent path after installation
Restructured, updated, corrected and expanded the welcome message.
Added SpotBugs plugin to run when building, but not fail the build
and fixed really many many issues
Introduced checkstyle plugin
Implemented rudimentary GitHub CI
Corrected frontend package naming
Renamed packages to use lowercase naming convention and to better correspond with their current use.
Made decompilers automatically import on a fresh installation
Implemented sorting of plugins by scope, name
mvn clean install -Pimages -Plegacy
so although built by 17, should be jdk8 compatible.