Jakub Neruda<p>Tip 89 of <a href="https://techhub.social/tags/TuesdayCodingTips" class="mention hashtag" rel="tag">#<span>TuesdayCodingTips</span></a> - Semantic versioning</p><p>When creating a library, semantic versioning is a really useful versioning scheme to use.</p><p>It's a promise to your users that changes bumping the minor/patch version numbers are backward-compatible. As such, much of the software relies on these numbers to figure out whether a particular version requirement can be satisfied by higher-version binaries.</p><p>For example, Unix SONAME links provide a stable way to (typically) reference a major version of a library, while the pointed-to file can be updated to newer revisions.</p><p>If you only specify the major (or major.minor) version number, CMake Find* scripts will find the newest compatible package. Various wildcards in cargo, npm, and other package managers follow the same principles.</p><p>Just be sure to read the full FAQ at <a href="http://semver.org" target="_blank" rel="nofollow noopener" translate="no"><span class="invisible">http://</span><span class="">semver.org</span><span class="invisible"></span></a> and know that adhering to this versioning scheme is hard, but your users will love you for it... (1/2)</p><p><a href="https://techhub.social/tags/tips" class="mention hashtag" rel="tag">#<span>tips</span></a> <a href="https://techhub.social/tags/programming" class="mention hashtag" rel="tag">#<span>programming</span></a> <a href="https://techhub.social/tags/semver" class="mention hashtag" rel="tag">#<span>semver</span></a></p>