最近的一个问题“What happened with Ruby 1.9.2?”让我对MRI Ruby的版本号感到疑惑。
MRI Ruby使用的方案与semver.org的方案不同。
版本控制在MRI Ruby中是如何工作的,ruby 1.9.3p448
中的主要(1),次要(9),少数(3)和补丁级别(448)值是什么意思?例如,补丁级别的增加允许进行哪些更改,以及在少量增加时允许哪种更改?
答案 0 :(得分:5)
(这里的术语与经典semver.org不同,其中2.0.0由MAJOR.MINOR.PATCH
组成:如version.h
或test_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)