The topic of versioning software is as old as software engineering and still a topic of discussion in some projects. The definition of Semantic Versioning was provided out of the need to define some clear rules on how to version software and its dependencies. A copy of the Semantic Version pamphlet can be found as a copy, too.
PureSol Technolgies' Versioning library provides functionality to handle and manage versions as defined by Semantic Versioning. It can be used for transporting version information within software to deal with migrations, dependencies and plugins.