v0.5
Release notes (not all changes):
We are coming close to v1.0, so this release includes a refactor of the project! It is now splitted properly onto multiple packages and source files instead of just one. There is still a lot of work to be done, however!
Added:
Featured:
- Added parallel processing! This will utilize all your processor cores instead of just one and will improve performance dramatically if you have many cores! For example, if you have 4 cores, the program would just limit itself to a %25 global CPU usage (1 thread out of 4 threads) before, but now it will use up to %100 on all cores and this would result in a %75 performance increase!
Others:
- New CLI arguments: --verbosity, --fail-verbosity, --async, --buffered, --help, --parallel, --threads, --timing, --track, --verify
Changed:
Semi-breaking:
-
Now gives errors for missing argument values. i.e.
java -jar bytecode-version-analyzer.jar --filterwould not do anything before, but will give an error now. This use case is however, already invalid behaviour, so this not a totally breaking change, that should have been like this from scratch. -
The program will now return non-zero exit code to OS properly in case of an error or fatal error by default. You can control this behaviour via the CLI option
--fail-verbosity. Current possible values are:none,fatal,error,warn,infoanddebug. For up-to-date values, check the Verbosity enum in the source code or JavaDocs.
Others:
- Refactored workflow of CI; now uses latest Maven Wrapper instead of relying on system provided Maven version.
- Now uses lazy-init for many static variables to optimize start-up time.
Fixed:
-
Fixed NullPointerException when first argument is null in main method.
-
Fixed Young GCs caused by creation of new ClassFileVersion objects. They will now be cached by major version at least, maybe we will cache minor too in future.
-
Fixed expensive ZipFile#read calls made by shouldSkip method. Replaced new ZipFile in there to use a single instance like JarFile. This results in a good flat performance boost in my testing and makes the program more smooth, avoiding more GCs combined with the ClassFileVersion cache.
See full changes here:
v0.4.1...v0.5