n abuse that only fosters misunderstanding of the purpose of library versions. Instead, use the '-release' flag (*note Release numbers::), but be warned that every release of your package will not be binary compatible with any other release. The following explanation may help to understand the above rules a bit better: consider that there are three possible kinds of reactions from users of your library to changes in a shared library: 1. Programs using the previous version may use the new version as drop-in replacement, and programs using the new version can also work with the previous one. In other words, no recompiling nor relinking is needed. In this case, bump REVISION only, don't touch CURRENT nor AGE. 2. Programs using the previous version may use the new version as drop-in replacement, but programs using the new version may use APIs not present in the previous one. In other words, a program linking against the new version may fail with "unresolved symbols" if linking against the old version at runtime: set REVISION to 0, bump CURRENT and AGE. 3. Programs may need to be changed, recompiled, and relinked in order to use the new version. Bump CURRENT, set REVISION and AGE to 0. In the above description, _programs_ using the library in question may also be replaced by other libraries using it.