2

我很好奇 ruby​​ 和 ror 版本的命名依据是什么。例如,在 ruby​​ 1.9.3 之后,它的版本是 2.0 而不是 1.10 或 1.9.4,在 rails 中也是如此。必须有一些约定或规则。

4

2 回答 2

5

Ruby 和 Rails 与许多其他项目一样遵循Semantic Versioning

不过,他们并不总是信守承诺。例如,Ruby 1.9 与 Ruby 1.8 向后不兼容,而 Ruby 2.0 大部分与 Ruby 1.9 兼容,所以 Ruby 1.9 应该是 Ruby 2.0,而 Ruby 2.0 应该是 Ruby 2.1。

在这种特殊情况下,有历史上的“营销”原因:“Ruby 2.0”这个词在 Ruby 社区中已经使用了 10 多年,用来标记具有特定的、经常被谈论的特性的特定“神话”版本,例如范围猴子补丁和特征。发布一个没有这些功能但仍将其称为“2.0”的版本会比违反语义版本控制规则更令人困惑。(实际上,Ruby 2.0发布时没有特征,导致了混乱!)

OTOH,不可能将其称为“1.10”,因为RUBY_VERSION常量将版本返回为 a String,并且许多工具(错误地)执行类似的操作

if RUBY_VERSION <= '1.8'
  def foo
  end
end

这会破坏,因为String '1.10'实际上小于.String '1.8'

因此,决定选择 1.9。

于 2013-04-18T10:32:20.777 回答
1

我认为 Ruby 和 Rails 或多或少遵循语义版本控制,大致意思是如果版本是 XYZ,则在修复错误时更改 Z。如果您添加某些内容,请更改 Y(因此所有依赖于它的程序,可以说我至少需要版本 XY),如果您引入向后不兼容,则更改 X)。X、Y 和 Z 通常称为 Major、Minor 和 revision。

于 2013-04-18T10:34:03.190 回答