| <div class="wiki-content maincontent"> |
| |
| <p><em>This is a DRAFT proposal and has not been adopted as official policy by this project.</em></p> |
| |
| <p>In order to facilitate the correct use of libtool and the preparation of binary packages for distribution on Debian, Red Hat, etc, it is beneficial to have a written policy on version numbers.</p> |
| |
| <h3>Product version number</h3> |
| |
| <p>These numbers represent the release of the product. E.g. 2.1.2</p> |
| |
| <p>For the ActiveMQ-CPP project, the numbers have the format MAJOR.MINOR.REVISION, and the following meanings:</p> |
| |
| <ul><li>MAJOR: a change in the MAJOR number is necessary for anything that changes binary compatibility (e.g. changing a function prototype or class definition), or when major internal changes occur</li><li>MINOR: a change in the MINOR number is necessary whenever new functionality is added without breaking binary compatibility (e.g. adding a new class), or when anything other than very minor internal changes occur</li><li>REVISION: a change in the REVISION number is made for any other type of change that does not justify a change to MINOR or MAJOR</li></ul> |
| |
| |
| <p>Further to the above, it is envisaged that a user who has a packaging system (such as Debian):</p> |
| <ul><li>may choose to have more than one major version installed on the same system concurrently (e.g. 2.1.2 and 3.4.5)</li><li>may only have one variation of each major version installed (e.g. it is not intended to have 2.1.2 and 2.3.0 concurrently)</li></ul> |
| |
| |
| <h3>libtool ABI version number</h3> |
| |
| <p>This number represents an ABI version. It is an integer, e.g., the number 5.</p> |
| |
| <p>The ABI version number does not need to be the same as the product version number.</p> |
| |
| <p>An increment in the libtool version number is mandatory when one of the following occurs:</p> |
| <ul><li>any new structs, classes or function prototypes are added</li><li>the definition of any structs, classes or function prototypes are modified</li><li>any structs, classes or function prototypes are removed</li></ul> |
| |
| |
| <p>Note that in the first case above, binary compatibility with existing applications is maintained. In the second and third case, binary compatibility is lost, and the libtool `age' variable must also be changed.</p> |
| </div> |
| |