Difference between ROHC 1.3 and 1.2

Asked by Michelle on 2010-06-08


I noticed that there are 2 version of ROHC code. May I know the major difference between these 2 codes?
Thank you.


Question information

English Edit question
rohc Edit question
No assignee Edit question
Last query:
Last reply:

This question was reopened

Hi Michelle,

Excellent question. I will try to explain below the way versions are handled for the ROHC library.

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 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.

Since the project's beginning, the "API" number never changed, it is 1 at the moment. The "feature" number was increased three times: there are versions 1.0.x, 1.1.x, 1.2.x and 1.3.x. The 1.0.x and 1.1.x branches are deprecated and should not be used. Only the 1.2.x and 1.3.x branches are maintained at the moment. It is recommanded to use the 1.3.x versions. When the 1.4.0 release will be published, the 1.2.x versions will be considered as deprecated and only the 1.3.x and 1.4.x branches will be maintained. Maintaining more than 2 branches is too much work :(

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), twice for the 1.2.x branch (versions 1.2.0, 1.2.1 and 1.2.2 were published so far) and once for the 1.3.x branch (versions 1.3.0 and 1.3.1were published so far).

Full compatibility is ensured between all the 1.2.x versions. Full compatibility is ensured between all the 1.3.x versions. It means that a compressor in 1.2.0 version works with a decompressor in 1.2.1 or 1.2.2 version. A compressor in 1.3.0 version works with a decompressor in 1.3.1 version. However compatibility between one 1.2.x version and one 1.3.x is not ensured and such usage is strongly discouraged. 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.2.x version are corrected in the next 1.3.x version. However all the bugs found in one 1.2.x version are not corrected in the next 1.2.x version. Some bugs are not corrected (and will never be) in the 1.2.x versions because the corrections would change the format of some ROHC packets or the compressor/decompressor behaviour. Compatibility between all 1.2.x releases must be preserved, so the correction is not applied. The bugs that are not corrected are listed in the README file of the 1.2.x versions. See http://bazaar.launchpad.net/~didier-barvaux/rohc/1.2.x/annotate/head:/README#L62. I will do the same of the 1.3.x versions if a bug that can not be fixed in the 1.3.x versions is found.

Beside bug corrections, the 1.3.0 release added some small improvements in the build system and in the tunnel application. See the changelog of the 1.3.0 version for more details: http://bazaar.launchpad.net/~didier-barvaux/rohc/1.3.x/annotate/head:/ChangeLog#L34.

The development of the library for the next 1.4.0 release is done the "trunk" branch (also called "main" sometimes). Release 1.4.0 will bring some cleaning in public headers (way too many private headers are installed on system while they should not and way too many private functions are declared in the public headers) and maybe some new features. There is no release timeline for the moment.

I hope that I answered your question :)

Didier Barvaux

I created a new FAQ entry with all the above informations. See FAQ 1164.

Can you help with this problem?

Provide an answer of your own, or ask Michelle for more information if necessary.

To post a message you must log in.