On Sat, 02 Sep 2017 22:57:12 +0200, Alan McKinnon wrote:

> OK, so disclaimer up front. I detest Ruby. I hate it with a passion.

Personally I find that passion is better reserved for positive things.

> You have to understand what Ruby is. It is not a language. It is 5
> languages. Like python27 and python3 are really different languages with
> much in common. The difference is the python devs have solid reasons for
> doing python3 and the transition has been mostly smooth. Each new minor
> version of ruby is a whole new language and the devs are OK with large
> breaking changes between minor version numbers.

I'm not sure this is fully fair to both ruby and python. Yes, there are 
incompatibilities between ruby versions, sometimes even large ones (1.8 
to 1.9 certainly had them), but recent versions haven't seen major 
changes and for the most part all ruby code in the gentoo repository 
works with all versions. To say that the python3 transition has been 
smooth probably doesn't do justice to the slow uptake.

> So why 3 rubys? Because they are 3 languages and you have packages that
> for whatever reason are tied to different rubys. Just pretend to
> yourself that they aren't really ruby22, ruby23 and ruby24 - they are
> php, perl and python (or whatever 3 language names you like that help
> you get past the 3 rubys! thing).

The situation with ruby really isn't different from python or perl at 
all. We also have multiple python versions in the tree just like with 
ruby. perl is not slotted but faces the same issues on each version (e.g. 
the "no . in INC path anymore" issue that made ruby 1.8 to 1.9 such a big 
deal).

> You probably need all 3. As housekeeping, you can put this in make.conf:
> RUBY_TARGETS="ruby22",
> and remove all ruby versions from world and let depclean, revdep-rebuild
> and emerge world take care of the details.

I find it very unlikely that you would *need* all three versions, unless 
you are doing ruby development and want to actively use all three. The 
RUBY_TARGETS="ruby22" advice matches the current default in the profile.

Until recently we had four different ruby versions, so we are already 
improving here. The end goal is to only have the two latest versions in 
the tree.

Hans


Reply via email to