What is it?

Clirr is a tool that checks Java libraries for binary and source compatibility with older releases. Basically you give it two sets of jar files and Clirr dumps out a list of changes in the public api. The Clirr Ant task can be configured to break the build if it detects incompatible api changes. In a continuous integration process Clirr can automatically prevent accidental introduction of binary or source compatibility problems.


To learn more about binary compatibility of Java APIs the follwing articles provide some detailed background material:


  • Report all API changes (currently only partially implemented)
  • Evaluate each change wrt. binary and source compatibility
  • support plain text and XML reports
  • Flexible failure handling (warnings vs. errors, break the build or set error property)


The name clirr is derived from the binary compatibility property that a new release of a library/component should have (cited from the above mentioned Eclipse article):

Pre-existing Client binaries must link and run with new releases of the Component without recompiling.

You can also use clirr as a verb, as in Last night the build clirred, meaning that binary incompatibility problems were detected and broke the build.