Hacker News new | ask | show | jobs
by coldtea 942 days ago
Comparable as what?

3.10 and 3.9 are perfectly mechanically comparable (meaning one can write a program to deterministically compare them and return their relative order), just not with default numeric ordering (then again they're not numbers, they are composite values that are comprised by numbers) or naive string based ordering.

If we wanted trivially comparable with regular numeric ordering we could have incremental numbers as versions. 1, 2, 3, ...

And if we wanted string ordering (as with usual filesystem listing sorting with no extra flags to treat as numbers), we could have fixed length padded parts: 00001.00045.

Not sure if the latter is used, but some software does use the first.

1 comments

Or I could just accept that neither numeric, nor string ordering works for semantic versioning, and write a trivially easy piece of code that does the ordering in a contect where I expect such a scheme.

> If we wanted trivially comparable with regular numeric ordering we could have incremental numbers as versions. 1, 2, 3, ...

Yes, and then we would be back to the day when the version number gave me zero information about what changed, and how that affects compatibility with existing code.

There is a reason semver is used across the industry by now.

>Or I could just accept that neither numeric, nor string ordering works for semantic versioning, and write a trivially easy piece of code that does the ordering in a contect where I expect such a scheme.

Hence the whole "3.10 and 3.9 are perfectly mechanically comparable (meaning one can write a program to deterministically compare them and return their relative order)" part in my comment you perhaps missed.

>Yes, and then we would be back to the day when the version number gave me zero information about what changed, and how that affects compatibility with existing code.

Not that it's any better now with semver though: in practice the semver works 95% of the time, and give just a false sense of comfort at the other 5%. You update, and things still break, despite the semver promise.

> part in my comment you perhaps missed.

I didn't miss any part of your comment. The line you quote was as a reaction to the alternatives presented immediately after that part.

Because why would I sacrifice the advantages of semver for a minor convenience to the programmer of a sorting function?

> in practice the semver works 95% of the time

Which, based on nothing but my gut feeling, is a lot better than the 30% of the time any other versioning scheme works, where the only way to be reasonably sure that an update would not break my code was to diff the library (if the thing is open source), or read all the documentation, and pray to Zeus that it's complete and accurate.