ruby 2.7 及更早版本的代码与 ruby​​ 3.0.1 兼容吗?

Abd*_*rah 6 ruby upgrade backwards-compatibility

我很难决定是否在 ruby​​ 3.0.1 和 ruby​​ 2.7 中构建新的 ruby​​ gem。使用 >=3.0.0 版本编写的 ruby​​ 代码是否向后兼容 >=2.5 或 >=2.7 版本?使用 ruby​​ 2.7 工作的人可以使用使用 >=3.0.1 编写的 gem,同样,使用 >=3.0.1 工作的人可以使用使用 ruby​​ 2.7 编写的 gem 吗?3.0.1 中是否有任何重大更改导致从 2.7 升级变得困难?

Jar*_*eck 2

\n

使用 >=3.0.0 版本编写的 ruby​​ 代码是否向后兼容 >=2.5 或 >=2.7 版本?

\n
\n

不,例如:

\n
\n

自 2.7 以来的其他显着变化。关键字参数与其他参数分开。原则上,在 Ruby 2.7 上打印警告的代码不会\xe2\x80\x99 工作。

\n

https://www.ruby-lang.org/en/news/2020/12/25/ruby-3-0-0-released/

\n
\n

但是,可以使用与 2.5 到 3.0 兼容的 Ruby子集编写库。例如,PaperTrail 的目标就是做到这一点。

\n
# https://github.com/paper-trail-gem/paper_trail/blob/master/.github/workflows/test.yml#L66\nruby: [ \'2.5\', \'2.7\', \'3.0\' ]\n
Run Code Online (Sandbox Code Playgroud)\n