Compare two semver-ish strings. Returns 1 if a is newer than b, -1 if
older, 0 if equal or unparseable. Only the numeric major.minor.patch core
drives the result; a build with a pre-release tag (e.g. 1.2.0-rc1) ranks
below the same core without one. An unparseable component yields 0 so a
malformed tag can never masquerade as an available update.
Compare two semver-ish strings. Returns 1 if
ais newer thanb, -1 if older, 0 if equal or unparseable. Only the numericmajor.minor.patchcore drives the result; a build with a pre-release tag (e.g. 1.2.0-rc1) ranks below the same core without one. An unparseable component yields 0 so a malformed tag can never masquerade as an available update.