Tilde and caret version constraints in Composer
When installing a dependency, we are used to installing a version that adheres to a known public interface and does what it promises. That way we can safely use it in our code. A dependency that uses semantic versioning allows you to predict whether it is still going to work...