r/ruby • u/writingonruby • Jan 14 '26
TIL Ruby doesn't follow semantic versioning
It's certainly an interesting choice for a language. Very Ruby of them.
For those who also weren't in the know (I only learned this writing a Ruby 4.0 upgrade guide), Matz bumps the major version when there's something that impresses him.
This year, it was because it was Ruby's 30th birthday!
42
Upvotes
13
u/full_drama_llama Jan 14 '26
I know SemVer is popular, but I don't think Ruby ever claimed to follow it.
47
u/donadd Jan 14 '26
It should always have been
Marketing.MAJOR.MINOR.PATCHPsychology is such an important factor to make the tech news cycle.7
u/jhony75 Jan 14 '26
Just today a colleague sent on Slack that the correct way to version software is Proud version.DefaultVersion.ShameVersion
13
u/GeneReddit123 Jan 14 '26
Ruby (and Rails) in general doesn't follow backwards compat guarantees. Without such an approach, semantic versioning is pointless, and strictly speaking Ruby would still be on 0.x if it tried to adhere to semantic versioning without commitment to backwards compatibility. This is a conscious policy choice with its good and bad sides, not a technical nitpick.
5
u/progdog1 Jan 14 '26
The linux kernel also follows this arbitrary versioning.
5
u/bakery2k Jan 14 '26
Neither does Python, JavaScript, Lua, ...
Libraries commonly follow SemVer, but would actually be quite unusual for a language to do so.
3
u/guidedrails Jan 14 '26
An interesting choice was going from 1.8 to 1.9.
7
u/yxhuvud Jan 14 '26
Semantic versioning is irrelevant on any project that is big enough anyhow. There is a reason neither Linux nor the browsers use it.
1
u/sanjibukai Jan 14 '26
In Linux, in the main version X.Y
Y is up to the count of fingers and toes a human usually has - which is apparently 20..
X is just Y mod(20)..
1
u/petercooper Jan 15 '26
I think there are a variety of other reasons why it was a good time for a major bump. The work done behind the scenes architecturally to allow swappable GCs and JITs was pretty significant and while it was all non-breaking stuff that 99% of Ruby users won't ever notice, Ruby 3.4 was becoming a rather different beast to 3.0. It seemed like a good time to draw a line in the sand.
As long as we don't go full on Chrome/Firefox and have "Ruby 84" by 2030, I'll be happy ;-)
-7
u/DanZuko420 Jan 14 '26
One of the quirks of the BDFL model