I don’t understand how there can be three different final releases.
There are not three different final releases, there is only one: "final" in this case means the installer version, not the interpreter. For all three versions of both interpreters, there is only one installer.
I can understand that there is one release 1.8 and one release 1.9, but why can I choose between 1.8.6 and 1.8.7?
In Ruby, a minor change indicates a significant backwardness-incompatibility and / or major new features of the language. The transition 1.8 → 1.9 has both incompatibilities and new features. Although Ruby 1.9 is the current version, there is still a lot of code that has not yet been updated to Ruby 1.9. In addition, many operating systems still do not ship Ruby 1.9 by default, and some do not ship Ruby 1.9 at all.
That is why there are both 1.9 and 1.8.
Why two versions 1.8? Well, 1,8,7 is a strange imposition. 1.8.7 received a massive supply of functions from 1.9 to facilitate the transition. Over time, however, 1.8.7 has not received much approval, and 1.8.6 is still the recommended version of the Rails team. (This will change with Rails 3, which requires 1.8.7 or not yet released 1.9.2.)
Ruby 1.8.6 is still the standard (and actually only) version for many of the slower moving Linux distributions that offer three-year or 5-year support contracts. Ruby 1.8.6 was also the latest version of the OneClick installer, which was the predecessor of RubyInstaller. If RubyInstaller is a replacement for the OneClick installer, it should offer the same version. And last but not least, there is just a ton of code that has been tested and verified on 1.8.6.
In addition, Ruby 1.8.6 was the version implemented by JRuby 1.0, 1.1, 1.2, 1.3, and 1.4. Only recently released JRuby 1.5 rose to 1.8.7. JRuby 1.6 will implement both 1.8.7 and 1.9.2. In addition, IronRuby 1.0 implements Ruby 1.8.6.
In other words: RubyInstaller for MRI 1.8.6 still exists for the same reason that Microsoft still supports Windows XP, after trying to kill it twice: there are people who use it, who would really be upset, etc.
What would I really like to know which version is the “best”? If the answer is "1.9.1", why choose 1.8.6 or 1.8.7?
Personally, I think the “best” is Ruby 1.9. 2 , which has not yet been released.
Here is my personal reason:
- if you are just starting with Ruby and playing with it, 1.9.2 is the best version: Ruby 1.9 is the latest version of the language, and 1.9.2 is considered a fully functional version of the 1.9 branch; it fixes some bugs and annoyances in 1.9.1 and adds some nice features. In addition, most Ruby implementations do not implement 1.9.1, IronRuby will go straight from 1.8.6 to 1.9.2, JRuby will implement both 1.8.7 and 1.9.2, and Rubinius will also go to 1.9.2.
- If you really want to deploy and / or distribute Ruby applications, versions 1.9.1 and 1.8.7 are the best versions, simply because 1.9.2 is not officially released: use 1.9.1 if you can leave with it (i.e. if third-party libraries depend on its support), otherwise 1.8.7.
- If you have a large legacy code base, use 1.8.6. (In fact, if you have a large outdated codebase, upgrade it to 1.9.2 & hellip;)
Please note that you must be very careful to distinguish between language version, implementation, implementation version, and installer version.
For example, the first on your list is the language version 1.8.6, the MRI interpreter, the version 1.8.6-p398 MRI, and the "Final" version of the installer. The third on the list is language version 1.9.1, the YARV / VM compiler (that is, another implementation of the other two), version 1.9.1-p378 from YARV, and the version of the "Final" installer.
Version 1.0 IronRuby implements version 1.8.6 Ruby, version 1.5 JRuby implements both version 1.8.7 and (a subset) 1.9.2 Ruby, which can be selected using the command line.