Just discovered that Clirr does not complain if the throws clause of a method or constructor is changed to add a new Exception. Seemed like a bug at first, but it's not, because throws clauses are only checked at compile-time.
So e.g. adding "throws IOException" to a method will not break binary compatibilty, but of course anyone recompiling against the updated binary code will get a compiler error (if they don't already handle the error). [This is perhaps why some incompatibilities in Math 2.x were not discovered by Clirr] The Commons versioning rules require that changes to method signatures necessitate a major release, so changes to throws clauses mean a major release is required. Since this does not affect binary compatibility, AFAICT there is no technical reason to require a package name change. A major release generally means that the user will want to make code changes anyway to take advantage of new features, so I don't see this as a big problem. But we should try do document such changes. Clirr is not sufficient to detect whether a major version change is required, so perhaps we need some other tool to detect such changes. (Does anyone know of one?) --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org For additional commands, e-mail: dev-h...@commons.apache.org