jboss-javassist / javassist

Java bytecode engineering toolkit
www.javassist.org
Other
4.1k stars 696 forks source link

API report for Javassist #156

Open lvc opened 6 years ago

lvc commented 6 years ago

This is the report on API changes and backward binary compatibility for the Javassist library since version 3.13: https://abi-laboratory.pro/java/tracker/timeline/javassist/

The report is automatically updated several times a week. Hope it will be helpful for users and maintainers of the library.

The report is generated according to the article https://wiki.eclipse.org/Evolving_Java-based_APIs_2 for jars at http://central.maven.org/maven2/org/javassist/javassist/ by the https://github.com/lvc/japi-tracker tool.

Thank you.

javassist-2

javassist-1

nickl- commented 6 years ago

Isn't there a github badge for this? I can't seem to find any obvious directions. Pardon my ignorance if it is obvious, seems you can have a badge for your favourite pet these days but what I was actually wondering... more specifically, is there a way to run this on demand? Perhaps as part of your CI or maven build?

At least have some way that you can know the score before you decide to ship a release. Or are we at the mercy of these services? Do they act like proverbial rats squealing over every mistake.

lvc commented 6 years ago

Hi,

is there a way to run this on demand? Perhaps as part of your CI or maven build?

Please, see how this was done by Atlassian: https://bitbucket.org/atlassian/java-api-compatibility-checker/src

Also you can easily check backward compatibility by one simple command:

japi-compliance-checker -l javassist -old javassist-3.22.0-GA.jar -new javassist-NEXT.jar

Or save the ABI dump file of your library in the source tree:

japi-compliance-checker -l javassist -dump javassist-3.22.0-GA.jar -dump-path ./ABI-3.22.dump

And compare it with future jars before release:

japi-compliance-checker -l javassist -old ABI-3.22.dump -new javassist-NEXT.jar
echo $? # 0 — compatible changes, non-zero — non-compatible

Then update ABI-3.22.dump file after intentional API/ABI changes.

See: https://github.com/lvc/japi-compliance-checker

Thank you.

nickl- commented 6 years ago

@lvc Thank you for the feedback!

Would be awesome to be able to show a GitHub badge pointing out the backward compatibility for the current release/branch. Everyone will want one of those =)

lvc commented 6 years ago

@nickl-,

Is there a snapshot repository for Javassist? I've found https://repository.jboss.org/nexus/content/repositories/snapshots/org/javassist/javassist/, but it's not up-to-date. I've just implemented daily analysis of snapshot versions in japi-tracker and would like to run it on Javassist.

Thank you.

nickl- commented 6 years ago

@lvc that is the repository currently configured in POM but I am not sure this project is configured for... nor do I believe it has ever used maven-release-plugin to roll out any release. It is unclear how the snapshot release (3.21.0-SNAPSHOT of October 4th) happened to get there. This was something I had on my to do list to address but it is unclear when we'll eventually get around to that.

My guess is the existence of a daily snapshot repository is very unlikely, relating to project throughput. Perhaps you could use maven central directly for actual releases... you can locate those released as javassist:javassist since ver. 2.5.1 and then released as org.javassist:javassist since ver. 3.13.0-GA by following the links.

Does this satisfy your needs or was there something more specific you were after?

lvc commented 6 years ago

@nickl-,

Does this satisfy your needs or was there something more specific you were after?

The idea was to track API changes in the pre-release daily snapshots before releasing the *-GA. But it's not necessary to have snapshots for that. One can release a beta version before the release to see it in the report and fix compatibility problems.

Thank you.

nickl- commented 6 years ago

@lvc I was thinking more on the lines of something that could be chained into the maven build would be ideal.