【发布时间】:2013-12-26 01:18:28
【问题描述】:
在 Ruby Core 中,已经为 Ruby 2.1 提出了一种用于冻结字符串的新文字符号 "foo"f,但 now 人们担心以这种语法编写的代码无法被 Ruby 2.0 解析。为什么这是个问题? Ruby 不是只尝试向后兼容吗?也就是说,如果用 Ruby 2.0 编写的代码可以被 Ruby 2.1 解释器解析,那还不够吗?为什么用 Ruby 2.1 编写的代码必须能够被 Ruby 2.0 解释器解析?
【问题讨论】:
-
@muistooshort:首先:该语法在 2.0 中是非法的,因此它不是一个重大更改。为 2.0 编写的所有代码在 2.1 中仍然有效。其次,即使它是重大更改,像 2.1 这样的新的主要版本正是应该发生。
-
@muistooshort:我认为您对 Ruby 版本控制政策感到困惑。 Ruby 有一个由 4 部分组成的版本号:W.X.Y-pZ。 Z 是一个补丁版本,只允许修正错误。 Y 是次要版本,允许向后兼容的新功能。 X 是一个主要版本,向后兼容性可能会被破坏。 W 是一个划时代的版本,为 Ruby 语言历史上具有里程碑意义的里程碑保留:0.x → 1.x 是第一个生产就绪版本,1.x → 2.x 是 Ruby 20 周年。 2.0 → 2.1 是一个主要版本,因此,允许进行重大更改……但这甚至不是重大更改!
-
@muistooshort:没有代码可能会被此更改破坏,因为该语法是非法。时期。所以,即使这个 是 次要版本(它不是,2.0.1 将是次要版本),它仍然 没问题,因为它是 不是重大更改,因为没有代码可以中断。
标签: ruby literals ruby-2.0 string-literals ruby-2.1