Skip to content
This repository was archived by the owner on Jan 13, 2023. It is now read-only.

v0.5

Choose a tag to compare

@TheDGOfficial TheDGOfficial released this 05 Mar 06:25
· 182 commits to main since this release

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 --filter would 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, info and debug. 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