版本号如何适用于MRI Ruby?

时间:2013-07-17 23:16:28

标签: ruby versioning

最近的一个问题“What happened with Ruby 1.9.2?”让我对MRI Ruby的版本号感到疑惑。

MRI Ruby使用的方案与semver.org的方案不同。

版本控制在MRI Ruby中是如何工作的,ruby 1.9.3p448中的主要(1),次要(9),少数(3)和补丁级别(448)值是什么意思?例如,补丁级别的增加允许进行哪些更改,以及在少量增加时允许哪种更改?

2 个答案:

答案 0 :(得分:5)

(这里的术语与经典semver.org不同,其中2.0.0由MAJOR.MINOR.PATCH组成:如version.htest_gem.rb所示,ruby方案更多V2.0.0pxxx,如MAJOR.MINOR.TEENY.PATCHLEVEL

  

以前,具有奇数次要版本号的Ruby的版本号表示实验版本。所以Ruby 1.7是实验性的,而Ruby 1.8是一个生产版本   Ruby核心团队改变了这一点,因此随着Ruby 1.9.0的出现,Ruby 1.9不再被认为是实验性的,尽管可能需要一段时间才能实现生产使用

今天,次要版本包含语义差异

  

另一方面,Ruby 1.9并不完全向后兼容Ruby 1.8。一些语义已经改变。例如,块参数现在是块的本地,并且块语义有细微的变化。这些变化意味着许多现有的Ruby程序需要一些转换才能利用Ruby 1.9。

  • teeny(如1.9.2)添加了新功能

  • 补丁级别更多的是关于内部版本号,添加内部修复程序,安全修复程序,将红宝石版本提升到"生产级别" (就像1.9.2-p290

  • 的情况一样

答案 1 :(得分:1)

从Ruby 2.1.0开始,他们已经改为准语义版本。有关详细信息,请参阅https://www.ruby-lang.org/en/news/2013/12/21/semantic-versioning-after-2-1-0/,但版本号现在具有以下含义:

MAJOR: increased when incompatible change which can’t be released in MINOR
    Reserved for special events
MINOR: increased every christmas, may be API incompatible
TEENY: security or bug fix which maintains API compatibility
    May be increased more than 10 (such as 2.1.11), and will be released every 2-3 months.
PATCH: number of commits since last MINOR release (will be reset at 0 when releasing MINOR)