4

最近的一个问题“ Ruby 1.9.2 发生了什么? ”让我想知道 MRI Ruby 的版本号是什么意思。

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

版本控制在 MRI Ruby 中是如何工作的,major (1)、minor (9)、teeny (3) 和 patchlevel (448) 值是什么意思ruby 1.9.3p448?比如增加patchlevel允许什么样的变化,增加teeny允许什么样的变化?

4

2 回答 2

5

(这里的术语与经典的semver.org不同,其中 2.0.0 由以下部分组成MAJOR.MINOR.PATCH: ruby​​ 方案,如version.h或所示test_gem.rb,更接近 V2.0.0pxxx,如MAJOR.MINOR.TEENY.PATCHLEVEL

  • 如Ruby2.0.0 Change Logs所示,Major 似乎保留用于语言更改。
  • 从 1.9 版本(2007 年 12 月)的文章来看,Minor 过去的含义与今天不同:

以前,带有奇数次要版本号的 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的情况一样)

于 2013-07-18T05:56:57.657 回答
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)
于 2014-03-01T13:49:06.283 回答