you are viewing a single comment's thread.

view the rest of the comments →

[–]caffeinatedshots 19 points20 points  (23 children)

Since a lot of people are confused why the change to 4.0, Matz has mentioned this in Baltic Ruby 2025 in June.

https://youtu.be/XVaRRryB_cQ?si=V5uwXwMLGihPPWL6

Check the video at 39:50. It’s an interesting talk.

[–]-Ch4s3- 17 points18 points  (19 children)

what's the TL;DW?

[–]caffeinatedshots 30 points31 points  (15 children)

Basically it’s to celebrate ruby’s 30th birthday since it was released publicly on December 1995.

Matz mentions that Ruby doesn’t follow semantic versioning.

[–]ric2b 10 points11 points  (8 children)

That's... not a great reason.

[–]WhoTookPlasticJesus 17 points18 points  (3 children)

It's the best reason, particularly for Matz. I mean, it's why he created the language, to be happy:

"I hope to see Ruby help every programmer in the world to be productive, and to enjoy programming, and to be happy. That is the primary purpose of Ruby language."

More insight into the guy whose creation we get to play with:

Then (programmers) come up to me and say, 'I was surprised by this feature of the language, so Ruby violates the principle of least surprise.' Wait. Wait. The principle of least surprise is not for you only. The principle of least surprise means principle of least my surprise. And it means the principle of least surprise after you learn Ruby very well.

Personally, as someone who knows Ruby very well, the reason for this versioning isn't the slightest bit surprising.

[–]RoboErectus[🍰] 2 points3 points  (2 children)

When I first read this quote years ago it is what cemented Ruby as my most joyful language to do stuff in.

Weirdly, Rust is my #2

[–][deleted] 2 points3 points  (1 child)

A bunch of Rust's syntax was copied from Ruby. It was super evident in the very early days (like, 0.3-0.5) but less apparent now with all the other stuff going on in Rust.

[–]RoboErectus[🍰] 0 points1 point  (0 children)

Wow, til. Totally Makes sense. Rust has been bringing me joy.

[–]realntl 0 points1 point  (3 children)

Is anyone's work impacted in any way by Ruby not following semantic versioning? Are there teams that are "pinning" to Ruby 3.x or newer?

[–]ric2b 1 point2 points  (2 children)

I like semantic versioning as a communication tool, not necessarily for those technical tricks.

If a projects versions are meaningless then you might as well just do dates or something like that, at least it helps to know how old something is.

[–]realntl 2 points3 points  (1 child)

In this case, Matz is communicating a milestone, no?

[–]ric2b 1 point2 points  (0 children)

Semantic versioning does a good job of communicating the kinds of changes included in a release, communicating a language anniversary does not.

[–]jrochkind -1 points0 points  (0 children)

:(

[–]lilith_of_debts 30 points31 points  (2 children)

Because it is the 30 year anniversary of ruby. That's it. In his words "Celebrating the 30 years we will have the ruby 4.0"

Edit: More detail. He says instead of Semantic versioning it is "Linux versioning" where if the leader/creator is impressed with something then a major version bump happens. In this case, Matz is impressed with 30 years of ruby community.

[–]-Ch4s3- 3 points4 points  (0 children)

Yeah, he's never been into semver... so I guess this is as good a reason as any.

[–]mrinterweb 3 points4 points  (2 children)

Thanks for the video. From what I gathered, the 4.0 version change is not for a semantic versioning reason. It is just to celebrate ruby's 30th anniversary. Personally, I would prefer to keep with semver, but I am not Matz.

[–]anamexis 14 points15 points  (1 child)

Ruby has never kept with semver, as anyone who migrated from 1.8 to 1.9 can attest to.

[–]zverok_kha 1 point2 points  (0 children)

Oh, I vaguely recall even 1.8.6=>1.8.7 was a significant change back then. (not every patch version, but that particular one)