1、MAJOR
- MAJOR表示當前APR的主版本號,它的變化通常意味著APR的巨大的變化,比如體系結構的重新設計,API的重新設計等等,而且這種變化通常會導致APR版本的向前不兼容。
2、MINOR - MINOR稱之為APR的次版本號,它通常只反映了一些較大的更改,比如APR的API的增加等等,但是這些更改并不影響與舊版本源代碼和二進制代碼之間的兼容性。
3、PATCH - PATCH通常稱之為補丁版本,通常情況下如果只是對APR函數的修改而不影響API接口的話都會導致PATCH的變化。目前為止APR的最高版本是1.2.2,最早遵循這種規則的版本號是0.9.0,不過在0.9.0之前,APR還推出了兩個版本a8和a9。
不過有一點需要注意的是,我們后面描述的版本規則并不適合1.0.0以前的版本。對于1.0.0以前的版本(0.x.y),APR提供的API是可以任意的改變而沒有任何的限制,因此這些版本的變化不遵循后面描述的版本規則。從1.0.0以后的所有版本都遵循。切記。除非主版本號發生變化,否則如果某個應用程序使用了低版本的APR,那么如果將該版本用高版本的APR替代,應用程序必須能夠無錯誤的編譯通過,通常我們稱之為前向兼容行;反之很明顯,如果應用程序中使用了高版本的APR,那么如果將該版本用低版本的APR替代,則未必能夠編譯通過,通常我們稱之為后向不兼容。APR的發展中力圖總是保持與舊版本的源代碼和二進制版本之間的兼容性。通過源代碼兼容,應用程序就可以在使用新版本的APR進行編譯的時候不會報錯,這樣應用程序就不需要為了適應新的APR而做出調整,從而保持應用開發的一致性和持續性。除非APR的主版本號發生變更。這種兼容性反之則不成立。如果一個應用程序使用較高的MINOR版本開發,那么很明顯,如果將該版本替換為MINOR相對較低的版本進行編譯,則成功的可能性應該不是很大。除了源代碼方面的兼容性,APR還希望能夠保持二進制之間的兼容性。通過保持二進制兼容,應用程序可以直接使用高版本的APR庫(或者是DLL,或者使so文件)替換低版本的庫文件,而不需要做任何修改,就可以鏈接成功。與源代碼兼容一樣,二進制的兼容也是向前兼容,而不保證向后兼容。