Compatibility is a complex issue, but we do our best in maintaining three types of compatibilities between two sequential versions of SSLR (e.g. between 1.17 and 1.18, but not between 1.16 and 1.18):

Also note that we don't provide any guarantee about compatibility with unreleased version. If you use snapshot version, then you do it on own risk.

We can't guarantee that your code can be compiled or linked with new version of SSLR and will behave exactly as before upgrade in following situations:

We try to keep and maintain deprecated code as long as possible, but generally it can be removed in a next release after one, when it was marked as deprecated. That's why highly recommended to not jump over two versions at once, but perform upgrades in several steps - by one version per step. And such step should include removal of uses of deprecated code. Thus recommended to do an upgrade as soon as new version is available. Recommended way to do one step is:

  1. Recompile your code with next version of SSLR. If it can't be compiled, then don't hesitate to inform us about this.
  2. Check notes on release and upgrade about existence of behavioral incompatibilities (see below). If any, then you should fix them by following instructions in notes. Good coverage of your code by unit tests is highly recommended (SonarQube can help you to enforce this), so you will be able to perform tests to verify that it behaves exactly as before upgrade. If not, then don't hesitate to ask help.
  3. Remove uses of deprecated code by following instructions from Javadocs (SonarQube can help you to find such code). And don't forget to execute tests to verify that regressions were not introduced by such changes.

Sincerely yours, SonarSource Language Team.

Upgrade Notes

SSLR 1.19.1

SSLR 1.18

SSLR 1.17

SSLR 1.16

SSLR 1.15

SSLR 1.14