最近的一个问题," Ruby 1.9.2发生了什么? ",让我对MRI Ruby的版本号感到疑惑.
MRI Ruby使用的方案与semver.org的方案不同.
如何在MRI Ruby中进行版本控制,主要(1),次要(9),少数(3)和补丁级别(448)值的含义是ruby 1.9.3p448
什么?例如,在增加补丁级别时允许进行哪些更改,以及在增加少量时允许哪种更改?
(这里的术语与经典的semver.org不同,其中2.0.0由以下组成MAJOR.MINOR.PATCH
:ruby方案,如version.h
或所示test_gem.rb
,更像是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)增加了新功能
patchlevel更多关于内部版本号,添加内部修复,安全修复,将ruby版本提升到"生产级别"(就像1.9.2-p290的情况一样)