我最近玩过IronRuby,但我也想安装参考实现。毋庸置疑,当涉及到Ruby时,我就是一个菜鸟,所以我有一个非常愚蠢的问题。
在RubyForge download page上,有三个不同的最终版本的Ruby安装程序(适用于Windows):
我不明白如何有三种不同的最终版本。我可以理解有一个1.8版本和一个1.9版本,但为什么我可以在1.8.6和1.8.7之间进行选择?
我真正想知道的是什么版本是“最好的”?如果答案是“1.9.1”,为什么选择1.8.6或1.8.7?
我很困惑......
答案 0 :(得分:7)
最终安装程序的3个不同版本背后的原因基于以下标准:
1.8.6是生产服务器中使用最广泛的版本,因此发布了与这些案例兼容的版本
1.8.7是Ruby-Core定义的更新的稳定标准,并且很可能会受到Ruby开发人员对1.8分支的关注
1.9.1是Ruby的新版本,基于一个名为YARV的新虚拟机。这个分支(1.9)是Ruby-Core开发人员大部分时间关注的分支。
包的原因是,能够满足3种不同类型的用户。其中一个试图模仿生产环境,一个以1.8工作开始,一个使用更新的功能。
还有1.9.2-preview3,这是候选版本之一,其新功能将于8月发布。
希望有所帮助。
-
答案 1 :(得分:4)
1.9.1是最新版本的ruby,而不是“最好的”。通常,bleading-edge版本包含与先前版本的不兼容性以及新功能。这使得较新版本不向后兼容旧版本。最重要的是,如果您计划运行基于这些版本编写的代码,那么您需要“旧”版本。
此外,一个版本,通常是较旧版本,非正式地被认为是“稳定”和“便携式”版本。在ruby的情况下,我相信它是1.8.7版本。检查这个问题的好方法是查看最新版本的linux或os x作为预安装的ruby版本。
这些只是您在选择要安装的版本时需要考虑的一些因素。请注意,您可以在同一个框中拥有多个版本的ruby。这样做的一个不错的工具是rvm。
答案 2 :(得分:4)
我不明白如何有三种不同的最终版本。
没有三个不同的最终版本,只有一个:在这种情况下,“final”表示安装程序的版本,而不是解释器。两个解释器的所有三个版本只有一个安装程序。
我可以理解有一个1.8版本和一个1.9版本,但为什么我可以在1.8.6和1.8.7之间进行选择?
在Ruby中,次要数字的变化表示显着的向后兼容性和/或主要的新语言功能。 1.8→1.9过渡具有不兼容性和新功能。虽然Ruby 1.9是当前版本,但仍然有很多代码,还没有更新到Ruby 1.9。此外,许多操作系统尚未提供Ruby 1.9作为默认值,有些操作系统根本不提供Ruby 1.9。
这就是为什么同时存在1.9和1.8。
为什么两个版本的1.8?那么,1.8.7就是这种奇怪的颠覆。 1.8.7从1.9中获得了大量的功能后退,以简化过渡。但是,很长一段时间内,1.8.7没有得到很多人的认可,而且6.5.6仍然是Rails团队推荐的版本。 (这将随着Rails 3而变化,需要1.8.7或尚未发布的1.9.2。)
Ruby 1.8.6仍然是许多提供3年或5年支持合同的更缓慢移动的Linux发行版的默认(实际上只是)版本。 Ruby 1.8.6也是OneClick Installer的最新版本,它是RubyInstaller的前身。如果要将RubyInstaller替换为OneClick安装程序,它必须提供相同的版本。最后但并非最不重要的是,只有一个 ton 的代码在1.8.6上经过测试和验证。
此外,Ruby 1.8.6是由JRuby 1.0,1.1,1.2,1.3和1.4实现的版本。只有最近发布的JRuby 1.5升级到1.8.7。 JRuby 1.6将实现1.8.7和1.9.2。此外,IronRuby 1.0实现了Ruby 1.8.6。
换句话说:用于MRI 1.8.6的RubyInstaller仍然出于同样的原因,微软仍然支持Windows XP,在试图杀死它之后两次:有人使用它会让他们真的很不高兴如果他们没有吨。
我真正想知道的是什么版本是“最好的”?如果答案是“1.9.1”,为什么选择1.8.6或1.8.7?
就个人而言,我认为“最好的”是Ruby 1.9。 2 ,尚未发布。
这是我的个人细分:
请注意,您必须非常小心地区分语言的版本,实现,实现的版本以及的版本安装程序
例如,列表中的第一个是语言的1.8.6版本,MRI解释器,MRI版本1.8.6-p398和安装程序版本“Final”。您列表中的第三个是该语言的1.9.1版本, YARV 编译器/ VM(即来自其他两个的不同的实现),版本1.9.1-p378 YARV以及安装程序的“Final”版本。
IronRuby的1.0版本实现了Ruby的1.8.6版本,JRuby的1.5版本实现了版本1.8.7和Ruby的1.9.2(的一部分),可以通过命令行开关选择。