版本号如何适用于MRI Ruby?
最近的一个问题,“ Ruby 1.9.2发生了什么? ”让我对MRI Ruby的版本号感到疑惑。
MRI Ruby使用的方案与semver.org的方案不同。
版本控制如何在MRI Ruby中工作,主要(1),次要(9),少数(3)和ruby 1.9.3p448
(448)值在ruby 1.9.3p448
意味着什么? 例如,补丁级别的增加允许进行哪些更改,以及在少量增加时允许哪种更改?
从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)
(这里的术语与经典的semver.org不同,其中2.0.0由MAJOR.MINOR.PATCH
组成:ruby方案,如version.h
或test_gem.rb
,更多是V2.0.0pxxx,与MAJOR.MINOR.TEENY.PATCHLEVEL
)
- 如Ruby2.0.0更改日志所示,Major似乎保留用于语言更改。
- 从1.9版本 (2007年12月)的文章来看,未成年人的意义与今天不同:
以前,具有奇数次要版本号的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 )增加了新function
-
patchlevel更多关于内部版本号,添加内部修复,安全修复,将ruby版本提升到“生产级别”(就像1.9.2-p290的情况一样 )