Versioning your shard
The first thing you need to do before you can deploy a project is create a new release. As you learned in Chapter 8, Using External Libraries, it is strongly suggested that all Crystal shards, especially libraries, follow semantic versioning (https://semver.org) to make dependencies more maintainable by allowing reproducible installs and an expectation of stability.
Because of this, any non-backward compatible change in the public API must result in a new major version of the shard. An example of this could be renaming a method, removing a method, altering the name of a method parameter, and so on. However, code can be deprecated as part of a minor release with the indication that it will be altered/removed in the next major version.
Crystal provides the https://crystal-lang.org/api/Deprecated.html annotation, which can be used to produce deprecation warnings when applied to methods or types. In some cases, a program may need to support multiple major versions...