User Tools

Site Tools


library-release-numbering

Release numbering for the ROHC library

This page explains the meaning of the release numbers of the ROHC library. It also describes the different code branches and the way compatibility is handled between them.

Meaning of release numbers

Versions of the ROHC library are represented by 3 numbers X.Y.Z where:

  • X is the “API” number,
  • Y is the “feature” number,
  • Z is the “bugfix” number.

The “API” number is increased only if the public API changes in an incompatible way. Adding/removing a new public function is accepted. Modifying the way a function works without changing its prototype is however not accepted because it makes upgrade from previous versions complicated.

The “feature” number is increased if:

  • the public API changes in a compatible way (adding a function is accepted, removing one is not),
  • the internal API changes in a compatible or incompatible way (adding/removing a profile callback is accepted),
  • a new feature is added to the library (new compression scheme, new compression profile…),
  • the format of generated ROHC packets changes (for better conformity with ROHC standards).

If your application links dynamically with the ROHC library and you are not interested by the new functions added to the public API, no rebuild of your application is required. However you have to change some of your code and rebuild it to use the new functions available.

The “bugfix” number is increased if only bugs are fixed in the library. Bugfixes that change format of ROHC packets or the compressor/decompressor behaviour in an incompatible way can not be integrated into “bugfix” releases. If your application links dynamically with the ROHC library, no rebuild of your application is required.

Current releases

Since the project's beginning, the “API” number only changed once, from 1 to 2 to reflect the deprecation of some functions of the public API.

The “feature” number was increased 11 times: there are versions 1.0.x, 1.1.x, 1.2.x, 1.3.x, 1.4.x, 1.5.x, 1.6.x, 1.7.x, 2.0.x, 2.1.x and 2.2.x. The 1.0.x to 2.0.x branches are deprecated and should not be used. The 2.1.x and 2.2.x branches are maintained at the moment.

The “bugfix” number was increased several times:

  • never for the 1.0.x branch (only version 1.0.0 was published),
  • never for the 1.1.x branch (only version 1.1.0 was published),
  • three times for the 1.2.x branch (versions 1.2.0, 1.2.1, 1.2.2 and 1.2.3 were published),
  • three times for the 1.3.x branch (versions 1.3.0, 1.3.1, 1.3.2 and 1.3.3 were published),
  • three times for the 1.4.x branch (versions 1.4.0, 1.4.1, 1.4.2 and 1.4.3 were published),
  • three times for the 1.5.x branch (versions 1.5.0, 1.5.1, 1.5.2 and 1.5.3 were published),
  • once for the 1.6.x branch (versions 1.6.0 and 1.6.1 were published),
  • zero for the 1.7.x branch (only version 1.7.0 was published so far),
  • zero for the 2.0.x branch (only version 2.0.0 was published so far),
  • zero for the 2.1.x branch (only version 2.1.0 was published so far),
  • zero for the 2.2.x branch (only version 2.2.0 was published so far).

Compatibility between releases

Full compatibility is ensured between all the 1.A.x versions (with A = { 2, 3, 4, 5, 6, 7 }). However compatibility between one 1.A.x version and one 1.B.x is not ensured and such usage is strongly discouraged. It means that:

  • a compressor in 1.A.x version works with a decompressor in any 1.A.x version,
  • a compressor in 1.B.x version works with a decompressor in any 1.B.x version,
  • a compressor in 1.A.x version may not work with a decompressor in 1.B.x version.

One notable exception is the 1.6.x and 1.7.x releases. The 1.7.x may run in compatibility mode to match the behavior of the 1.6.x releases. The feature ROHC_COMP_FEATURE_COMPAT_1_6_x and/or ROHC_DECOMP_FEATURE_COMPAT_1_6_x shall be enabled.

Information about version compatibility is given in every changelog since the 1.2.2 and 1.3.0 releases.

All the bugs found in one 1.A.x version are corrected in the next 1.B.x version. However all the bugs found in one 1.A.x version are not corrected in the next 1.A.(x+1) version. Some bugs are not corrected (and will never be) in the 1.A.x versions because the corrections would change the format of some ROHC packets or the compressor/decompressor behaviour. Compatibility between all 1.A.x releases must be preserved, so the correction is not applied. The bugs that are not corrected are listed in the README or README.md files and/or on the Launchpad release pages.

library-release-numbering.txt · Last modified: 2018/04/25 18:35 by didier