Introducing fully-semantic version searching for packages; via the UI, API, CLI and entitlement tokens.
With semantic versions, Cloudsmith understands the difference between versions, in terms of how a version is represented. For example, we know that 10.2.0 is MAJOR version 10, MINOR version 2 and PATCH version 0 and that 10.2.0 is a higher version than 9.3.1.
Leveraging this, you can now use relational operators, such as > (greater-than), >= (greater-than or equal-to), < (less-than), and <= (less-than or equal-to), when searching for versions. Combined with our boolean search, that means more power than ever before to find the packages you need.
We've also introduced the popular "pessimistic operator", as ~=, which allows you to search for versions that are greater-than or equal-to a specific version, up to versions that are less than the next incompatible level. E.g. version:~=1.2.0 will allow versions between 1.2.0 up to 1.3.0.
This might be most interesting to vendors, who want to sell licenses for a particular version-line of their product and allow customers only access to that range. E.g. For customer purchases a "1.x" edition, that wouldn't give access to "2.x" or beyond. The vendor would use version:~=1.0 as their entitlement restriction.
Tip: If you have any unexpected issues with the semantic version search, you can go back to string-based searching by including globs (*) in your expression, or by using ^ to match the start of the version or $ to match the end of the version. E.g. version:^1.0.0$ will match 1.0.0 exactly, by string-based matching.
Sound awesome? Let us know what you think!